- π Documentation
- π¬ Discord Community
- π Issue Tracker
- π€ Contributing Guide
Our Dashboard is a modern, feature-rich web application built to manage and monitor E2B services. Built with Next.js 16 and React 19, it provides a seamless user experience for managing sandboxes, API keys, and usage analytics.
- Modern Stack: Built with Next.js 16, React 19, and TypeScript
- Real-time Analytics: Monitor your sandbox usage and performance
- Authentication: Secure authentication powered by Supabase
- Type Safety: Full TypeScript support throughout the codebase
Self-hosting Note: If you're planning to self-host this dashboard, you'll likely want to self-host our infrastructure first. Please refer to our infrastructure repository for guidance on setting up the E2B platform on your own infrastructure.
- Node.js 20.9+
- Git
- Vercel account
- Supabase account
- Clone the repository
git clone https://github.com/e2b-dev/dashboard.git
cd dashboard- Install dependencies
# Using Bun (recommended)
bun install
# Using npm
npm install --legacy-peer-deps- Environment Variables
# Copy the example env file
cp .env.example .env.local- Set up required services:
-
Create a new Supabase project
-
Go to Project Settings > API
-
Copy the
anon key&service_role keyto populate.env.local -
Configure authentication:
- Go to Authentication > URL Configuration
- Set Site URL to the hosting domain
- Add
http://localhost:3000/**to Redirect URLs (for development)
-
Enable auth providers:
- Go to Authentication > Providers
- Enable the providers you want to use (GitHub, Google, E-Mail)
- Configure each provider with the appropriate credentials
-
Configure e-mail templates:
- Navigate to Authentication β Templates in the Supabase dashboard
- Update the URLs in the Reset Password and Confirm Sign-Up templates so that the CTA links point back to the dashboard's confirmation endpoint:
Reset Password
{{ .SiteURL }}/api/auth/confirm?token_hash={{ .TokenHash }}&type=recovery&next={{ .RedirectTo }}&confirmation_url={{ .ConfirmationURL }}Confirm Sign-Up
{{ .SiteURL }}/api/auth/confirm?token_hash={{ .TokenHash }}&type=email&next={{ .RedirectTo }}&confirmation_url={{ .ConfirmationURL }}
- Go to Storage > Buckets
- Create a new public bucket named
profile-pictures
Redis/KV is optional for standard dashboard deployments, including local, enterprise, and on-prem environments. The dashboard can boot and run core auth and dashboard workflows without KV configured.
KV is currently used for optional capability checks and for deduplicating ZeroBounce alternate-email warnings. If you need those capabilities, configure a Vercel/Upstash Redis REST-compatible store:
KV_REST_API_URL=your_redis_rest_api_url
KV_REST_API_TOKEN=your_redis_api_write_token
Note:
@vercel/kvexpects a Redis REST API. A raw Redis server such asredis://localhost:6379is not compatible without an Upstash-compatible REST proxy.
Health check: When
KV_REST_API_URLandKV_REST_API_TOKENare set,/api/healthwill report503 degradedif KV is unreachable. Leave both unset to opt out of the KV health check entirely.
# Using Bun (recommended)
bun run dev
# Using npm
npm run devThe application will be available at http://localhost:3000
# Using Bun (recommended)
bun run dev # Start development server
bun run build # Create production build
bun run start # Start production server
bun run preview # Build and preview production
bun run lint # Run Biome linter
bun run lint:fix # Auto-fix Biome lint issues
bun run format # Format + organize imports with Biome
bun run check # Run full Biome check (lint + format + imports)
# All commands work with npm as well:
npm run dev
# etc...src/
βββ app/ # Next.js App Router pages and layouts
βββ configs/ # Global constants, feature flags, and URL maps
βββ core/ # Server-side logic: actions, adapters, modules, and shared clients
βββ features/ # Domain-specific components (auth, dashboard, billing, etc.)
βββ lib/ # Utility functions, hooks, and shared helpers
βββ styles/ # Global styles and Tailwind config
βββ trpc/ # tRPC client and server setup
βββ types/ # TypeScript type definitions
βββ ui/ # Reusable UI primitives and Shadcn components
tests/
βββ unit/ # Vitest unit tests
βββ integration/ # Vitest integration tests
βββ development/ # Vitest development helper tests
βββ preview/ # Playwright preview/user-flow tests
We use a layered testing strategy with Vitest and Playwright. For details on test types, commands, and conventions, see the Testing README.
See src/lib/env.ts for all required environment variables and their validation schemas.
This application is optimized for deployment on Vercel:
- Push your changes to GitHub
- Import your repository in Vercel
- Deploy!
Note: The application uses Partial Prerendering (PPR) which is currently only supported on Vercel's infrastructure. This can be turned off inside
next.config.mjs.
We welcome contributions! Please see our Contributing Guide for details.
If you need help or have questions:
- Check our Documentation
- Join our Discord Community
- Open an Issue
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.
Copyright 2025 FoundryLabs, Inc.

