Sentri is a zero-budget cross-platform student companion for Army Institute of Technology.
This repository is currently split into 3 working parts:
app/: Expo React Native frontend for iPhone and Androidbackend/: Spring Boot API and timetable storage layerml-worker/: Python OCR and timetable normalization worker
Current focus:
- timetable import from screenshots
- weekly Saturday prompt to refresh the next timetable
- clean home dashboard for now/next/today
- Myspace vault for saved screenshots, notes, and links
- calorie tracking shell
- hangout shell
The app should stay simple and cheap to run:
- Expo keeps one mobile codebase for both platforms
- Spring Boot handles the main API and persistence
- Python is used only where it helps most: OCR and deterministic parsing
- HLD: docs/system-design-hld.md
- LLD: docs/system-design-lld.md
- Home AI logic: docs/ai-logic-home-timetable.md
- Myspace AI logic: docs/ai-logic-myspace.md
- Contribution workflow: CONTRIBUTING.md
Recent performance-focused work includes:
- on-demand tab mounting in the mobile shell
- shared persisted state utilities with cached storage reads
- deferred Myspace search filtering
- shared mobile HTTP client with request timeouts
- backend indexes, cacheable read paths, and read-only transactions
cd app
npm startcd backend
mvn spring-boot:runcd ml-worker
python3 -m unittest discover -s tests- The OCR worker now emits a payload shape that the Spring Boot backend can consume.
- The frontend is currently a polished shell for the main tabs and shared design system.
- The home flow now reflects the AIT reality that a fresh timetable arrives every Saturday for the next week.
- The Home upload action now opens the native image picker and creates a real timetable upload batch through Spring Boot.
- Full parser wiring still needs the backend worker step that turns the stored screenshot into parsed timetable entries.