How hanzo-hatake/project-recommender works
This is a student project-topic recommender with student and administrator views. Students enter interests and constraints, request ranked topic matches, then inspect, bookmark, dismiss, or accept a topic; analytics and administration provide separate supporting workflows. The backend recommendation handler delegates matching to a service that uses embeddings and topic data. The frontend API client and several backend modules are present in the tree but were not sampled, so uncertain request wiring and internal behavior are not asserted.
Main entry points: App.tsx Route and access control · recommender.rs Recommendation service · api.ts API client · main.rs HTTP server
Components 18
Web interface
- Route and access control
frontend/src/App.tsx - Topic matching UI
frontend/src/pages/RecommendationsPage.tsx - Student dashboard
frontend/src/pages/DashboardPage.tsx - Analytics view
frontend/src/pages/AnalyticsPage.tsx - Admin console
frontend/src/pages/AdminPage.tsx - API client
frontend/src/services/api.ts - Role lookup
frontend/src/store/useRole.ts
API workflows
- HTTP server
backend/src/main.rs - Recommendation endpoint
backend/src/handlers/recommendations.rs - Topic endpoints
backend/src/handlers/topics.rs - Admin endpoints
backend/src/handlers/admin.rs
Recommendation engine
- Recommendation service
backend/src/services/recommender.rs - Text embeddings
backend/src/services/embeddings.rs - Text processing
backend/src/services/nlp.rs
Persistent data
- PostgreSQL
backend/src/db/connection.rs
Other components
- Student
- Administrator
- Clerk identity
Connections 22
- Student → Route and access control: uses
- Administrator → Route and access control: uses
- Route and access control → Topic matching UI: routes
- Route and access control → Student dashboard: routes
- Route and access control → Analytics view: routes
- Route and access control → Admin console: routes
- Route and access control → Role lookup: checks role
- Role lookup → API client: requests role
- Role lookup → Clerk identity: reads identity
- HTTP server → Recommendation endpoint: registers
- HTTP server → Topic endpoints: registers
- HTTP server → Admin endpoints: registers
- Recommendation endpoint → Recommendation service: requests matches
- Recommendation service → Text embeddings: encodes text
- Recommendation service → Text processing: processes text
- Recommendation service → PostgreSQL: reads topics
- Recommendation endpoint → Student: returns matches
- Admin endpoints → PostgreSQL: reads and updates
- Topic endpoints → PostgreSQL: accesses topics
- Topic matching UI → API client: requests recommendations
- Analytics view → API client: requests analytics
- Admin console → API client: requests admin data