This is a Next.js project bootstrapped with create-next-app.
The application uses Supabase as the database. The schema consists of the following tables:
teacher_id(UUID, Primary Key) - Auto-generated unique identifierfirst_name(TEXT, Required) - Teacher's first namelast_name(TEXT, Required) - Teacher's last nameemail(TEXT, Required, Unique) - Teacher's email addresspassword(TEXT, Required) - Teacher's password (should be hashed)department(TEXT, Optional) - Must be one of: 'ELA', 'Math', or 'Special Ed' if provided
student_id(UUID, Primary Key) - Auto-generated unique identifierfirst_name(TEXT, Required) - Student's first namelast_name(TEXT, Required) - Student's last namegrade_level(INTEGER, Optional) - Student's grade level (0 = Kindergarten, 1-12 = Grades 1-12)teacher_id(UUID, Optional, Foreign Key → teachers.teacher_id) - Reference to assigned teacher
iep_id(UUID, Primary Key) - Auto-generated unique identifierstudent_id(UUID, Required, Foreign Key → students.student_id) - Reference to studentpdf_data(TEXT, Optional) - URL/path to the stored IEP PDF file in Supabase Storage
goal_id(UUID, Primary Key) - Auto-generated unique identifieriep_id(UUID, Required, Foreign Key → ieps.iep_id) - Reference to IEPgoal_type(TEXT, Required) - Type of goal: 'ela', 'math', 'general', or 'weekly'goal_text(TEXT, Required) - The actual goal textweek_number(INTEGER, Optional) - Week number for weekly tasks (null for annual goals)completed(BOOLEAN, Default: false) - Whether the goal has been completedcompleted_at(TIMESTAMP, Optional) - Timestamp when the goal was marked as completed
objective_id(UUID, Primary Key) - Auto-generated unique identifiergoal_id(UUID, Required, Foreign Key → goals.goal_id) - Reference to parent goalobjective_text(TEXT, Required) - The actual objective text
- Teachers → Students: One teacher can have many students (one-to-many)
- Students → IEPs: One student can have many IEPs over time (one-to-many)
- IEPs → Goals: One IEP can have many goals (one-to-many)
- Goals → Objectives: One goal can have many objectives (one-to-many)
idx_students_teacher_idonstudents(teacher_id)idx_ieps_student_idonieps(student_id)idx_teachers_emailonteachers(email)idx_goals_completedongoals(completed)
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.