Skip to content

Repository files navigation

GradPlanner

The ultimate decision-support platform built specifically for Bangladeshi students pursuing graduate admissions (MSc/PhD) abroad in CS, AI, ML, and Engineering.

License MIT Tech Stack Edition version PWA Ready


🌟 Why GradPlanner?

Standard study-abroad tools focus on generic dashboards and simple university rankings. But applying for a technical graduate degree under a Bangladeshi Passport presents unique realities.

GradPlanner solves the real bottlenecks:

  • Funding > Rankings: Prioritizes programs with active TA/RA stipends, DAAD, MEXT, and fully funded fellowship packages β€” not just QS rankings.
  • Bangladesh-Specific Visa Intelligence: Tracks German APS bottlenecks (2.5+ yr Dhaka wait times), Canadian SDS requirements, and USA F-1 interview strategies with BD-specific rejection rate data.
  • AI-Powered Professor Outreach: LLM-assisted cold email generator (5 focus modes) drafts tailored outreach to professors in under 2 minutes with tone, funding, and research-fit alignment.
  • PR & Visa Pathway Simulator: Interactive country-by-country immigration timeline β€” Student Visa β†’ Post-Study Work β†’ PR β†’ Citizenship β€” with honest BD-specific risk ratings and hidden costs.
  • Deadline Notification Engine: Smart deadline reminders for application windows, follow-up timers, document expiry alerts, and urgent Sonner toasts across 5 event types.
  • Command Palette (⌘K): Instant cross-entity search across universities, professors, countries, and rankings β€” navigate anywhere without leaving the keyboard.
  • Advanced Analytics & ROI Dashboard: Application funnel chart, financial ROI breakdown, professor outreach distribution, and 365-day activity heatmap powered by Recharts.
  • Document Timelines: Schedules document gathering (police clearances, APS certificates, GIC bank transfers) matching real Dhaka-to-embassy timeline realities.
  • PWA & Offline Mode: Installable as a home-screen app on Android/iOS with service-worker caching, offline banner, and Brotli-compressed API responses.

πŸ› οΈ Technical Stack

GradPlanner is built as a highly performant, decoupled monorepo:

Frontend

  • Framework: Next.js 15 (App Router) with TypeScript Strict
  • State Management: Redux Toolkit + Redux Persist
  • Styling: Tailwind CSS v4 & shadcn/ui component library
  • Charts & Visuals: Recharts (funnel, bar, pie) + custom SVG heatmap
  • Command Palette: cmdk + shadcn Command component
  • Notifications: Sonner toast + in-app notification panel
  • PWA: Custom Service Worker + Web App Manifest + InstallBanner
  • Client Authentication: better-auth client instance

Backend

  • Server: Express.js with TypeScript
  • Database ORM: Prisma 7 (PostgreSQL)
  • Database: PostgreSQL with JSONB country intelligence fields
  • Authentication: better-auth server handler
  • AI Integration: OpenAI gpt-4o-mini via llmService (professor email generation)
  • Performance: compression middleware (Brotli/Gzip) + Cache-Control headers

πŸ“‚ Project Structure

