This project was completed for the Human-Computer Interaction class, taught by Prof. Emanuele Panizzi, as part of the BSc in Applied Computer Science and Artificial Intelligence at Sapienza University of Rome.
CiboCompass is built with a Go backend and a React Native frontend, ensuring a responsive and seamless experience across mobile platforms.
The backend is implemented in Go, providing three primary API routes:
GET /v1/dishes/{name}: Fetches detailed information about a specific dish.POST /v1/dishes/{name}/feedback: Handles user ratings and feedback submissions.GET /v1/healthcheck: Checks the server's operational status.
Key Technologies:
- Language: Go
- Routing:
httprouter - Database:
mattn/go-sqlite3(SQLite3 driver) - Data Structure: Normalized schema with
Dishes,Ingredients,DishesToIngredients, andFeedbackstables - Personalization: Uses a
nationalityheader to provide culturally relevant recommendations
The server defaults to running on port 4000.
The frontend is a React Native application built with Expo SDK 53 and React 19, ensuring compatibility with both iOS and Android devices.
Key Features:
- Framework: React Native
- SDK: Expo SDK 53
- React Version: React 19
- Local Data Persistence:
AsyncStoragefor storing user preferences and rating history - Communication: JSON over HTTP with the Go backend
User Interface Highlights:
- Nationality setup modal on first launch
- Real-time dish name search
- Expandable ingredient lists in tabular format
- Interactive star-based rating system
- Dynamic cultural ratings aggregated from similar backgrounds
- Dietary badges (Vegetarian, Vegan, Halal, Kosher, Gluten-Free) based on ingredient analysis
- Smooth animations, robust error handling, and scroll state persistence
- Auto-completion in the search bar
- "Recent Searches" section
- Total number of ratings for each dish
- Comment section for qualitative feedback (requires persistent user sessions on backend)

