A full-stack TypeScript monorepo template for building scalable applications with Next.js, Express, and shared packages.
Created by Muhammad Swalah at HeedLabs.
This Turborepo monorepo includes the following apps and packages:
| App | Description | Port |
|---|---|---|
@pluteojs/next-web |
Next.js 16 frontend with React 19, Redux Toolkit, and shadcn/ui | 4000 |
@pluteojs/express-api-server |
Express.js REST API server with TypeScript | 3000 |
| Package | Description |
|---|---|
@pluteojs/api-types |
Shared Zod validation schemas and TypeScript types |
@pluteojs/database |
Drizzle ORM setup with PostgreSQL |
@pluteojs/email-templates |
React Email templates |
@pluteojs/eslint-config |
Shared ESLint configurations |
@pluteojs/typescript-config |
Shared TypeScript configurations |
- Runtime: Node.js 20+
- Package Manager: pnpm
- Build System: Turborepo
- Frontend: Next.js 16, React 19, Tailwind CSS 4, shadcn/ui
- Backend: Express.js, Drizzle ORM
- Database: PostgreSQL
- Validation: Zod
- State Management: Redux Toolkit
- Type Safety: TypeScript 5.9+
- Node.js 20.9 or higher
- pnpm 9+
- PostgreSQL (for database package)
# Clone the repository
git clone <repository-url>
cd pluteojs-template
# Install dependencies
pnpm install# Run all apps in development mode
pnpm dev
# Run a specific app
pnpm --filter @pluteojs/next-web dev
pnpm --filter @pluteojs/express-api-server dev# Build all apps and packages
pnpm build
# Build a specific app/package
pnpm --filter @pluteojs/next-web build
pnpm --filter @pluteojs/express-api-server build# Run linting across all packages
pnpm lint
# Run type checking across all packages
pnpm check-types
# Format code with Prettier
pnpm formatpluteojs-template/
├── apps/
│ ├── next-web/ # Next.js frontend application
│ └── express-api-server/ # Express.js API server
├── packages/
│ ├── api-types/ # Shared Zod schemas & types
│ ├── database/ # Drizzle ORM configuration
│ ├── email-templates/ # React Email templates
│ ├── eslint-config/ # Shared ESLint config
│ └── typescript-config/ # Shared TypeScript config
├── tooling/ # Monorepo utilities
├── turbo.json # Turborepo configuration
└── pnpm-workspace.yaml # pnpm workspace configuration
- Monorepo Architecture: Organized codebase with shared packages and optimized builds
- Full-Stack TypeScript: End-to-end type safety with shared types between frontend and backend
- Modern Tooling: Latest versions of Next.js, React, and development tools
- Code Quality: Pre-configured ESLint, Prettier, and TypeScript strict mode
- Database Ready: Drizzle ORM with PostgreSQL support
- Email Templates: React Email for transactional emails
| Command | Description |
|---|---|
pnpm dev |
Start all apps in development mode |
pnpm build |
Build all apps and packages |
pnpm lint |
Run ESLint across all packages |
pnpm check-types |
Run TypeScript type checking |
pnpm format |
Format code with Prettier |
pnpm clean |
Clean build artifacts |
MIT