iGITit is a Git learning app built with Next.js. It combines Clerk-authenticated learning flows, a Neon Postgres database accessed through Drizzle ORM, and an in-browser Git sandbox powered by isomorphic-git.
- Next.js 16 App Router
- React 19
- TypeScript
- Tailwind CSS 4
- Clerk for authentication and protected routes
- Neon Postgres with Drizzle ORM
- shadcn/ui and Radix-based UI primitives
isomorphic-gitwith@isomorphic-git/lightning-fsfor browser sandbox lessons
- Clerk sign up and sign in flows at
/signupand/login - Protected app routes for dashboard, lessons, learning, and achievements
- Lesson catalog with per-user progress tracking
- Dashboard with activity and remaining-work visualizations
- Browser-based Git sandbox for hands-on lesson execution
app/
(auth)/ Clerk auth routes
achievements/ Achievements page
dashboard/ Dashboard UI
engine/ Browser Git sandbox engine
learning/ Lesson catalog
lesson/[id]/ Individual lesson experience
components/ Shared UI and feature components
db/ Drizzle schema and database access
drizzle/ Generated SQL/migration artifactsThis project uses Neon Postgres and Clerk.
Configure these environment variables:
DATABASE_URLNEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URLNEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URLCLERK_SECRET_KEYNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
DATABASE_URL is required by db/index.ts. Clerk is required by the app layout and route middleware in app/layout.tsx and proxy.ts.
- Install dependencies:
npm install-
Add your environment variables.
-
Run the development server:
npm run dev- Open
http://localhost:3000.
Drizzle is configured against PostgreSQL in drizzle.config.ts.
Available commands:
npm run db:generate
npm run db:migrate
npm run db:studioCurrent schema lives in db/schema.ts and includes:
userslesson_progress
npm run dev
npm run build
npm run start
npm run lint
npm run db:generate
npm run db:migrate
npm run db:studio- This repo is not a default
create-next-appsetup anymore; the README now reflects the actual stack in use. - The Git practice engine lives under app/engine/sandbox-engine.ts.