Skip to main content

project-name Documentation

Replace all instances of "project-name" in the repo with your project name using find and replace in your IDE.

Repository Quick Start

1

Create a New Repository

Click the button below to create a new repository from this template:

Use this template
2

Initial Setup

Install dependencies and copy environment variables

pnpm i
cp .env.example .env
3

Database Configuration

Spin up MongoDB with Docker and validate connection

docker-compose -f packages/db/docker-compose.yml up -d
4

Start the Web App

Start the Next.js application

pnpm dev:next
5

Setup Authentication

Log in to Clerk and claim your application

6

Optional: Remove Expo

If you're not building a mobile app, safely remove Expo

rm -rf apps/expo

Next Steps

🚀

Deploy Your Applications

Follow these guides to deploy your applications to production:

Development Pathway

📋
1. Setup Repo
Configure auth & database
🚀
2. Initial Deploy
Deploy baseline app
📚
3. Deploy Docs
Set up documentation site
🔨
4. Build Features
API and UI implementation
♻️
5. Continuous Deployment
CI/CD pipeline

Key Architecture Principles

🧩

Shared Packages

Keep business logic in shared packages that can be used across all apps. This promotes code reuse and consistency.

🔒

Type Safety

Maintain end-to-end type safety with tRPC, Typegoose, and Zod for robust APIs and validation.

🔄

Early Deployment

Set up deployment early and deploy frequently to catch integration issues early in development.

UI Development Best Practices

Use shadcn/ui Components

All UI components should be built with shadcn/ui, including forms, tables, and other complex components.

Use shadcn/ui for consistent design language and accessibility
Leverage react-hook-form with shadcn form components for validation
Extend components with consistent styling using the cn utility
Maintain theme consistency with provided theme variables
Avoid creating custom components when shadcn equivalents exist

Add new UI components using the CLI:

pnpm ui-add
UI Package Documentation →