A full-stack Internship Application Tracker built with Next.js (App Router), TypeScript, Prisma, Postgres, TailwindCSS, and NextAuth (Google OAuth). Track applications, filter/search, and view a dashboard summary of milestones like Applied → Interview → Offer.
- Google sign-in via NextAuth (OAuth)
- Dashboard stats (Total, Applied, Interviews, Offers)
- Search + filter by company/role and milestone
- CRUD applications (create/view/manage entries)
- Prisma + Postgres persistence (works great with Neon)
- Deployed on Vercel with custom domain + HTTPS
- Frontend: Next.js 16 (App Router), React, TypeScript, TailwindCSS
- Backend: Next.js server components + route handlers, NextAuth
- Database: Postgres
- ORM: Prisma
- Deployment: Vercel
src/
app/ # Next.js App Router routes
api/auth/[...nextauth]/route.ts
(app)/dashboard/ # authenticated app pages
components/ # UI components (tables/cards/forms)
lib/ # prisma client, helpers
prisma/ # schema + migrations (if included)
Create a .env locally (do not commit secrets). Example:
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DB?sslmode=require"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-random-secret"
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"openssl rand -base64 32Install deps:
npm installRun Prisma (first-time / after schema changes):
npx prisma generate
npx prisma db push
# or if you're using migrations:
# npx prisma migrate devStart dev server:
npm run devOpen: http://localhost:3000
npm run build
npm start-
Import the GitHub repo in Vercel
-
Set environment variables in Vercel:
DATABASE_URLNEXTAUTH_URL(your production domain, e.g.https://www.internship-tracker.com)NEXTAUTH_SECRETGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET
-
Add your custom domain (optional)
-
Ensure Google OAuth Authorized redirect URIs include:
https://YOUR_DOMAIN/api/auth/callback/google
- Landing page + CTA to login
- Authenticated dashboard with stats + filters
- Applications table view
MIT