ERIS Mobile App
Easy Recipe Intelligent System
ERIS is a cross-platform mobile application that helps household members plan and manage their food inventory. It integrates meal calendar schedules, barcode grocery scans, automatic stock tracking, and ingredient-based recipes recommendation.

infoAuthentication Welcome
The authentication landing portal for ERIS supporting direct email log-in, registration, and guest mode authorization. Also features internationalization dropdown supporting 22 languages.
Challenge, ownership, decisions, result
A household needs one app to plan meals, track what food it actually has, and turn that into a shopping list — for both people and pets — across a group of family members editing the same data from different phones.
- The React Native / Expo app end-to-end, plus the Express + Prisma API it talks to.
- The barcode-scanning inventory flow (expo-camera + local SQLite lookups) and the meal-calendar-to-shopping-list logic.
- Real-time multi-user sync across household members via Socket.io, and the RO/EN i18next localization (22 UI languages).
- check_smallA working cross-platform app covering the full loop: plan a meal, scan groceries into inventory, get a generated shopping list, and see stock update automatically.
- check_smallMultiple household members stay in sync on shared inventory and calendars in real time, with pets and people tracked on separate calendars.
- check_smallThe UI ships in 22 languages from day one, on top of a bilingual RO/EN data model.
Local SQLite lookup before a network round-trip
A scanned barcode resolves against a localized SQLite table on-device first, so adding an item to inventory feels instant instead of waiting on a server round-trip for every scan.
Socket.io for household state, not polling
Multiple household members can edit the same inventory or calendar concurrently; a WebSocket channel pushes changes to every connected member's device instead of each client polling the API on an interval.
Redux Persist for offline-first state
Local stores are hydrated from AsyncStorage on launch, so the calendar and inventory remain usable without a live connection and reconcile once the app is back online.
Denormalize bilingual names instead of a translation table
Product and recipe names store RO/EN fields directly on the document rather than joining a separate translation table, keeping the Prisma models and lookup queries simple for the size of the catalog.
System Features
ERIS integrates client-side barcode scanning, automated shopping checklists, and multi-user calendars.
Barcode Scanning
Real-time shopping scan engine using expo-camera, looking up barcodes in localized SQLite and adding items instantly into inventory models.
Multi-User Sync
Shared household structures with real-time push synchronization using Socket.io, allowing multiple family members to edit inventories concurrently.
Meal Notifications
Background scheduling notifications matching preparation times, reminding users to start cooking at selected hours.
i18n Translation
Bilingual database models supporting RO/EN name structures, alongside client i18next localizations covering 22 UI languages.
Hybrid Native App Architecture
The application is built on top of Expo SDK, coordinating Redux local stores with background synchronization workers, linked to MongoDB database layers.
phone_androidFrontend Framework
- • Expo & React Native: Dev client builds supporting native modules on iOS and Android.
- • Redux Toolkit & Persist: Hydrated AsyncStorage memory layers maintaining local offline caching.
- • native-base components: Consistent layout styling sheets with custom compatibility shims.
dnsAPI & Real-time Services
- • Express & Prisma: Structured server REST routes running Prisma ORM data bindings.
- • Socket.io Streams: WebSockets channels enabling instant household sync on grocery actions.
- • VAPID Push Alerts: Scheduled background service workers triggering push notifications.
databaseDatabase Models
- • Prisma Schema: Models indexing users, tokens, households, products, recipes, and lookup keys.
- • Denormalized JSON: Storing nested objects as documents to manage RO/EN name structures.
- • Prisma sqlite integration: Local server integrations supporting mock sqlite seeding.