Zoodle is a cross-platform food application designed to provide a seamless experience for recipe management and meal planning across mobile (Android) and web platforms.
Zoodle helps users:
- Store and organize recipes with detailed instructions and images
- Search and filter recipes by name, ingredients, categories, and tags
- Plan weekly meals with lunch and dinner slots
- Access their data from both mobile and web platforms
- Work offline on mobile devices with automatic synchronization
- Java 17 with Spring Boot 3.2
- PostgreSQL database
- JWT authentication
- Flyway database migrations
- Maven build tool
- React 18 with TypeScript
- Vite build tool
- React Router for navigation
- TanStack Query for data fetching
- Axios for HTTP requests
- React Native with Expo
- TypeScript
- React Navigation for navigation
- AsyncStorage for offline data
- NetInfo for connectivity detection
- Docker containerization
- Docker Compose orchestration
- Deployable on NAS (Network Attached Storage)
Zoodle/
├── backend/ # Spring Boot backend service
│ ├── src/
│ │ ├── main/java/com/zoodle/
│ │ └── main/resources/
│ ├── pom.xml
│ ├── Dockerfile
│ └── README.md
│
├── frontend-web/ # React web application
│ ├── src/
│ ├── public/
│ ├── package.json
│ ├── vite.config.ts
│ └── README.md
│
├── frontend-mobile/ # React Native mobile app
│ ├── src/
│ ├── assets/
│ ├── App.tsx
│ ├── app.json
│ ├── package.json
│ └── README.md
│
├── docs/ # Project documentation
│ ├── vision.md
│ ├── requirements.md
│ ├── use-cases.md
│ └── technology-stack.md
│
├── docker-compose.yml # Docker services configuration
├── .env.example # Environment variables template
└── README.md # This file
- Java 17+ (for backend development)
- Maven 3.6+ (for backend builds)
- Node.js 18+ (for frontend development)
- Docker & Docker Compose (for deployment)
- PostgreSQL 14+ (for local database development)
-
Clone the repository
cd Zoodle -
Configure environment variables
cp .env.example .env # Edit .env with your configuration -
Backend setup
cd backend mvn clean install -
Web frontend setup
cd frontend-web npm install -
Mobile frontend setup
cd frontend-mobile npm install
cd backend
mvn spring-boot:runBackend will be available at http://localhost:8080
cd frontend-web
npm run devWeb app will be available at http://localhost:3000
cd frontend-mobile
npm startThen:
- Press
afor Android emulator - Or scan QR code with Expo Go app on physical device
-
Build and start all services
docker-compose up -d
-
Stop services
docker-compose down
-
View logs
docker-compose logs -f
When running with Docker Compose:
- Backend API:
http://localhost:8080 - PostgreSQL:
localhost:5432 - Web Frontend: Build and serve separately or through backend
- Ensure Docker is installed on your NAS
- Copy the project to your NAS
- Configure
.envfile with production settings - Run
docker-compose up -d - Access the application via your NAS IP address
- Create, edit, and delete recipes
- Add multiple images to recipes
- Organize ingredients into groups (sauce, main, side, etc.)
- Assign categories and tags to recipes
- Search recipes by name or ingredients
- Filter recipes by categories and tags
- Get random recipe suggestions
- Plan meals for a full week
- Schedule lunch and dinner for each day
- View weekly meal overview
- Copy meals from previous weeks
- View past meal plans
- User registration and authentication
- Isolated data per user
- JWT-based session management
- Consistent experience across web and mobile
- Offline support on mobile with data synchronization
- Responsive design for various screen sizes
Detailed documentation is available in the docs/ directory:
- Project Vision - Overview and goals
- Requirements - Functional and non-functional requirements
- Use Cases - Detailed use case scenarios
- Technology Stack - Technology decisions and rationale
Component-specific documentation:
API documentation will be available through Swagger/OpenAPI (to be configured).
Database schema changes are managed through Flyway migrations in backend/src/main/resources/db/migration/.
This is a personal project. For questions or suggestions, please refer to the documentation.
Private project - All rights reserved.
Current version: 0.1.0 (Initial setup)