How khanhlc2005/unicompare works
UniCompare is a desktop university search, comparison, watchlist, and recommendation application. Users search and filter university records, inspect details, save or select schools, then compare up to five; alternatively, they enter a profile to receive rule-scored recommendations and optional AI explanations/chat. Admins manage university records. The main window selects MongoDB or an in-memory fake repository, with sample data supporting offline use. Edges reflect README capability descriptions and sampled source; several UI pages and service implementations were not sampled, so uncertain internal calls are omitted.
Main entry points: university_service.py University search · recommend_service.py Rule scoring and AI · mongo_repo.py Mongo university repository · fake_repo.py Sample-data repository
Components 22
Desktop interface
- Application entry
main.py - App shell
views/app_shell.py - Search page
views/components/search_page.py - University details
views/components/detail_page.py - Watchlist page
views/components/watchlist_page.py - Compare page
views/components/compare_page.py - Recommendations and chat
views/components/chatbot_page.py - Admin screen
views/admin_view.py
Application services
- University search
services/university_service.py - Compare selection
services/compare_service.py - Watchlist operations
services/watchlist_service.py - Profile wizard
services/wizard_service.py - Rule scoring and AI
services/recommend_service.py
Data repositories
- Mongo university repository
repositories/mongo_repo.py - Sample-data repository
repositories/fake_repo.py - Watchlist repository
repositories/watchlist_repo.py - AI response cache
repositories/ai_cache_repo.py - Sample university data
data/seed_data.json
External systems
- MongoDB
- Gemini API
Other components
- Student
- Administrator
Connections 30
- Student → App shell: uses
- Administrator → Admin screen: manages records
- Application entry → App shell: starts
- App shell → Mongo university repository: selects when available
- App shell → Sample-data repository: falls back to
- Sample-data repository → Sample university data: loads
- Search page → University search: searches and filters
- University search → Mongo university repository: queries
- University search → Sample-data repository: queries
- Search page → Compare selection: selects schools
- University details → University search: loads details
- University details → Watchlist operations: saves school
- Watchlist page → Watchlist operations: reads saved schools
- Watchlist page → University search: loads school data
- Watchlist page → Compare selection: selects schools
- Compare page → Compare selection: reads selections
- Compare page → University search: loads school data
- Watchlist operations → Watchlist repository: reads and writes
- Watchlist repository → MongoDB: persists watchlist
- Recommendations and chat → Profile wizard: validates profile
- Recommendations and chat → Rule scoring and AI: requests recommendations
- Rule scoring and AI → Mongo university repository: gets universities
- Rule scoring and AI → Sample-data repository: gets universities
- Rule scoring and AI → AI response cache: checks and stores
- AI response cache → MongoDB: persists cache
- Rule scoring and AI → Gemini API: requests explanations
- Recommendations and chat → Gemini API: sends chat
- Admin screen → Mongo university repository: adds edits deletes
- Admin screen → Sample-data repository: adds edits deletes
- Mongo university repository → MongoDB: reads and writes