
It was my first Vue/Nuxt project ever that I made to learn for my recently joined company at the time for my first time as official web dev. The naive idea was to build the βStrava for foodβ, meaning bringing social interactions to recipe saving and sharing.
π Key Features
- π Secure Authentication: User registration, login, and profile management with PocketBase
- π Recipe Management: Create, edit, delete, and share detailed recipes with step-by-step instructions
- π½οΈ Dish Discovery: Browse and explore dishes with rich media support
- β Rating System: Comprehensive rating and review functionality for recipes and dishes
- β€οΈ Social Interactions: Like, comment, and engage with community content
- π Advanced Search: Powerful search capabilities across recipes, dishes, and users
- π± Responsive Design: Mobile-first approach with adaptive layouts
- π Recipe Import: Automated scraping from popular culinary sites (750g, Marmiton, Journal des Femmes, etc.)
- β‘ Real-Time Updates: Live notifications and dynamic content updates
- π¨ Modern UI: Sleek interface built with Nuxt UI and DaisyUI components
ποΈ Architecture Highlights
Frontend
- Nuxt 3: Leverages server-side rendering, static generation, and API routes for optimal performance
- Vue 3 Composition API: Modern reactive programming with TypeScript for type safety
- Nuxt UI + DaisyUI: Consistent, accessible component library with Tailwind CSS
- XState Machines: Finite state machines for complex recipe creation workflows
Backend
- PocketBase: Open-source backend-as-a-service providing real-time database, authentication, and file storage
- Custom API Routes: Server-side endpoints for recipe scraping and data processing
Development & Deployment
- TypeScript: End-to-end type safety across the application
- Bun: High-performance JavaScript runtime for development and building
- Docker: Containerized deployment for consistent environments