A comprehensive calorie counting application that just works. Ravissant provides a seamless experience across mobile and web platforms for tracking your nutritional intake.
Ravissant is built as a full-stack application with a modern tech stack:
- Backend: Rust-based API and web scraping services
- Frontend: React Native Expo application for cross-platform mobile and web support
- Database: SQLite for local data persistence with support for Products and Supermarkets
├── /backend # Backend services and web scrapers (Rust)
└── /mobile # Mobile application built with Expo (React Native)
The mobile app is built with Expo and React Native, providing a native-like experience on iOS, Android, and web platforms.
- Framework: Expo with React Native
- Routing: Expo Router for file-based routing
- Styling: Tailwind CSS via NativeWind, Gluestack UI for component library
- Storage: Expo SQLite for local data, AsyncStorage for preferences
- Animation: Reanimated for smooth animations
mobile/
├── /app # Expo Router pages (file-based routing)
│ ├── (app)/ # Main app routes
│ ├── _layout.tsx # Root layout and navigation setup
│ ├── onboarding.tsx # Onboarding flow
│ ├── +not-found.tsx # 404 fallback page
│ └── /... # Other pages
├── /components # Reusable UI components
│ └── /ui # Gluestack UI component wrappers
├── /features # Feature-specific modules
│ ├── /onboard # Onboarding feature logic and components
│ └── /... # Other feature logic and components
├── /hooks # Custom React hooks
├── /types # TypeScript type definitions
├── /utils # Utility functions and helpers
├── /constants # App constants and configuration
├── /assets # Images, icons, and fonts
└── app.json # Expo configuration
- /app - Expo Router file-based routing; contains all navigable screens and layouts
- /components/ui - Reusable UI components built with Gluestack and styled with NativeWind
- /features - Feature-specific modules grouping related screens, hooks, and logic
- /hooks - Custom React hooks for state management and business logic
- /types - Centralized TypeScript type definitions for type safety across the app
- /utils - Helper functions and utility modules for common operations
- /constants - App-wide constants, configuration values, and magic strings
- /assets - Static resources including images, icons, and custom fonts
# Install dependencies
cd mobile
npm install
# Start development server
npm run start
# Run on specific platform
npm run android
npm run ios
npm run webnpm run start- Start Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS device/simulatornpm run web- Run web versionnpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checkingnpm run reset-project- Reset project to initial state
- Products - Nutritional product information including calories, macronutrients, and metadata
- Supermarkets - Supermarket locations and store information
Currently integrated supermarkets:
- Metro
Goals:
- Перекрёсток
- Пятёрочка
- ВкусВилл
- Лента
- Магнит
- Самокат
- Купер
- Яндекс Лавка
- General products database
The backend service is built in Rust and provides:
- API endpoints for product and supermarket data
- Web scraping services for supermarket product availability
- Data aggregation and caching
Built with modern tooling for reliability and performance.