The Capstone Repository (Weeks 5–12)
Starting Week 5, each intern forks the official capstone repo and builds their own complete, independent version of ProjectFlow — a Kanban-style project management tool like Trello or Asana.
Step 1 — Fork and Clone (Day 1 of Week 5)
Do NOT clone the original repo directly. You must fork it first so you have your own copy to push to.
# 1. Go to: https://github.com/stratpoint-engineering/nextjs-internship-capstone # 2. Click "Fork" → create under YOUR GitHub account # 3. Clone YOUR fork: git clone https://github.com/YOUR-USERNAME/nextjs-internship-capstone.git cd nextjs-internship-capstone/project # 4. Install deps pnpm install # 5. Copy env template and fill in values (provided at onboarding) cp .env.example .env.local # 6. Run database setup pnpm db:generate && pnpm db:migrate # 7. Start dev server pnpm dev # → http://localhost:3000
Pro Tip
Add the original as upstream so you can pull future mentor updates:
git remote add upstream https://github.com/stratpoint-engineering/nextjs-internship-capstone.git
To sync later: git fetch upstream && git checkout main && git merge upstream/main
Repository Structure
| Path | What's inside | You edit this? |
|---|---|---|
| project/ | Main Next.js 16 application. All your code lives here. | Yes — primary workspace |
| project/app/ | App Router pages and layouts. | Yes |
| project/components/ | Shared React components. ui/ for Shadcn, modals/ for dialogs. | Yes |
| project/lib/db/ | Drizzle schema, migrations, and database client. | Yes |
| project/hooks/ | Custom React hooks. | Yes |
| project/stores/ | Zustand stores for global client-side state. | Yes |
| project/types/ | TypeScript definitions shared across the app. Full coverage pre-built. | Yes — extend as needed |
| docs/ | Program documentation: setup guide, timeline, code review standards. | No — reference only |
| tasks/ | Task breakdown and individual development approach guide. | No — reference only |
Key Documents Inside the Repo — When to Read Each
| When to Read | Document | What It Covers |
|---|---|---|
| Day 1 Week 5 | docs/DEVELOPMENT_SETUP.md | Fork & clone steps, branch naming, available scripts, file structure, getting help policy. |
| Day 1 Week 5 | tasks/INDIVIDUAL_DEVELOPMENT_APPROACH.md | How the fork strategy works, when to sync upstream, and Vercel deployment steps. |
| Day 1 Week 5 | docs/TIMELINE_MILESTONES.md | Official 12-week timeline with phase-by-phase milestones and deliverable dates. |
| Week 5 — ongoing | tasks/tasks-capstone-project-management-tool.md | Full feature backlog for ProjectFlow. Pick tasks from here each sprint. |
| Week 7 onwards | docs/CODE_REVIEW_GUIDE.md | Review standards: PR descriptions, what reviewers check, turnaround expectations. |
| Week 11 | project/README.md | Main app docs and Vercel deployment guide. |
Direct Links to All Repo Documents
Repo Tech Stack vs This Handbook — What to Upgrade
The repo was initialised in Feb 2026. The table below shows each tool, what version is in the repo, what this handbook targets, and what action you need to take.
| Tool | In Repo | Handbook Target | Action Required |
|---|---|---|---|
| Next.js | 16.1.6 | 16.x latest | No action — compatible |
| React | 19 | 19 | No action — matches |
| TypeScript | 5.9 | 5.5+ | No action — 5.9 exceeds minimum |
| Tailwind | 3.3 (config.js) | v4 (CSS-first) | pnpm add tailwindcss@latest → replace config with @import in globals.css (Chapter 5.4) |
| Auth | Clerk (planned) | Clerk v6 | Use Clerk v6 — the repo is Clerk-configured. Better Auth is the standalone option in Chapter 5. |
| ORM | Drizzle ORM | Drizzle ORM v2 | pnpm add drizzle-orm@latest drizzle-kit@latest → check migrate syntax (Chapter 5.6) |
| State | Zustand (planned) | Zustand + useOptimistic() | Both used in capstone — Zustand for global UI, useOptimistic() for mutations |
| Testing | Jest + Playwright (planned) | Vitest v2 + Playwright | pnpm remove jest && pnpm add -D vitest @vitejs/plugin-react |
| Linting | ESLint + Prettier | Biome v1 | pnpm remove eslint prettier && pnpm add -D @biomejs/biome && pnpm biome init |
| Node.js | 18+ LTS | 22 LTS | fnm install 22 && fnm use 22 (Next.js 16 requires ≥18, program standard is 22) |
| pnpm | 10.10.0+ | 9.x+ | Either version works — use whichever is installed |
| Deploy | Vercel (manual recommended) | Vercel | Follow project/README.md for Vercel setup. GitHub Actions workflow is included in the repo but is disabled by default and not required. |
Environment Variables Required
# project/.env.local (NEVER commit this file) # Neon Postgres DATABASE_URL="postgresql://user:pass@host/db?sslmode=require" # Clerk v6 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_test_..." CLERK_SECRET_KEY="sk_test_..." NEXT_PUBLIC_CLERK_SIGN_IN_URL="/sign-in" NEXT_PUBLIC_CLERK_SIGN_UP_URL="/sign-up" NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL="/dashboard" NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL="/dashboard" CLERK_WEBHOOK_SECRET="whsec_..."
Common Mistake
NEVER commit .env.local to Git.
Before your first commit, confirm: cat .gitignore | grep .env — must show ".env*.local".
Accidentally committed a secret? Tell your mentor NOW. The key must be rotated immediately.
Capstone Available Scripts (run from project/ directory)
| Command | What it does |
|---|---|
| pnpm dev | Start dev server with Turbopack → http://localhost:3000 |
| pnpm build | Production build. Run before every PR to catch errors. |
| pnpm type-check | TypeScript check without emitting (tsc --noEmit) |
| pnpm test | Run tests (replace with Vitest after migration) |
| pnpm test:e2e | Run Playwright E2E tests |
| pnpm db:generate | Generate Drizzle SQL migration files from schema changes |
| pnpm db:migrate | Apply pending migrations to the database |
| pnpm db:studio | Open Drizzle Studio — browser UI to inspect and edit data |
Capstone Git Workflow
Keep it simple. You work alone on your fork — no shared branch to protect.
| Situation | What to do |
|---|---|
| Day-to-day work | Commit directly to main. Push at end of every session. |
| Risky experiment you might discard | Use a feature branch: git checkout -b feat/try-something |
| Dependency upgrades or config changes | Commit directly to main with a clear commit message: chore(deps): upgrade tailwind to v4 |
| Something broke and you want to revert | git reset --soft HEAD~1 to undo the last commit and try again |
Pro Tip
Commit directly to main on your fork — no PRs required during the capstone.
Use feature branches if you're experimenting with something you might want to throw away.
Use Conventional Commits format for all commits: feat(auth): add Clerk middleware protection
The only formal code review in this program is on your Foundations 1 and 2 project submissions.