A modern full-stack monorepo project built with Next.js 16, Express, Turborepo, and Prisma.
- Monorepo Structure: Managed with Turborepo for efficient builds and shared code.
- Frontend: Next.js 16 (App Router) with TypeScript, Tailwind CSS, and shadcn/ui.
- Backend: Node.js/Express API with TypeScript and Zod validation.
- Type Safety: End-to-end type safety with shared packages and Zod environment validation.
- Authentication: NextAuth.js v5 (beta) pre-configured.
- State Management: Zustand and React Query for server state.
- Database: Prisma ORM with PostgreSQL.
- Developer Experience: Prettier, ESLint, and absolute imports (
@/) configured.
| Area | Technologies |
|---|---|
| Core | Next.js, React, TypeScript |
| Styling | Tailwind CSS, shadcn/ui |
| Backend | Express, Node.js |
| Monorepo | Turborepo |
| ORM | Prisma |
| Auth | NextAuth.js |
| Validation | Zod |
| State | Zustand, React Query |
CodeUp/
├── apps/
│ ├── web/ # Next.js Frontend (@codeup/web)
│ └── api/ # Express Backend (@codeup/api)
├── packages/
│ ├── types/ # Shared TypeScript types (@codeup/types)
│ └── utils/ # Shared utility functions (@codeup/utils)
├── turbo.json # Turborepo configuration
├── package.json # Workspace root dependencies
└── eslint.config.mjs # Shared linting configuration
- Node.js 18+
- npm (or yarn/pnpm)
-
Clone the repository:
git clone https://github.com/your-username/CodeUp.git cd CodeUp -
Install dependencies:
npm install
-
Set up environment variables:
cp apps/web/.env.example apps/web/.env.local # Fill in your variables in apps/web/.env.local -
Initialize Database:
npx prisma generate # After configuring DATABASE_URL: # npx prisma migrate dev
-
Start Development:
npm run dev
- Frontend: http://localhost:3000
- Backend: http://localhost:4000/api/health
npm run dev: Starts all apps in development mode.npm run build: Builds all apps and packages.npm run lint: Lints the entire codebase.npm run format: Formats code with Prettier.npm run type-check: Verifies types across the monorepo.
- Create a branch:
git checkout -b feature/your-feature - Make changes: Ensure code follows the established patterns.
- Lint & Format: Run
npm run lintandnpm run format. - Push & PR: Push your branch and open a Pull Request.
Built with ❤️ by Arsh Verma