A modern, adaptive, and project-based learning platform designed for developers. Built using a monorepo architecture with Turborepo, this platform features multiple apps (web, dashboard, blog, forum, docs, API) and a shared UI component library.
π Live: https://build-to-learn-web.vercel.app
This project uses Turborepo to manage multiple apps and packages.
apps/
βββ web # Main landing & learning platform (Next.js)
βββ dashboard # Instructor/admin panel (Next.js)
βββ blog # Developer blog (Next.js)
βββ forum # Community Q\&A (Next.js)
βββ docs # Platform documentation (Vuepress)
βββ api # Backend API service (Nest.js)
configs/
βββ eslint-config # Shared ESLint config
βββ typescript-config # Shared TypeScript configs
packages/
βββui # Shared UI components (ShadCN + Tailwind)
- π§ Next.js 15 (App Router)
- βοΈ Nest.js (Backend API)
- ποΈ Tailwind CSS + ShadCN UI
- ποΈ PostgreSQL (Supabase) (via Prisma)
- π§ͺ Jest + Supertest (Testing)
- π³ Docker (for DB & CI/CD)
- βοΈ GitHub Actions (CI)
- π Vercel (Deployment)
Ensure you have PNPM, Node.js (>=22.x), and Docker installed.
git clone https://github.com/maruf-pfc/build-to-learn.git
cd build-to-learn
pnpm install
π‘ If you face issues, try:
pnpm install --no-frozen-lockfile
Create .env
files in relevant apps:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/build_to_learn_db
JWT_SECRET=your_secret_here
NEXT_PUBLIC_API_URL=http://localhost:3001
docker compose up -d
β οΈ Make sure port5432
is not already in use on your machine.
docker compose down
docker compose up --build
pnpm --filter api prisma db push
pnpm dev
Starts all apps concurrently (via Turborepo). You can also run each app individually:
pnpm --filter web dev
pnpm --filter api dev
To run backend tests:
pnpm --filter api test
- Format code:
pnpm format
- Lint code:
pnpm lint
pnpm build
- Web apps (
web
,dashboard
, etc.) are deployed via Vercel. - Backend (
api
) can be deployed via Render, Railway, or Docker VPS.
pnpm dev # Start all apps for development
pnpm build # Build all apps
pnpm lint # Run ESLint across all packages
pnpm format # Run Prettier
pnpm test # Run all tests (API)
We welcome contributions! Feel free to:
- Open issues
- Suggest features
- Submit pull requests
Apache License