A web dashboard I built with Next.js and Tailwind CSS so I can check on several EVE Online characters without alt-tabbing between clients.
Note
Unofficial Fan Project Callout: Clone Bay is an unofficial, community-created open-source fan project. It is not affiliated with, endorsed by, or sponsored by CCP Games. All EVE Online assets and intellectual property belong to CCP hf. See the Legal Notice below.
Managing multiple EVE Online accounts requires constant alt-tabbing or cycling client logins just to check routine timers, expiring skill queues, extractors, and jobs. Existing tools are often legacy desktop utilities or complex, self-hosted corporate web applications requiring dedicated servers and database infrastructure.
Clone Bay shows a read-only overview of all your characters on one page: skill queues, industry jobs, PI extractors and other timers. It reads this from ESI, so you don't need to be logged in to the game.
- Multi-Character EVE SSO: Log in each character with OAuth 2.0 PKCE. No client secret is stored or needed.
- Traffic Light Dashboard: Green, Yellow, and Red status per character for skill queues, jobs, and alerts.
- Timers:
- Skill Queues: Training progress, completion times, and empty queue warnings.
- Planetary Interaction (PI): Extractor cycle tracking and program expiration alerts.
- Industry Jobs: Manufacturing, research, and invention job states and completion countdowns.
- Character Overview: Jump fatigue, clone locations, current ship and location, wallet balance, notifications, and structure status.
- No Backend: Runs as a static Single Page Application (SPA) in your browser.
Clone Bay has no backend:
- No Project Backend or Database: Clone Bay has no central servers, no user accounts, and no database.
- Direct-to-CCP Requests: All authentication and game data queries are made directly from your browser to CCP Games' official endpoints:
https://login.eveonline.com: EVE SSO authentication and token refresh.https://esi.evetech.net: EVE Swagger Interface (ESI) game data.https://images.evetech.net: Character portraits and ship rendering.
- Client-Side Storage:
eve_auth_tokens(IndexedDB): Access and refresh tokens are stored locally on your machine in IndexedDB. Tokens are stored in plain JSON and protected by the browser's Same-Origin Policy (no application-level encryption).- ESI Response Cache (IndexedDB): Cached API responses keyed by the full request URL (
https://esi.evetech.net/...) to respect CCP cache headers. - Name & SDE Cache (IndexedDB): Entity names (
eve_name_cache) and Static Data Export definitions (sde_type_*,sde_system_*). - Local UI Preferences (localStorage): User settings (
clonebay-settings), dashboard state (clonebay-storage), character config (eve-character-config-storage), and diagnostics (eve-log-store). - Ephemeral PKCE Parameters (sessionStorage):
oauth_stateandcode_verifierare purged immediately upon login completion or failure.
- Content Security Policy: Because tokens are readable by any script running on the page, the CSP is the main defence against injected scripts. It is sent as an HTTP header (no
'unsafe-eval', no'unsafe-inline'for scripts).npm run buildrunsscripts/csp-hashes.mjs, which hashes each inline Next.js bootstrap script and writes per-route CSP rules intoout/_headers. - Wipe Button: A wipe button in the UI (
/trustand/settings) clears stored tokens, localStorage, and session state. - Zero Telemetry: No Google Analytics, Sentry, or tracking scripts are included. No tracking cookies are used.
For full details, review our Privacy Policy and Security Policy.
- Node.js: v20 or higher recommended (v18+ compatible)
- npm: v9 or higher
git clone https://github.com/TerribleTurtle/clonebay.git
cd clonebay
npm installTo use EVE SSO locally, register an application on CCP's developer portal:
- Visit developers.eveonline.com and log in.
- Click Create Application.
- Set Name (e.g.
Clone Bay Local Dev). - Set Connection Type:
Authentication & API Access. - Set Callback URL:
http://localhost:3006/auth/callback. - Enable PKCE (no
client_secretis generated or needed). - Select the following 15 OAuth Scopes:
esi-skills.read_skillqueue.v1esi-skills.read_skills.v1esi-industry.read_character_jobs.v1esi-planets.manage_planets.v1esi-wallet.read_character_wallet.v1esi-location.read_location.v1esi-clones.read_clones.v1esi-characters.read_fatigue.v1esi-location.read_ship_type.v1esi-mail.read_mail.v1esi-contracts.read_character_contracts.v1esi-markets.read_character_orders.v1esi-characters.read_notifications.v1esi-characters.read_corporation_roles.v1esi-corporations.read_structures.v1
- Save the application and copy your Client ID.
Copy the example configuration file:
cp .env.example .envOpen .env and set your Client ID:
NEXT_PUBLIC_EVE_CLIENT_ID=your_client_id_here(Optional) If you use a non-default callback URL, set NEXT_PUBLIC_EVE_CALLBACK_URL.
npm run devOpen http://localhost:3006 in your browser.
Clone Bay enforces strict architectural standards, TypeScript type-checking, and mock fixture validation:
| Command | Description |
|---|---|
npm run verify |
Runs the full preflight suite (type-check, verify-mocks, lint, test:core, deps:check) |
npm run type-check |
TypeScript compiler check without emitting output (tsc --noEmit) |
npm run lint |
ESLint verification with strict architectural boundary rules |
npm run test:core |
Runs unit and core logic test suite via Vitest (vitest run) |
npm run verify-mocks |
Validates all mock test fixtures against strict Zod schemas |
npm run deps:check |
Verifies architectural module boundaries via Dependency Cruiser |
Before opening a pull request, ensure npm run verify passes with exit code 0. See CONTRIBUTING.md for contribution guidelines.
Clone Bay is built as a static Single Page Application (output: 'export'):
-
Build Static Export:
npm run build
Static HTML, CSS, and JS assets are emitted into the
out/directory. -
Deploy to Cloudflare Pages: The production deployment is hosted on Cloudflare Pages. Cloudflare serves static assets globally at the edge without requiring a Node.js server.
npm run deploy:prod
The production deployment is live at https://clonebay.terribleturtles.dev. During the transition period, the legacy
clonebay.appdomain displays a migration notice prompting users to migrate and clean up old browser data before the legacy domain is retired.
Clone Bay is licensed under the MIT License.
Copyright (c) 2026 TerribleTurtles
EVE Online and the EVE logo are the registered trademarks of CCP hf. All rights are reserved worldwide. All other trademarks are the property of their respective owners. EVE Online, the EVE logo, EVE and all associated logos and designs are the intellectual property of CCP hf. All artwork, screenshots, characters, vehicles, storylines, world facts or other recognizable features of the intellectual property relating to these trademarks are likewise the intellectual property of CCP hf. CCP hf. has granted permission to Clone Bay to use EVE Online and all associated logos and designs for promotional and information purposes on its website but does not endorse, and is not in any way affiliated with, Clone Bay. CCP is in no way responsible for the content on or functioning of this website, nor can it be liable for any damage arising from the use of this website.