Skip to content

zekariasasaminew/planit

Repository files navigation

PlanIt - Academic Planning Assistant

A modern academic planning application built with Next.js, featuring course catalog integration, automated plan generation, and Learning Perspectives tracking for Augustana University.

๐Ÿš€ Production Features

โœจ Modern UI/UX

  • Material Design 3 styling with custom theme
  • Light/Dark mode toggle with system preference detection
  • Responsive design that works on all devices
  • Google-style clean and intuitive interface

๐Ÿ“š Academic Planning

  • Interactive Dashboard with welcome screen and quick actions
  • AI-Powered Plan Generation with semester optimization
  • Semester-by-Semester Planner with visual course cards
  • Prerequisites Tracking with automatic dependency resolution
  • Learning Perspectives Integration (PA, PH, PS, PP, PL, PN)
  • Major/Minor Support with comprehensive course requirements

๐ŸŽฏ Key Components

  • Course Catalog Integration with web scraping capabilities
  • Plan Generation Engine with constraint satisfaction
  • Database Migration System for course data management
  • User Authentication with Google OAuth integration
  • Real-time Plan Validation with prerequisite checking

๐Ÿ›  Tech Stack

  • Next.js 14/15 with App Router (APIs under src/app/api)
  • TypeScript for type safety
  • Material UI (MUI) for components and styling
  • Emotion for CSS-in-JS styling
  • Zustand for state management (ready for integration)
  • Supabase (Auth and Postgres)
  • Drizzle ORM (types for schema)
  • Zod for input validation
  • Pino for logging
  • OpenAPI generated from Zod
  • Vitest and Playwright for tests

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ app/                    # Next.js App Router pages
โ”‚   โ”œโ”€โ”€ layout.tsx         # Root layout with sidebar and app bar
โ”‚   โ”œโ”€โ”€ page.tsx           # Homepage/Dashboard
โ”‚   โ”œโ”€โ”€ generate/          # Plan generation wizard
โ”‚   โ”œโ”€โ”€ planner/           # Semester-by-semester view
โ”‚   โ”œโ”€โ”€ saved-plans/       # Plan management
โ”‚   โ”œโ”€โ”€ majors/            # Programs and requirements
โ”‚   โ””โ”€โ”€ settings/          # App preferences
โ”œโ”€โ”€ components/            # Reusable UI components
โ”‚   โ”œโ”€โ”€ AppBar.tsx         # Top navigation bar
โ”‚   โ”œโ”€โ”€ Sidebar.tsx        # Collapsible sidebar menu
โ”‚   โ”œโ”€โ”€ SemesterCard.tsx   # Course display cards
โ”‚   โ”œโ”€โ”€ MajorSelector.tsx  # Major selection component
โ”‚   โ”œโ”€โ”€ MinorSelector.tsx  # Minor selection component
โ”‚   โ””โ”€โ”€ PreferenceForm.tsx # Plan preferences form
โ”œโ”€โ”€ theme/                 # MUI theme configuration
โ”‚   โ”œโ”€โ”€ theme.ts           # Dark theme definition
โ”‚   โ””โ”€โ”€ context.tsx        # Theme provider
โ””โ”€โ”€ types/                 # TypeScript type definitions
    โ””โ”€โ”€ index.ts           # Core data types

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 20+
  • npm or yarn
  • A Postgres instance and Supabase project (or Supabase-hosted Postgres)

Installation

  1. Clone the repository (if not already done)

  2. Install dependencies:

    npm install
  3. Environment variables (create .env.local):

SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_ANON_KEY=
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
DATABASE_URL=
OPENAI_API_KEY=
RATE_LIMIT_WINDOW_SEC=60
RATE_LIMIT_MAX_CALLS=10
  1. Run database migrations:
npm run db:migrate
  1. Seed example data (optional):
npm run db:seed
  1. Generate OpenAPI:
npm run openapi:gen
  1. Start the development server:

    npm run dev
  2. Open your browser and navigate to http://localhost:3000

๐Ÿงช Tests

npm run test        # unit tests
npm run test:e2e    # playwright API smoke tests

๐Ÿ“œ Curl example (Plan Generation)

curl -X POST http://localhost:3000/api/plans/generate \
  -H "Content-Type: application/json" \
  -d '{
    "majorIds": ["<major-uuid>"],
    "takenCourseIds": [],
    "semestersRemaining": 6,
    "maxCreditsPerSemester": 15,
    "startSeason": "Fall",
    "startYear": 2024
  }'

๐ŸŽจ Design Features

Theme System

  • Custom Material Design theme with college-appropriate colors
  • Automatic dark mode based on system preferences
  • Persistent theme selection using localStorage
  • Smooth transitions and hover effects throughout

Navigation

  • Responsive sidebar that collapses on mobile
  • Breadcrumb navigation with active state indicators
  • Quick actions accessible from multiple pages
  • Floating action buttons for primary actions

User Experience

  • Progressive disclosure with step-by-step flows
  • Loading states and success/error feedback
  • Form validation with helpful error messages
  • Accessible design following WCAG guidelines

๐Ÿ“‹ Pages Overview

๐Ÿ  Dashboard (/)

  • Welcome message with gradient text
  • Feature highlights with animated cards
  • Quick action buttons for common tasks
  • Call-to-action for new users

โšก Generate Plan (/generate)

  • 4-step wizard for plan creation:
    1. Timeline Selection - Start/end semesters
    2. Academic Programs - Major and minor selection
    3. Preferences - Credit limits, course timing
    4. Review & Generate - Final confirmation
  • Form validation and error handling
  • Loading states during generation

๐Ÿ“… Planner (/planner)

  • Horizontal semester timeline with scroll
  • Course cards with type indicators and credits
  • Plan insights with requirement tracking
  • Edit capabilities for plan modifications

๐Ÿ’พ Saved Plans (/saved-plans)

  • Grid layout of saved academic plans
  • Context menus for plan management
  • Search and filtering capabilities
  • Quick preview of plan details

๐ŸŽ“ Majors & Requirements (/majors)

  • Tabbed interface for majors and minors
  • Search functionality across programs
  • Program cards with department and credit info
  • Placeholder for future requirements system

โš™๏ธ Settings (/settings)

  • Theme toggle with live preview
  • Placeholder settings for future features
  • Clean list interface with descriptions

๐Ÿ”ฎ Future Enhancements

This frontend is designed to integrate with:

  • GPT-4 + LangChain backend for intelligent plan generation
  • University course databases for real-time data
  • User authentication and plan persistence
  • Advanced requirement tracking and validation
  • Collaboration features for advisor review
  • Export functionality (PDF, calendar integration)

๐Ÿงช Development Notes

  • Component-based architecture for easy testing
  • TypeScript interfaces for all data structures
  • Consistent styling with MUI theme system
  • Mobile-first responsive design approach
  • Performance optimized with Next.js features

๐Ÿ—„๏ธ Data Integration

The application now integrates with real data sources:

  • Real course catalog from Augustana College via ETL pipeline
  • Dynamic program data fetched from Supabase database
  • User-generated plans stored and retrieved from backend
  • Live plan generation using actual course prerequisites and requirements

Fully integrated system! This application provides a complete academic planning experience with real data and intelligent plan generation.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •