A modern, self-hosted dashboard for managing multiple Supabase projects with Docker. Built with Next.js, TypeScript, and Tailwind CSS.
SupaConsole Dashboard - Manage multiple Supabase projects with ease
- π― Project Management: Create, configure, and manage multiple Supabase instances
- π³ Docker Integration: Automated Docker Compose deployment for each project
- βοΈ Environment Configuration: Web-based interface for configuring project environment variables
- π Service URLs: Quick access to all running services (Studio, API, Analytics, Database)
- ποΈ Safe Project Deletion: Complete cleanup with Docker container removal and file system cleanup
- π₯ Team Management: User authentication and team member management
- π§ Email Integration: Password reset and team invitation emails via SMTP
- π¨ Modern UI: Dark theme with responsive design using shadcn/ui components
- π Secure Authentication: Built-in user authentication with session management
- π Project Status Tracking: Monitor project status (active, paused, stopped)
- β‘ Unique Port Management: Automatic port allocation to prevent conflicts between projects
- Frontend: Next.js 15, TypeScript, Tailwind CSS, shadcn/ui
- Backend: Next.js API Routes, Prisma ORM
- Database: SQLite (easily configurable for PostgreSQL)
- Authentication: Custom JWT-based authentication
- Email: Nodemailer with SMTP support
- Containerization: Docker & Docker Compose
- Styling: Dark theme with custom color palette
- Node.js 18+
- Docker and Docker Compose
- Git
- SMTP email service (Gmail, SendGrid, etc.)
-
Clone the repository
git clone https://github.com/your-username/supaconsole.git cd supaconsole -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Edit
.envwith your configuration:# Database DATABASE_URL="file:./dev.db" # Authentication NEXTAUTH_SECRET="your-secret-key-here" NEXTAUTH_URL="http://localhost:3000" # SMTP Configuration SMTP_HOST="smtp.gmail.com" SMTP_PORT=587 SMTP_SECURE=false SMTP_USER="[email protected]" SMTP_PASS="your-app-password" # Supabase Core Repository SUPABASE_CORE_REPO_URL="git clone --depth 1 https://github.com/supabase/supabase" # Application APP_NAME="SupaConsole Dashboard" APP_URL="http://localhost:3000"
-
Set up the database
npm run db:push npm run db:generate
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
- Register an account at
/auth/register - Initialize the workspace by clicking the "Initialize" button on the dashboard
- This will:
- Create a
supabase-coredirectory with the Supabase repository - Create a
supabase-projectsdirectory for your projects
- Create a
- Click "New Project" on the dashboard
- Enter your project name and description
- Configure environment variables through the web interface
- The system will:
- Create a unique project directory
- Copy Docker files from
supabase-core - Generate environment configuration
- Run
docker compose pullanddocker compose up -d
- View Projects: All projects are displayed on the main dashboard with status indicators
- Project Management Modal: Click "Manage" on any project to access:
- Service URLs: Direct links to Supabase Studio, API Gateway, Analytics, and Database
- Configure: Quick access to environment variable configuration
- Safe Deletion: Complete project removal with confirmation and cleanup
- Environment Variables: Update configuration through the web interface
- Docker Operations: Automatic container management with unique naming and ports
- Real-time Status: Monitor project status (active, paused, stopped)
Each project runs in its own Docker container. As more projects are created, additional containers are started, which will consume CPU and memory resources accordingly.
For optimal performance, ensure your server has sufficient resources to support the number of projects you plan to run.
supaconsole/
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/ # API routes
β β βββ auth/ # Authentication pages
β β βββ dashboard/ # Dashboard pages
β βββ components/ # React components
β βββ lib/ # Utility functions
β β βββ auth.ts # Authentication utilities
β β βββ db.ts # Database connection
β β βββ email.ts # Email services
β β βββ project.ts # Project management
β βββ generated/ # Prisma client
βββ prisma/ # Database schema
βββ public/ # Static assets
βββ supabase-core/ # Cloned Supabase repository (created on init)
βββ supabase-projects/ # Individual project directories (created on init)
# Development
npm run dev # Start development server with Turbopack
npm run build # Build for production
npm run start # Start production server
# Database
npm run db:generate # Generate Prisma client
npm run db:push # Push schema changes to database
npm run db:studio # Open Prisma Studio
npm run db:reset # Reset database (β οΈ destructive)
# Code Quality
npm run lint # Run ESLint
npm run type-check # TypeScript type checking| Variable | Description | Example |
|---|---|---|
DATABASE_URL |
Database connection string | file:./dev.db |
NEXTAUTH_SECRET |
JWT secret key | your-secret-key |
SMTP_HOST |
SMTP server hostname | smtp.gmail.com |
SMTP_USER |
SMTP username | [email protected] |
SMTP_PASS |
SMTP password/app password | your-app-password |
SUPABASE_CORE_REPO_URL |
Supabase repo URL | https://github.com/supabase/supabase |
The application manages Docker containers for each Supabase project:
- Initialization: Clones Supabase repository to
supabase-core/ - Project Creation: Copies
docker/folder to project directory - Environment Setup: Creates
.envfiles from web interface - Container Management: Runs
docker composecommands automatically
- Enable 2-factor authentication
- Generate an App Password
- Use the App Password in
SMTP_PASS
- SendGrid: Use API key as password
- AWS SES: Use SMTP credentials
- Custom SMTP: Any SMTP-compatible service
npm run build
npm run startFROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm ci --only=production
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
