How inaz-in/home-work-system works
Homework is a group schedule and homework tracker: users sign in, browse schedule occurrences, share homework comments/files while keeping completion personal, and can also manage plans and group information. The backend serves these features from PostgreSQL and synchronizes schedules with BMSTU’s public API. The README documents the major capabilities; route-level wiring beyond the supplied excerpts is represented only where the route tree or documentation supports it.
Main entry points: client.ts API client · pool.ts Database pool · App.tsx App navigation · schedule.ts Schedule API
Components 27
Web client
- App navigation
frontend/src/App.tsx - Sign-in form
frontend/src/components/AuthForm.tsx - User session
frontend/src/context/UserContext.tsx - Schedule views
frontend/src/pages/SchedulePage.tsx - Subject view
frontend/src/pages/SubjectsPage.tsx - Birthdays view
frontend/src/pages/BirthdaysPage.tsx - Personal plans
frontend/src/pages/PlansPage.tsx - Admin console
frontend/src/pages/AdminPage.tsx - User settings
frontend/src/pages/SettingsPage.tsx - API client
frontend/src/api/client.ts
Application API
- Authentication
backend/src/routes/auth.ts - Schedule API
backend/src/routes/schedule.ts - Homework API
backend/src/routes/homework.ts - Calendar overview
backend/src/routes/overview.ts - Plans API
backend/src/routes/plans.ts - Birthdays API
backend/src/routes/birthdays.ts - User management
backend/src/routes/users.ts - Admin operations
backend/src/routes/admin.ts - Semester settings
backend/src/routes/semesters.ts
Schedule integration
- Occurrence resolver
backend/src/services/scheduleResolver.ts - Subgroup filtering
backend/src/services/subgroup.ts - Schedule sync
backend/src/services/bmstuSync.ts
Persistent data
- PostgreSQL
- Database pool
backend/src/db/pool.ts
Other components
- Group member
- Administrator
- BMSTU schedule API
Connections 41
- Group member → App navigation: uses
- Administrator → App navigation: uses
- App navigation → Sign-in form: shows
- App navigation → Schedule views: selects
- App navigation → Subject view: selects
- App navigation → Birthdays view: selects
- App navigation → Personal plans: selects
- App navigation → Admin console: selects
- App navigation → User settings: selects
- Sign-in form → API client: submits credentials
- User session → API client: validates session
- Schedule views → API client: loads schedule
- Subject view → API client: loads subjects
- Birthdays view → API client: loads birthdays
- Personal plans → API client: manages plans
- Admin console → API client: manages group
- User settings → API client: updates profile
- API client → Authentication: HTTP requests
- API client → Schedule API: HTTP requests
- API client → Homework API: HTTP requests
- API client → Calendar overview: HTTP requests
- API client → Plans API: HTTP requests
- API client → Birthdays API: HTTP requests
- API client → User management: HTTP requests
- API client → Admin operations: HTTP requests
- API client → Semester settings: HTTP requests
- Schedule API → Occurrence resolver: resolves occurrences
- Homework API → Occurrence resolver: resolves occurrences
- Occurrence resolver → Subgroup filtering: filters by subgroup
- Schedule sync → BMSTU schedule API: fetches schedule
- Schedule sync → Database pool: updates schedule
- Authentication → Database pool: reads/writes users
- Schedule API → Database pool: reads schedule
- Homework API → Database pool: stores homework
- Calendar overview → Database pool: loads overview
- Plans API → Database pool: stores plans
- Birthdays API → Database pool: reads birthdays
- User management → Database pool: manages users
- Admin operations → Database pool: manages settings
- Semester settings → Database pool: reads/writes semesters
- Database pool → PostgreSQL: queries