This is a scaffold for a modern web application using a monorepo architecture. It's designed to provide a solid foundation for new projects, with a focus on type-safety, developer experience, and scalability.
This monorepo includes:
apps/web: An Astro application for the frontend.packages/api: A tRPC API for type-safe client-server communication.packages/db: Database schemas, migrations, and query utilities using Kysely.packages/utils: Shared utilities used across the monorepo.- Authentication: Example implementation using better-auth with GitHub as an OAuth provider.
- UI: Basic UI setup with Tailwind CSS and shadcn/ui.
- Tooling:
- Turborepo for high-performance builds.
- PNPM for efficient package management.
- TypeScript for static typing.
- ESLint and Prettier for code quality.
This scaffold is specifically designed to excel with AI coding assistants and "vibe coding" workflows:
- Rich Examples: The codebase provides comprehensive examples of common patterns like API routing, database connections, migrations, authentication flows, and UI components that AI can learn from and replicate.
- Comprehensive Cursor Rules: Pre-configured
.cursor/rules/directory with detailed guidelines for:- Database patterns and Kysely type helpers
- tRPC and React Query integration patterns
- React component conventions and shadcn/ui usage
- TypeScript best practices and naming conventions
- Environment variable management
- Code organization and project structure
- Consistent Patterns: Standardized approaches across the entire stack make it easy for AI to understand and extend the codebase following established conventions.
- Type Safety: Full TypeScript coverage provides clear contracts and interfaces that AI can work with confidently.
Whether you're pair programming with Claude, GitHub Copilot, or Cursor's AI, this scaffold gives your AI assistant the context and examples it needs to generate high-quality, consistent code that follows your project's patterns.
-
Clone the repository:
git clone https://github.com/your-repo/monorepo-scaffold.git cd monorepo-scaffold -
Install dependencies:
pnpm install
-
Set up environment variables:
Create a
.envfile inapps/weband add the following variables:# Generate a secret with `openssl rand -base64 32` AUTH_SECRET="your_auth_secret" # From your GitHub OAuth application GITHUB_CLIENT_ID="your_github_client_id" GITHUB_CLIENT_SECRET="your_github_client_secret" # Your local PostgreSQL connection string DATABASE_URL="postgres://user:password@localhost:5432/monorepo-scaffold"
-
Set up the database:
Make sure you have a PostgreSQL server running. Then, run the migrations:
DATABASE_URL="postgres://user:password@localhost:5432/monorepo-scaffold" pnpm --filter @app/db db:migrate -
Run the development server:
pnpm dev
The web application will be available at
http://localhost:3001.
pnpm build: Build all apps and packages.pnpm lint: Lint all code.pnpm typecheck: Run TypeScript to check for type errors.pnpm test: Run tests.
This project is licensed under the MIT License - see the LICENSE file for details.