# Bee Dashboard

[![](https://img.shields.io/badge/made%20by-Swarm-blue.svg?style=flat-square)](https://swarm.ethereum.org/)
[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fethersphere%2Fbee-dashboard.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fethersphere%2Fbee-dashboard?ref=badge_shield)
![](https://img.shields.io/badge/pnpm-%3E%3D10.0.0-orange.svg?style=flat-square)
![](https://img.shields.io/badge/Node.js-%3E%3D14.0.0-orange.svg?style=flat-square)

> An app which helps users to setup their Bee node and do actions like cash out cheques, upload and download files or
> manage your postage stamps.

**Warning: This project is in alpha state. There might (and most probably will) be changes in the future to its API and
working. Also, no guarantees can be made about its stability, efficiency, and security at this stage.**

Stay up to date by joining the [official Discord](https://discord.gg/GU22h2utj6) and by keeping an eye on the
[releases tab](https://github.com/ethersphere/bee-dashboard/releases).

![Status page](/docs/ui_samples/info.png)

| Node Setup                                | Upload Files                                | Download Content                                | Accounting                                     | Settings                                   | File Manager                                       |
| ----------------------------------------- | ------------------------------------------- | ----------------------------------------------- | ---------------------------------------------- | ------------------------------------------ | -------------------------------------------------- |
| ![Setup](/docs/ui_samples/node_setup.png) | ![Upload](/docs/ui_samples/file_upload.png) | ![Download](/docs/ui_samples/file_download.png) | ![Accounting](/docs/ui_samples/accounting.png) | ![Settings](/docs/ui_samples/settings.png) | ![File Manager](/docs/ui_samples/file_manager.png) |

## Table of Contents

- [Install](#install)
- [Usage](#usage)
  - [Terminal](#terminal)
  - [Docker](#docker)
- [Contribute](#contribute)
- [Development](#development)
- [File Manager](#file-manager)
- [Maintainers](#maintainers)
- [License](#license)

## Install

Install globally with pnpm. We require Node.js's version of at least 24.x and pnpm v10.x, npm v11.x.

```sh
pnpm add -g @ethersphere/bee-dashboard
```

For the latest stable version, always use the official npm registry.

## Usage

:warning: To successfully connect to the Bee node, you will need to enable CORS. You can do so by setting
`cors-allowed-origins: ['*']` in the Bee config file and then restart the Bee node. To see where the config file is,
consult the
[official Bee documentation](https://docs.ethswarm.org/docs/working-with-bee/configuration#configuring-bee-installed-using-a-package-manager)

### Terminal

To start use:

```sh
bee-dashboard
```

This should open the webpage on [`http://localhost:8080`](http://localhost:8080)

You can also define your own port with the `PORT` environment variable. E.g.

```sh
export PORT=3005
bee-dashboard
```

Will start the bee-dashboard on [`http://localhost:3005`](http://localhost:3005)

### Docker

To build Docker image and run it, execute the following from inside project directory:

```sh
docker build . -t bee-dashboard
docker run --rm -p 127.0.0.1:8080:8080 bee-dashboard
```

Alternatively, use Docker Compose:

```sh
docker compose up
```

Bee dashboard is now available on [`http://localhost:8080`](http://localhost:8080)

### Development

```sh
git clone git@github.com:ethersphere/bee-dashboard.git

cd  bee-dashboard

pnpm install

pnpm run init:husky

pnpm start
```

The Bee Dashboard runs in development mode on [http://localhost:3031/](http://localhost:3031/)

#### Environmental variables

The CRA supports to specify "environmental variables" during build time which are then hardcoded into the served static
files. We support following variables:

- `VITE_BEE_DESKTOP_ENABLED` (`boolean`) that toggles if the Dashboard is in Desktop mode or not.
- `VITE_BEE_DESKTOP_URL` (`string`) defines custom URL where the Desktop API is expected. By default, it is same origin
  under which the Dashboard is served.
- `VITE_BEE_HOST` (`string`) defines custom Bee API URL to be used as default one. By default, the
  `http://localhost:1633` is used.
- `VITE_DEFAULT_RPC_URL` (`string`) defines the default RPC provider URL. Be aware, that his only configures the default
  value. The user can override this in Settings, which is then persisted in local store and has priority over the value
  set in this env. variable. By default `https://xdai.fairdatasociety.org` is used.
- `VITE_FORMBRICKS_ENV_ID` and `VITE_FORMBRICKS_APP_URL` (`string`) configures the [Formbricks](https://formbricks.com/)
  integration for user feedback collection. If these variables are not set, the feedback form is not available in the
  app.

#### Swarm Desktop development

If you want to develop Bee Dashboard in the Swarm Desktop mode, then spin up `swarm-desktop` to the point where Desktop
is initialized (eq. the splash screen disappear) and:

```sh
echo "VITE_BEE_DESKTOP_URL=http://localhost:3054
VITE_BEE_DESKTOP_ENABLED=true" > .env.development.local

pnpm start
pnpm run desktop # This will inject the API key to the Dashboard
```

## File Manager

The File Manager module provides intuitive decentralized file storage and management.

For comprehensive documentation, see the [File Manager Documentation](./docs/FILE_MANAGER.md).

### Features

- Create and manage multiple drives with configurable capacity and lifetime
- Upload, download, and organize files with version control
- Manage postage stamps required for file uploads
- Configure erasure coding levels for data redundancy

## Contribute

There are some ways you can make this module better:

- Consult our [open issues](https://github.com/ethersphere/bee-dashboard/issues) and take on one of them
- Help our tests reach 100% coverage!
- Join us in our [Discord chat](https://discord.gg/wdghaQsGq5) in the #develop-on-swarm channel if you have questions or
  want to give feedback

## Maintainers

- [Cafe137](https://github.com/Cafe137)

See what "Maintainer" means [here](https://github.com/ethersphere/repo-maintainer).

## License

[BSD-3-Clause](./LICENSE)

[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fethersphere%2Fbee-dashboard.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fethersphere%2Fbee-dashboard?ref=badge_large)
