{"id":44509240,"url":"https://github.com/ekilie/beamdrop","last_synced_at":"2026-05-17T19:07:44.038Z","repository":{"id":328536725,"uuid":"1111643376","full_name":"ekilie/beamdrop","owner":"ekilie","description":"Turn any VPS or server into a private, self-hosted Google Drive + S3 in seconds.","archived":false,"fork":false,"pushed_at":"2026-05-12T12:42:17.000Z","size":90976,"stargazers_count":7,"open_issues_count":16,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-12T14:34:52.363Z","etag":null,"topics":["beamdrop","beamdrop-cloud","file-server","s3","s3-compatible","s3-storage","selfhosted"],"latest_commit_sha":null,"homepage":"https://docs.beamdrop.cloud/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekilie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-07T11:12:58.000Z","updated_at":"2026-05-12T12:41:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ekilie/beamdrop","commit_stats":null,"previous_names":["ekilie/beamdrop"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/ekilie/beamdrop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekilie%2Fbeamdrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekilie%2Fbeamdrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekilie%2Fbeamdrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekilie%2Fbeamdrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekilie","download_url":"https://codeload.github.com/ekilie/beamdrop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekilie%2Fbeamdrop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33151626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beamdrop","beamdrop-cloud","file-server","s3","s3-compatible","s3-storage","selfhosted"],"created_at":"2026-02-13T13:10:12.465Z","updated_at":"2026-05-17T19:07:44.032Z","avatar_url":"https://github.com/ekilie.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BeamDrop\n\n**Your private Google Drive + S3, ready in 10 seconds.**\n\nTurn any server or VPS into secure, self-hosted file storage with:\n\n- Web UI for humans\n- S3-compatible API for apps\n- Shareable links \u0026 real-time stats\n\nNo cloud vendor. No complex setup. One command to start.\n\n![BeamDrop Preview](docs/beamdrop.jpeg)\n\n## Quick Start\n\n```bash\n# Share current directory instantly\nbeamdrop\n\n# Access via browser: http://localhost:7777\n# Scan QR code from your phone to upload files\n```\n\n```bash\n# Share a specific directory with password protection\nbeamdrop -dir /path/to/share -p mysecretpassword\n\n# Enable S3-compatible API\nbeamdrop -dir /path/to/share -api-auth\n\n# With HTTPS\nbeamdrop -dir /path/to/share -api-auth -tls-cert cert.pem -tls-key key.pem\n```\n\n## Why BeamDrop?\n\n- **Tired of paying for cloud storage?** Run your own S3-compatible server.\n- **Need easy file sharing?** Drag, drop, share links — optionally password-protected.\n- **Want something developers love?** Works with existing S3 libraries \u0026 APIs.\n- **Need a single tool for teams?** Web UI + API + real-time stats in one binary.\n- **Worried about security \u0026 vendor lock-in?** Your server, your data, full control.\n\n## Key Features\n\n- **Web UI + File Browser:** Drag, drop, rename, move, and organize files.\n- **S3-Compatible API:** Works with existing AWS SDKs and scripts.\n- **Official Go client:** In-repo SDK for signed bucket, object, and presigned URL operations.\n- **Shareable Links:** Optional password and expiry.\n- **Single Binary:** Runs anywhere, zero dependencies.\n- **Secure \u0026 Production-Ready:** TLS, rate limiting, structured logging.\n\n## Architecture\n\n![Beamdrop System Architecture](docs/beamdrop-arch.png)\n\n## All Features\n\n- **Web-based file manager** — modern React UI with drag-and-drop upload, search, and file operations (move, copy, rename, mkdir)\n- **S3-compatible API** — buckets, objects, presigned URLs, HMAC-SHA256 auth\n- **Shareable links** — generate unique URLs with optional password protection and expiry\n- **Real-time stats** — live storage metrics via WebSocket\n- **Single binary** — zero dependencies, runs on Linux, macOS, and Windows\n- **Docker-ready** — ~39 MB image, non-root, health checks included\n- QR code generation for easy mobile access\n- Cross-platform support\n- **Security features**:\n  - HTTPS/TLS support for encrypted connections\n  - Configurable CORS with strict defaults (disabled by default)\n  - Security headers (HSTS, CSP, X-Frame-Options, Permissions-Policy, etc.)\n  - HTTP method restrictions on all endpoints\n  - **Per-IP rate limiting** with tiered enforcement (general, auth, upload)\n  - **CSRF protection** via double-submit cookie pattern\n  - **JWT token revocation** on logout with automatic cleanup\n  - **AES-256-GCM encryption** for API key secrets at rest\n  - **bcrypt password hashing** for shareable link passwords\n  - **Cookie-only JWT storage** (no localStorage) with `HttpOnly` + `SameSite=Strict`\n  - **Trusted proxy support** for accurate IP detection behind reverse proxies\n  - **CDN/proxy compatibility flags** — disable CSP and CSRF for deployments behind Cloudflare or similar proxies\n- **Structured logging**:\n  - Colored, human-readable terminal output\n  - Structured JSON log file at `\u003cdir\u003e/.beamdrop/beamdrop.log`\n  - Configurable log level\n- **Docker support**: Multi-stage Dockerfile with ~39 MB image, non-root user, health checks\n- **Health probes**: Kubernetes-compatible `/health/live`, `/health/ready`, `/health/startup` endpoints with component-level status\n- **Prometheus metrics**: `/metrics` endpoint with request counters, latency histograms, storage gauges, and a ready-to-import Grafana dashboard\n\n## Installation\n\n## Go Client\n\nBeamdrop now includes a first-party Go client in this repository:\n\n```go\nimport \"github.com/ekilie/beamdrop/pkg/client\"\n```\n\nMinimal example:\n\n```go\nctx := context.Background()\n\nsdk, err := client.New(client.Config{\n  BaseURL:     \"http://localhost:7777\",\n  AccessKeyID: \"BDK_your_access_key\",\n  SecretKey:   \"sk_your_secret_key\",\n})\nif err != nil {\n  log.Fatal(err)\n}\n\nif _, err := sdk.CreateBucketIfNotExists(ctx, \"uploads\"); err != nil {\n  log.Fatal(err)\n}\n\nif _, err := sdk.PutObject(ctx, \"uploads\", \"hello.txt\", []byte(\"hello beamdrop\")); err != nil {\n  log.Fatal(err)\n}\n\nobject, err := sdk.GetObject(ctx, \"uploads\", \"hello.txt\")\nif err != nil {\n  log.Fatal(err)\n}\n\nfmt.Println(string(object.Body))\n```\n\nCurrent client scope:\n\n- bucket operations\n- object upload, download, metadata, and delete\n- client-side presigned URL generation\n- server-side presigned URL management via `/api/v1/presign`\n\n### Quick Install (macOS \u0026 Linux)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/ekilie/beamdrop/main/docs/install.sh | sh\n```\n\nOr inspect the script first:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/ekilie/beamdrop/main/docs/install.sh -o install.sh\nless install.sh\nsh install.sh\n```\n\nOptions via environment variables:\n\n```bash\n# Install a specific version\nBEAMDROP_VERSION=v1.0.0 sh install.sh\n\n# Install to a custom directory\nBEAMDROP_INSTALL=~/.local/bin sh install.sh\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/ekilie/beamdrop.git\ncd beamdrop\nmake build\n```\n\n### macOS (Apple Silicon)\n\n```bash\ncurl -L https://github.com/ekilie/beamdrop/releases/latest/download/beamdrop-darwin-arm64.tar.gz -o beamdrop-darwin-arm64.tar.gz\nsudo tar -C /usr/local/bin -xzf beamdrop-darwin-arm64.tar.gz\nrm beamdrop-darwin-arm64.tar.gz\n```\n\n### macOS (Intel)\n\n```bash\ncurl -L https://github.com/ekilie/beamdrop/releases/latest/download/beamdrop-darwin-amd64.tar.gz -o beamdrop-darwin-amd64.tar.gz\nsudo tar -C /usr/local/bin -xzf beamdrop-darwin-amd64.tar.gz\nrm beamdrop-darwin-amd64.tar.gz\n```\n\n### Linux (amd64)\n\n```bash\ncurl -L https://github.com/ekilie/beamdrop/releases/latest/download/beamdrop-linux-amd64.tar.gz -o beamdrop-linux-amd64.tar.gz\nsudo tar -C /usr/local/bin -xzf beamdrop-linux-amd64.tar.gz\nrm beamdrop-linux-amd64.tar.gz\n```\n\n### Linux (arm64)\n\n```bash\ncurl -L https://github.com/ekilie/beamdrop/releases/latest/download/beamdrop-linux-arm64.tar.gz -o beamdrop-linux-arm64.tar.gz\nsudo tar -C /usr/local/bin -xzf beamdrop-linux-arm64.tar.gz\nrm beamdrop-linux-arm64.tar.gz\n```\n\n### Windows\n\nDownload the latest `.zip` from the [releases page](https://github.com/ekilie/beamdrop/releases), extract it, and add `beamdrop.exe` to your PATH.\n\n### Docker\n\n```bash\n# Build the image\ndocker build -t beamdrop .\n\n# Run with a persistent volume\ndocker run -d \\\n  --name beamdrop \\\n  -p 7777:7777 \\\n  -v beamdrop-data:/data \\\n  beamdrop\n\n# Run with all options\ndocker run -d \\\n  --name beamdrop \\\n  -p 7777:7777 \\\n  -v beamdrop-data:/data \\\n  -e BEAMDROP_PASSWORD=\"secret\" \\\n  -e BEAMDROP_API_AUTH=true \\\n  -e BEAMDROP_RATE_LIMIT=100 \\\n  -e BEAMDROP_MAX_STORAGE=10GB \\\n  beamdrop\n```\n\nThe image is ~39 MB, runs as non-root, and includes a `HEALTHCHECK` against `/health/live`.\n\n### Docker Compose (recommended)\n\nThe easiest way to run BeamDrop:\n\n```bash\n# Start in background\ndocker compose up -d\n\n# View logs\ndocker compose logs -f beamdrop\n\n# Stop\ndocker compose down\n```\n\nConfigure via environment variables create a `.env` file or export them:\n\n```bash\n# .env (optional)\nBEAMDROP_PORT=7777\nBEAMDROP_PASSWORD=your-secret-password\nBEAMDROP_LOG_LEVEL=info\nBEAMDROP_RATE_LIMIT=100\nBEAMDROP_MAX_STORAGE=0\nBEAMDROP_API_AUTH=true\nBEAMDROP_QR=false\nBEAMDROP_ALLOWED_ORIGINS=https://example.com\n```\n\n| Variable                   | Default  | Description                                                         |\n| -------------------------- | -------- | ------------------------------------------------------------------- |\n| `BEAMDROP_PORT`            | `7777`   | Port to listen on                                                   |\n| `BEAMDROP_PASSWORD`        | _(none)_ | Enable password authentication                                      |\n| `BEAMDROP_LOG_LEVEL`       | `info`   | Log level: `debug`, `info`, `warn`, `error`                         |\n| `BEAMDROP_RATE_LIMIT`      | `100`    | Requests/min per IP (`0` = disabled)                                |\n| `BEAMDROP_API_AUTH`        | _(off)_  | Set to `true` to enable S3 API key auth                             |\n| `BEAMDROP_QR`              | `false`  | Set to `true` to print startup QR code                              |\n| `BEAMDROP_ALLOWED_ORIGINS` | _(none)_ | Comma-separated CORS origins                                        |\n| `BEAMDROP_DB_PATH`         | _(none)_ | Path to DB file or directory (directory auto-appends `beamdrop.db`) |\n| `BEAMDROP_TLS_CERT`        | _(none)_ | Path to TLS certificate (inside container)                          |\n| `BEAMDROP_TLS_KEY`         | _(none)_ | Path to TLS private key (inside container)                          |\n\n**Development mode** (debug logging, rate limiting off):\n\n```bash\ndocker compose -f docker-compose.yml -f docker-compose.dev.yml up --build\n```\n\n**With Caddy reverse proxy** (automatic HTTPS):\n\n1. Uncomment the `caddy` service in `docker-compose.yml`\n2. Set your domain: `export BEAMDROP_DOMAIN=files.example.com`\n3. Run: `docker compose up -d`\n\nData is persisted in `./data/` on the host.\n\n### Prometheus \u0026 Grafana\n\nBeamdrop exposes a `/metrics` endpoint in Prometheus text format. Add it as a scrape target:\n\n```yaml\n# prometheus.yml\nscrape_configs:\n  - job_name: beamdrop\n    static_configs:\n      - targets: [\"localhost:7777\"]\n```\n\nA pre-built Grafana dashboard is available at [`docs/grafana-dashboard.json`](docs/grafana-dashboard.json). Import it via **Dashboards \u003e Import** in Grafana.\n\n**Exported metrics:**\n\n| Metric                              | Type      | Description                           |\n| ----------------------------------- | --------- | ------------------------------------- |\n| `beamdrop_requests_total`           | counter   | HTTP requests by method, path, status |\n| `beamdrop_request_duration_seconds` | histogram | Request latency (p50/p95/p99)         |\n| `beamdrop_auth_failures_total`      | counter   | Auth failures by reason               |\n| `beamdrop_uploads_total`            | counter   | Completed uploads                     |\n| `beamdrop_downloads_total`          | counter   | Completed downloads                   |\n| `beamdrop_upload_size_bytes`        | histogram | Upload file sizes                     |\n| `beamdrop_storage_bytes`            | gauge     | Bytes used by stored files            |\n| `beamdrop_objects_total`            | gauge     | Number of stored files                |\n| `beamdrop_active_connections`       | gauge     | In-flight HTTP requests               |\n| `beamdrop_storage_free_bytes`       | gauge     | Free disk space                       |\n| `beamdrop_storage_total_bytes`      | gauge     | Total disk capacity                   |\n| `beamdrop_goroutines_count`         | gauge     | Go goroutine count                    |\n\n## Configuration\n\n### Command Line Flags\n\n| Flag               | Description                                                               | Default                   |\n| ------------------ | ------------------------------------------------------------------------- | ------------------------- |\n| `-dir`             | Directory to share                                                        | Current directory         |\n| `-port`            | Server port                                                               | Auto-detect               |\n| `-p`               | Password for web authentication                                           | None                      |\n| `-api-auth`        | Enable API key authentication                                             | false                     |\n| `-tls-cert`        | Path to TLS certificate                                                   | None                      |\n| `-tls-key`         | Path to TLS private key                                                   | None                      |\n| `-allowed-origins` | CORS allowed origins (comma-separated)                                    | None                      |\n| `-db-path`         | Path to database file or directory (directory auto-appends `beamdrop.db`) | `~/.beamdrop/beamdrop.db` |\n| `-rate-limit`      | Rate limit in requests/min per IP (0 = disabled)                          | 100                       |\n| `-max-storage`     | Maximum total storage, e.g. 500MB, 10GB, 1TB (0 = unlimited)              | 0                         |\n| `-log-level`       | Log level: debug, info, warn, error                                       | info                      |\n| `-qr`              | Enable QR code display                                                    | false                     |\n| `-v`               | Show version                                                              | -                         |\n| `-h`               | Show help                                                                 | -                         |\n\n## API Usage\n\n### Creating an API Key\n\nVia the web interface:\n\n1. Navigate to API Keys in the sidebar\n2. Click \"Create New Key\"\n3. Save the secret key (shown only once)\n\nVia API:\n\n```bash\ncurl -X POST http://localhost:8080/api/v1/keys \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"My App\", \"expiresIn\": 2592000}'\n```\n\n### Authentication\n\nAll API requests require HMAC-SHA256 signed authentication:\n\n```bash\n# Generate signature\nTIMESTAMP=$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")\nSTRING_TO_SIGN=\"GET\\n/api/v1/buckets\\n${TIMESTAMP}\"\nSIGNATURE=$(echo -n \"$STRING_TO_SIGN\" | openssl dgst -sha256 -hmac \"$SECRET_KEY\" -binary | base64)\n\n# Make request\ncurl http://localhost:8080/api/v1/buckets \\\n  -H \"Authorization: Bearer ${ACCESS_KEY}:${SIGNATURE}\" \\\n  -H \"X-Beamdrop-Date: ${TIMESTAMP}\"\n```\n\n### Example Operations\n\n```bash\n# Create bucket\ncurl -X PUT http://localhost:8080/api/v1/buckets/my-bucket \\\n  -H \"Authorization: Bearer ${ACCESS_KEY}:${SIGNATURE}\" \\\n  -H \"X-Beamdrop-Date: ${TIMESTAMP}\"\n\n# Upload file\ncurl -X PUT http://localhost:8080/api/v1/buckets/my-bucket/path/to/file.txt \\\n  -H \"Authorization: Bearer ${ACCESS_KEY}:${SIGNATURE}\" \\\n  -H \"X-Beamdrop-Date: ${TIMESTAMP}\" \\\n  -H \"Content-Type: text/plain\" \\\n  -d \"Hello, World!\"\n\n# Download file\ncurl http://localhost:8080/api/v1/buckets/my-bucket/path/to/file.txt \\\n  -H \"Authorization: Bearer ${ACCESS_KEY}:${SIGNATURE}\" \\\n  -H \"X-Beamdrop-Date: ${TIMESTAMP}\"\n\n# List objects\ncurl \"http://localhost:8080/api/v1/buckets/my-bucket?list\u0026prefix=path/\" \\\n  -H \"Authorization: Bearer ${ACCESS_KEY}:${SIGNATURE}\" \\\n  -H \"X-Beamdrop-Date: ${TIMESTAMP}\"\n```\n\n## Documentation\n\n### For Operators\n\n- **[Operations Runbook](docs/OPERATIONS-RUNBOOK.md)** - Production deployment, backup, monitoring, scaling, and troubleshooting\n\n### For Developers\n\n- **[Developer Guide](docs/DEVELOPER-GUIDE.md)** - Comprehensive guide to the codebase structure and S3 API implementation\n- API Design: [docs/s3-api-design.md](docs/s3-api-design.md)\n- Security: [docs/SECURITY.md](docs/SECURITY.md)\n\n### API Documentation\n\n- OpenAPI Specification: [docs/openapi.yaml](docs/openapi.yaml)\n- Postman Collection: [docs/beamdrop-api.postman_collection.json](docs/beamdrop-api.postman_collection.json)\n- Postman Environment: [docs/beamdrop-api.postman_environment.json](docs/beamdrop-api.postman_environment.json)\n- Postman Guide: [docs/POSTMAN-GUIDE.md](docs/POSTMAN-GUIDE.md)\n\n## Storage Structure\n\n```\nshared-directory/\n├── buckets/              # API-managed storage\n│   ├── my-bucket/\n│   │   ├── images/\n│   │   │   └── photo.jpg\n│   │   └── data.json\n│   └── backups/\n│       └── db.sql\n├── .beamdrop/            # Logs\n│   └── beamdrop.log      # Structured JSON log file\n├── .beamdrop_data/       # Internal database\n└── .beamdrop_trash/      # Deleted files (recoverable)\n```\n\n## Shareable Links\n\nBeamdrop supports creating shareable links for files and folders, similar to Google Drive:\n\n### Creating a Shareable Link\n\n1. Navigate to the file browser\n2. Right-click on a file or folder and select \"Share Link\" from the context menu\n3. Configure optional settings:\n   - **Password**: Protect the link with a password\n   - **Expiry**: Set when the link should expire (in hours)\n4. Click \"Generate Link\" to create the shareable URL\n5. Copy the link and share it with others\n\n### Managing Shareable Links\n\n- View all active shareable links in the \"Shares\" section of the sidebar\n- See access statistics including view count\n- Delete links when they're no longer needed\n- Links are automatically removed after expiration\n\n### Security Considerations\n\n- Password-protected links require the correct password to access\n- Expired links are automatically rejected\n- Access to shareable links is tracked for monitoring\n- Links can be revoked at any time by deleting them\n- Public share links bypass authentication but can still be password-protected\n\n### API Endpoints\n\n- `POST /api/shares` - Create a new shareable link\n- `GET /api/shares/list` - List all shareable links\n- `DELETE /api/shares/delete?token=\u003ctoken\u003e` - Delete a shareable link\n- `GET /share/\u003ctoken\u003e` - Public access endpoint (no auth required)\n\n## Development\n\n### Prerequisites\n\n- Go 1.21+\n- Node.js 18+ (for frontend development)\n- Make\n\n### Building\n\n```bash\n# Build everything\nmake build\n\n# Build backend only\ngo build -o beamdrop ./cmd/beam\n\n# Build frontend\ncd static/frontend \u0026\u0026 bun install \u0026\u0026 bun run build\n```\n\n### Running in Development\n\n```bash\n# Backend with hot reload\nmake dev\n\n# Frontend dev server\ncd static/frontend \u0026\u0026 bun run dev\n```\n\n## Project Structure\n\n```\nbeamdrop/\n├── cmd/beam/           # CLI entry point\n├── beam/server/        # HTTP server and handlers\n├── config/             # Configuration\n├── pkg/\n│   ├── auth/           # Authentication\n│   ├── db/             # Database and models\n│   ├── errors/         # Structured error types\n│   ├── middleware/      # CORS, security headers, rate limiting\n│   ├── storage/        # Bucket/object storage\n│   ├── crypto/         # Signature utilities\n│   ├── logger/         # Dual-output structured logging\n│   └── ...\n├── static/frontend/    # React frontend\n└── docs/               # Documentation\n```\n\n## License\n\n[GNU Affero General Public License v3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekilie%2Fbeamdrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekilie%2Fbeamdrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekilie%2Fbeamdrop/lists"}