Supported Technologies & Stacks
Basecompose comes with pre-configured templates for popular technologies. The technology catalog is centralized in a single config file, making it easy to extend with new options.
Currently Supported
Application Intent
When creating a project, you first specify what type of application you're building:
SaaS (Default)
- Full-stack application with both frontend and backend
- Includes UI, API, database, and optional authentication
- Best for: Web apps, dashboards, content platforms
API
- Backend-only service without a user interface
- Perfect for: Microservices, webhooks, data services
Frontend
Next.js
- Version: Latest (16+)
- Port: 3000
- Features:
- Server-side rendering (SSR)
- Static site generation (SSG)
- API routes
- Full TypeScript support
- Tailwind CSS 4
- Modern React patterns (App Router)
- Use for: Web apps, SaaS, dashboards, blogs
- Docker Image:
node:20-alpine - Development: Hot reload enabled with volume mounts
- Production: Optimized builds with
npm run build && npm start
Future Support:
- React + Vite
- Astro
- Remix
- Svelte
Backend
Backend options are templates waiting to be created. When you add a backend template, it will automatically appear in the UI and be available for selection.
Planned Backends:
Node.js/Express
- Port: 3001
- Runtime: Node 20+
- Language: TypeScript or JavaScript
FastAPI
- Port: 8000
- Runtime: Python 3.11+
- Language: Python
Go
- Port: 8080
- Runtime: Go 1.21+
- Language: Go
Databases
MongoDB
- Version: 7.0+
- Port: 27017
- Type: NoSQL (Document database)
- Use for: Flexible schemas, rapid development, nested data
- Docker Image:
mongo:7 - Connection: Via MongoDB connection string
- Features:
- No migrations required
- Flexible data structure
- Great for prototyping
- Scalable to large datasets
- Environment Variables:
MONGODB_URI=mongodb://root:example@localhost:27017 MONGODB_ROOT_USERNAME=root MONGODB_ROOT_PASSWORD=example - Development: No auth (simplifies local setup)
- Production: Full authentication enabled
Supported in Generated Projects:
- MongoDB client library pre-installed
- Connection helper (
lib/db/mongodb.ts) - Environment variables configured
- Docker service included
PostgreSQL (Planned)
- Version: 16+
- Port: 5432
- Type: Relational SQL database
- Use for: Complex queries, ACID transactions, structured data
- Docker Image:
postgres:16-alpine - Features:
- Powerful query engine
- Strong consistency guarantees
- Advanced features (JSON, full-text search)
- Great for complex applications
- Planned Libraries: Prisma, TypeORM, Drizzle
MySQL (Planned)
- Version: 8.0+
- Port: 3306
- Type: Relational SQL database
- Use for: Traditional web apps, high compatibility
- Docker Image:
mysql:8.0
Redis (Planned)
- Version: 7.0+
- Port: 6379
- Type: In-memory cache
- Use for: Caching, sessions, real-time data
- Docker Image:
redis:7-alpine - Features:
- Ultra-fast key-value store
- Perfect for caching
- Session management
- Pub/Sub messaging
Authentication
Auth.js (NextAuth.js)
- Requires: Database (automatically added)
- Providers Included:
- Google OAuth
- GitHub OAuth
- (Expandable for more providers)
- Features:
- Session management
- JWT support
- Database adapters
- Secure by default
- Industry standard
- Security:
- CSRF protection
- Secure cookies
- Password hashing
- Environment Variables Needed:
GITHUB_ID=your_github_app_id GITHUB_SECRET=your_github_secret NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=generated_secret_here
Planned Auth Options:
- Clerk
- Firebase Auth
- Auth0
- Custom JWT
How Technologies Are Combined
Dependency Resolution
Basecompose automatically handles technology dependencies:
- Auth requires Database: Adding authentication automatically includes MongoDB (or your chosen database)
- Frontend always included: Every stack starts with Next.js
- Demo always included: Every project includes example components showing how to use the stack
Example Stacks
Simple SaaS (Frontend + Database)
{
intent: "saas",
frontend: "nextjs",
database: "mongodb"
}Generated includes:
- Next.js application
- MongoDB client and setup
- Docker Compose with MongoDB
- .env.example with MongoDB credentials
- Setup guide
Full SaaS (Frontend + Backend + Database + Auth)
{
intent: "saas",
frontend: "nextjs",
backend: "node",
database: "mongodb",
auth: "authjs"
}Generated includes:
- All of the above, plus:
- Backend API service
- Auth routes and configuration
- OAuth setup instructions
- User session management
API Only (Backend + Database)
{
intent: "api",
backend: "fastapi",
database: "postgres"
}Generated includes:
- FastAPI backend
- PostgreSQL setup
- Docker Compose with database
- API documentation
- Health check endpoint
Adding New Technologies
1. Add to Stack Configuration
Edit packages/types/stack-config.ts:
export const STACK_CONFIG = {
database: {
options: {
redis: {
label: "Redis",
description: "In-memory cache",
dockerImage: "redis:7-alpine",
port: 6379,
icon: "redis",
},
},
},
};2. Create Templates
Create template files in templates/ directory:
templates/
├── databases/
│ └── redis/
│ ├── client.ts # Connection helper
│ ├── env.ts # Environment variables
│ ├── README.md # Setup guide
│ └── docker/
│ └── docker-compose.redis.yml3. Update Types
Update packages/types/blueprint.ts:
export type StackBlueprint = {
intent: "saas" | "api";
database?: "mongodb" | "postgres" | "redis";
};4. Add Resolution Rules (if needed)
In stack-config.ts, add dependency rules:
export const RESOLUTION_RULES = [
{
name: "Redis improves performance",
condition: (stack) => stack.backend && !stack.database,
apply: (stack) => {
// Automatically suggest Redis for backends
},
},
];5. Test
pnpm dev
# Try selecting the new technology
# Generate and verify the outputTechnology Version Constraints
All Docker images are pinned to specific versions to ensure reproducibility:
- Next.js: Latest (automatically updated in base template)
- Node: 20-alpine
- MongoDB: 7 (LTS)
- PostgreSQL: 16-alpine
- Python: 3.11+ (when FastAPI is added)
- Go: 1.21+ (when Go is added)
Learn More
- See Contributing Guide for detailed steps on adding technologies
- Check Architecture for how technologies are generated
- View Templates for template structure