How utdnebula/utd-notebook works
UTD Notebook is a student-facing course and notes application: users discover courses and notes, create or manage notes, and use account and moderation features. The graph includes the documented search, notes, account, and moderation branches, plus the tRPC/API layer and persistence integrations. Sampled code confirms the tRPC entry point, authentication handler, autocomplete re-exports, and note-file upload/storage flow; wiring among unsampled pages and routers is left unspecified.
Main entry points: routers/storage.ts Storage procedures · useUploadToUploadURL.ts File upload hook · server/storage.ts Nebula storage client · CreateNotePage.tsx Create note
Components 27
Search and discovery
- Course search
src/systems/search/pages/HomePage.tsx - Search query model
src/systems/search/utils/SearchQuery.tsx - Autocomplete API
src/systems/search/api/autocomplete.ts - Course-name API
src/systems/search/api/courseNameAutocomplete.ts
Notes
- Notes pages
src/systems/notes/pages/NotesPage.tsx - Create note
src/systems/notes/pages/CreateNotePage.tsx - Note forms
src/systems/notes/forms/CreateNoteForm.tsx - File upload hook
src/systems/notes/hooks/useUploadToUploadURL.ts - Note file API
src/systems/notes/api/file.ts
Accounts
- Authentication page
src/systems/account/pages/AuthPage.tsx - Profiles
src/systems/account/pages/ProfilePage.tsx - Account settings
src/systems/account/pages/SettingsPage.tsx - Onboarding
src/systems/account/pages/GetStartedPage.tsx
Moderation
- Report submission
src/systems/moderation/pages/ReportPage.tsx - Admin review
src/systems/moderation/pages/AdminPage.tsx
API and persistence
- Autocomplete route
src/app/api/autocomplete/route.ts - Course-name route
src/app/api/courseNameAutocomplete/route.ts - File route
src/app/api/files/[id]/route.ts - Authentication route
src/app/api/auth/[...all]/route.ts - Auth service
src/server/auth.ts - tRPC endpoint
src/app/api/trpc/[trpc]/route.ts - Application router
src/server/api/root.ts - Storage procedures
src/server/api/routers/storage.ts - PostgreSQL database
src/server/db/index.ts - Nebula storage client
src/server/storage.ts
Other components
- Student
- Nebula storage API
Connections 22
- Student → Course search: searches courses
- Student → Notes pages: browses notes
- Student → Create note: creates note
- Student → Authentication page: signs in
- Student → Profiles: views profile
- Student → Account settings: manages account
- Student → Onboarding: completes onboarding
- Student → Report submission: submits report
- Student → Admin review: reviews reports
- Autocomplete route → Autocomplete API: re-exports
- Course-name route → Course-name API: re-exports
- Create note → Note forms: renders
- Note forms → File upload hook: uses
- File route → Note file API: re-exports
- Authentication route → Auth service: dispatches
- tRPC endpoint → Application router: dispatches
- Storage procedures → PostgreSQL database: checks file ownership
- Storage procedures → Nebula storage client: requests upload URL
- Storage procedures → Nebula storage client: gets or deletes file
- File upload hook → Storage procedures: requests upload URL
- Nebula storage client → Nebula storage API: calls storage API
- File upload hook → Nebula storage API: uploads file