Open Source Enterprise Boilerplate

Production-Ready
Full-Stack Boilerplate

Enterprise-grade TypeScript boilerplate with TanStack Start, Better Auth, tRPC, Drizzle ORM, and everything you need to build scalable modern applications.

100%
TypeScript
25+
Server Packages
50+
UI Components
15+
Ready Features

Built with Modern Technologies

Carefully selected cutting-edge tools and frameworks for maximum developer experience and performance.

TanStack Start

Full-stack React framework with SSR

Better Auth

Modern authentication library

tRPC

End-to-end typesafe APIs

Drizzle ORM

TypeScript ORM

PostgreSQL

Advanced relational database

Redis

In-memory data structure store

Elasticsearch

Search and analytics engine

Hono

Fast, lightweight web framework

BullMQ

Redis-based job queue

TailwindCSS

Utility-first CSS framework

Turborepo

High-performance monorepo

TypeScript

Typed JavaScript at scale

Everything You Need to Build

Pre-built modules and features to accelerate your development process.

Authentication & Authorization
Complete auth system with Better Auth, session management, role-based access control, and social login support.
Session management
OAuth providers
Role-based access
JWT tokens
Database & ORM
Type-safe database operations with Drizzle ORM, migrations, relations, and PostgreSQL optimization.
Type-safe queries
Auto migrations
Relations
Connection pooling
API & Type Safety
End-to-end type safety with tRPC, automatic API documentation, and seamless client-server communication.
End-to-end types
Auto completion
Runtime validation
API documentation
Search & Analytics
Powerful search capabilities with Elasticsearch integration, full-text search, and analytics.
Full-text search
Real-time indexing
Analytics
Faceted search
File Management
Complete file handling with S3 integration, image processing, upload validation, and CDN support.
S3 integration
Image processing
Upload validation
CDN support
Background Jobs
Robust job processing with BullMQ, scheduled tasks, retry logic, and monitoring dashboard.
Job queues
Scheduled tasks
Retry logic
Monitoring
Email & Notifications
Multi-channel notifications with email templates, push notifications, and delivery tracking.
Email templates
Push notifications
Delivery tracking
Templates
User Management
Complete user system with profiles, preferences, contact management, and activity tracking.
User profiles
Contact management
Activity logs
Preferences
Monitoring & Logging
Comprehensive monitoring with Sentry integration, structured logging, and performance tracking.
Error tracking
Performance monitoring
Structured logging
Alerts

Scalable Architecture

Monorepo structure with clean separation of concerns and microservice-ready packages.

Frontend Apps
TanStack Start applications with SSR, React 19, and modern UI components.
Client App (TanStack Start)
Admin Dashboard
Component Library
Responsive Design
API Gateway
Hono-powered API with tRPC endpoints, middleware, and unified routing.
tRPC Router
Middleware Stack
API Documentation
Rate Limiting
Service Packages
Modular services for authentication, database, caching, and more.
25+ Service Packages
Clean Dependencies
Easy Testing
Microservice Ready

See It In Action

Type-safe from database to UI with automatic code generation and validation.

Backend tRPC Route
import { z } from 'zod';
import { router, authProcedure } from '@repo/trpc';
import { getUserById } from '@repo/user';

export const userRouter = router({
  getMe: authProcedure
    .query(async ({ ctx }) => {
      return getUserById(ctx.user.id);
    }),
    
  updateProfile: authProcedure
    .input(z.object({
      name: z.string().min(1),
      email: z.string().email(),
    }))
    .mutation(async ({ input, ctx }) => {
      return updateUser(ctx.user.id, input);
    }),
});
Frontend Component
import { useTRPC } from '@/lib/trpc-client';
import { useQuery, useMutation } from '@tanstack/react-query';

export function UserProfile() {
  const trpc = useTRPC();
  
  const { data: user } = useQuery(
    trpc.user.getMe.queryOptions()
  );
  
  const { mutate: updateProfile } = useMutation(
    trpc.user.updateProfile.mutationOptions({
      onSuccess: () => {
        // Fully typed success handler
      }
    })
  );
  
  return <div>{user?.name}</div>;
}

Ready to Build Something Amazing?

Skip months of setup and start building your next big idea with our enterprise-ready boilerplate.

npx create-silverbullet-app my-app