β”œβ”€β”€ backend/                  # Express.js REST API server
β”‚   β”œβ”€β”€ prisma/               # Schema, migrations, and seed scripts (3045 rankings + 20 countries)
β”‚   └── src/
β”‚       β”œβ”€β”€ routes/           # All REST endpoints (auth, profile, countries, professors, ai, analytics…)
β”‚       β”œβ”€β”€ services/         # Business logic: notificationService, llmService
β”‚       β”œβ”€β”€ validators/       # Zod schemas for every route
β”‚       └── lib/              # Auth handler, logger, Prisma client
β”œβ”€β”€ frontend/                 # Next.js 15 (App Router) with shadcn/ui dashboard
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ countries/        # 21 country intelligence JSON files (visa, PR, costs, risks)
β”‚   β”‚   β”œβ”€β”€ manifest.json     # PWA Web App Manifest
β”‚   β”‚   └── sw.js             # Custom Service Worker (cache-first / network-first strategies)
β”‚   └── src/
β”‚       β”œβ”€β”€ app/dashboard/    # Dashboard pages (pathways, analytics, professors, rankings…)
β”‚       β”œβ”€β”€ components/       # Shared UI: notifications, onboarding, skeletons, analytics charts
β”‚       β”œβ”€β”€ lib/
β”‚       β”‚   β”œβ”€β”€ api.ts        # Centralized API client (all fetch calls)
β”‚       β”‚   └── store/slices/ # Redux Toolkit slices (profile, countries, professors, notifications…)
β”‚       └── hooks/            # useDebounce, useSwipeGesture, useNetworkStatus, useCommandPalette
β”œβ”€β”€ notebook/                 # Data preprocessing scripts + universities.csv (3045 rows)
β”œβ”€β”€ AGENTS.md                 # Product guidance for AI agents
β”œβ”€β”€ CONTRIBUTING.md           # Contribution workflows & guidelines
β”œβ”€β”€ implementation.md         # Phase-by-phase implementation plan & acceptance criteria
β”œβ”€β”€ LICENSE                   # MIT License
└── README.md                 # Main workspace documentation

πŸš€ Getting Started

1. Installation

Install dependencies for both frontend and backend using pnpm from the root directory:

pnpm install

2. Environment Variables

Create .env files in both backend/ and frontend/ folders:

backend/.env

DATABASE_URL="postgresql://user:password@localhost:5432/gradplanner?schema=public"
BETTER_AUTH_SECRET="your-super-secret-auth-key"
BETTER_AUTH_URL="http://localhost:5000"
OPENAI_API_KEY="sk-..."       # Required for AI professor email generation

frontend/.env.local

NEXT_PUBLIC_API_URL="http://localhost:5000"
NEXT_PUBLIC_BETTER_AUTH_URL="http://localhost:5000"

3. Database Setup & Seeding

Ensure you have a PostgreSQL database running, then apply migrations:

cd backend
pnpm exec prisma migrate dev

Seed the reference country intelligence and university ranking datasets (3045 rankings + 20 countries):

pnpm exec prisma db seed

4. Running Locally

Start both services in development mode:

  • Backend Server:

    cd backend
    pnpm dev

    (Starts API on http://localhost:5000)

  • Frontend Client:

    cd frontend
    pnpm dev

    (Starts Next.js on http://localhost:3000)

5. Type Checking

Run type checks in both workspaces after any TypeScript changes:

cd backend && pnpm type-check
cd frontend && pnpm type-check

6. Bundle Analysis (optional)

cd frontend
ANALYZE=true pnpm build

✨ Features at a Glance

Phase Feature Status
1 Backend API hardening β€” Zod validation, ApiResponse<T>, rate limiting, seed data βœ… Done
2 Onboarding wizard β€” 4-step profile setup, isOnboarded gate, completeness bar βœ… Done
3 Loading skeletons, error states, empty states overhaul (10 locations) βœ… Done
4 Mobile-first UI β€” bottom nav, swipe gestures, 44px touch targets, fluid typography βœ… Done
5 Notification & deadline reminder engine β€” 6 CRUD endpoints, Sonner toasts βœ… Done
6 Global search & command palette β€” ⌘K, cross-entity search, grouped results βœ… Done
7 Advanced analytics & ROI dashboard β€” funnel, financial, outreach, heatmap βœ… Done
8 AI professor email generator β€” OpenAI gpt-4o-mini, 5 focus modes, template fallback βœ… Done
9 PR & visa pathway simulator β€” interactive timeline, BD-specific risks, comparison view βœ… Done
10 PWA & performance β€” service worker, offline mode, Brotli compression, bundle analysis βœ… Done

🀝 Contributing

Contributions to GradPlanner are highly welcome! Please read our CONTRIBUTING.md to understand branch conventions, coding guidelines, and PR procedures.


βš–οΈ License

Distributed under the MIT License. See LICENSE for more details. Copyright (c) 2026 Atik203.

About

Decoupled decision-support workspace for Bangladeshi CSE & Engineering students pursuing fully-funded MSc/PhD programs abroad. Built around Bangladesh visa, document, and funding realities.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Contributors

Languages