As a user, I want the application to visually match the mock-design pages exactly. This task covers implementing the global color palette (#F5F7FA background, #FFFFFF surface, #2C3E50 text, #3498DB accent, #BDC3C7 muted), typography, layout structure, and shared UI components (navbar, sidebar, containers) across all pages. Also remove any scaffold pages not needed by the application (e.g., login, signup, welcome pages if not part of the user flow). This task must be completed before any page-specific implementation begins.
As a user, I want a backend API to manage student records. Implement FastAPI endpoints: GET /students (retrieve all students), POST /students (add a new student with auto-incremented ID and all required fields: first name, last name, address, subject, school class, level, lesson day, lesson time start/end, hourly rate), DELETE /students/{id} (delete a student by ID). Include input validation for all fields and enforce database-level constraints to prevent overlapping lesson times for the same student on the same day. Return appropriate HTTP status codes and error messages.
As a user, I want to view the Dashboard page that serves as the main hub after login, displaying a live interactive calendar with color-coded lesson blocks per subject, hover animations revealing student details, and a conflict alert system flagging overlapping lesson times in red. Implement the Dashboard based on the existing Dashboard (v2) JSX design. The page navigates to the Students page and shows real-time schedule monitoring. Include smooth transitions and micro-interactions as described in the SRD Signature Design Concept.
As a user, I want to view the Students page that displays all student records in a dynamic table fetched from the database in real-time, with options to add a new student via a form and delete a student by ID. Implement the Students page based on the existing Students (v2) JSX design. The page is navigated to from the Dashboard and includes: a form for adding students (auto-generated ID, first name, last name, address, subject, school class, level, lesson day, lesson time start/end, hourly rate), a dynamic table with slide-in animation for new entries and fade-out for deletions, and a delete input/button. Table updates instantly without page reload.
As a user, I want the backend to prevent scheduling overlapping lesson times for the same student on the same day. Implement a database-level unique constraint (or trigger) on the student, lesson day, and lesson time (start/end) fields in MySQL. The POST /students endpoint should return a clear conflict error response when a scheduling conflict is detected. Integrate conflict detection logic into the FastAPI backend and surface conflict alerts to the frontend Dashboard page.
As a user, I want the student table on the Students page to update in real-time (within 1 second) after any add or delete operation, without requiring a page reload. Implement AJAX/Fetch API calls from the React frontend to the FastAPI backend to refresh the student table after every insert or delete action. Connect the Students page frontend to the Students CRUD API and Conflict Detection API. Ensure success animations (green checkmark fade) on add and slide-in/fade-out animations on the table are triggered correctly.
As a user, I want the Dashboard page to fetch live schedule data from the backend and display it on the interactive calendar with real-time conflict alerts. Connect the Dashboard (v2) frontend to the Students CRUD API to populate the calendar with scheduled lessons, apply color-coded subject blocks, and trigger red conflict alerts from the Conflict Detection API. Ensure hover animations and modal interactions (edit/delete) are wired to the correct API endpoints.

Saturday, July 11, 2026 — Here’s your tutoring overview for today.
Conflict Alerts
2 conflictsScheduling Conflict Detected
Anna Kowalska — Math (15:00 - 16:00 vs 15:30 - 16:30)
Overlapping with Jan Nowak (Physics) on Monday
Scheduling Conflict Detected
Tomasz Wiśniewski — Physics (10:00 - 11:00 vs 10:30 - 11:30)
Overlapping with Maria Zielińska (Math) on Wednesday
| ID | First Name | Last Name | Subject | Class | Level | Lesson Day | Lesson Time | Rate (PLN/h) | Actions |
|---|---|---|---|---|---|---|---|---|---|
| #1 | Anna | Kowalska | Math | 3A | extended | Monday | 14:00 - 15:00 | 80 PLN | |
| #2 | Jan | Nowak | Physics | 2B | basic | Tuesday | 15:00 - 16:00 | 90 PLN | |
| #3 | Marta | Wisniewska | Math | 1C | extended | Wednesday | 10:00 - 11:00 | 85 PLN | |
| #4 | Piotr | Zielinski | Chemistry | 3B | basic | Thursday | 16:00 - 17:00 | 95 PLN | |
| #5 | Katarzyna | Lewandowska | English | 2A | extended | Monday | 11:00 - 12:00 | 75 PLN | |
| #6 | Tomasz | Kaminski | Math | 1A | basic | Friday | 09:00 - 10:00 | 80 PLN | |
| #7 | Agnieszka | Wojciechowska | Physics | 3C | extended | Tuesday | 13:00 - 14:00 | 100 PLN | |
| #8 | Lukasz | Szymanski | Chemistry | 2C | basic | Wednesday | 15:30 - 16:30 | 90 PLN |
No comments yet. Be the first!