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 Auth.js and Ory
- 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
- Ory project or self-hosted Ory deployment
- 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:
- Configure an Ory OAuth2 client for the dashboard callback URL:
/api/auth/oauth/callback/ory. - Populate
.env.localwith the Ory and Auth.js variables from.env.example. - Enable the upstream identity providers you want in Ory (GitHub, Google, email/password, etc.).
- Ensure the Ory access-token audience matches the backend JWT audience setting.
# 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, env 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.
Feature flags are evaluated server-side with LaunchDarkly via OpenFeature and hydrated into the dashboard client. To add a flag:
- Create it in LaunchDarkly
stagingandproductionwith the same key. - Add it to
src/core/modules/feature-flags/definitions.tswith a safe default value. - Use
featureFlags.isEnabled(...)on the server oruseFeatureFlag(...)inside dashboard client components. - Target users or teams in LaunchDarkly using the
userandteamcontexts.
Set LAUNCHDARKLY_SDK_KEY for environments that should use LaunchDarkly. The SDK key determines the LaunchDarkly environment.
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.ts.
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.
