Restok
A bilingual recipe management web application with automatic importing from 400+ websites, meal planning, shopping lists, pantry tracking, and family sharing.
// Overview
Restok is a comprehensive bilingual recipe management platform (English/Romanian) that centralizes all aspects of home cooking - from recipe discovery to meal planning to grocery shopping.
Import recipes automatically from 400+ cooking websites, get instant translations between languages, plan your weekly meals, and generate smart shopping lists based on what you already have in your pantry.
// Architecture
A decoupled frontend/backend architecture with Next.js handling SSR and client routing while FastAPI provides a high-performance Python API. Real-time sync between family members uses WebSocket connections for instant shopping list and meal plan updates.
// Recipe Management
- Import recipes from major cooking sites via recipe-scrapers
- Automatic English-Romanian translation using LibreTranslate
- Manual recipe creation with ingredients and instructions
- Collections for organizing recipes by category
- Favorites and ratings system
- Smart filtering by category, cook time, and rating
// Planning & Shopping
- Weekly meal planner with drag-and-drop interface
- Automatic shopping list generation from meal plans
- Multiple shopping lists with real-time sync
- Smart suggestions based on pantry inventory
- Category grouping with custom store layouts
// Inventory & Collaboration
- Pantry tracking with storage locations (fridge, freezer, pantry)
- Expiration alerts for items expiring within 7 days
- Price tracking across stores with trend visualization
- Family creation and member invitations
- Shared recipes, meal plans, and shopping lists
- Real-time synchronization across all family members
// Challenges & Solutions
Challenge: Importing recipes from 400+ different websites with inconsistent HTML structures and schema formats.
Solution: Leveraged the recipe-scrapers Python library with custom fallback extractors. When structured data (JSON-LD, Microdata) is missing, the system uses heuristic parsing of common recipe page patterns to extract ingredients and instructions.
Challenge: Generating accurate, natural-sounding translations between English and Romanian for cooking-specific terminology.
Solution: Used LibreTranslate with a custom glossary of cooking terms that override generic translations. Ingredient quantities and units are parsed separately and converted to local measurement standards rather than translated literally.
// What I'd Improve
- Add nutritional information calculation per recipe and meal plan
- Implement OCR for importing handwritten family recipes
- Add voice-controlled cooking mode for hands-free instructions
- Build integration with grocery delivery services