A full-stack application aimed to help you save food, tighten your budget, and plan interesting, tasteful meals from around the world!
Try it now: Plated
| Menu | Cooking Steps |
|---|---|
|
|
This project, plated aims to serve those who are on a budget or want help tracking what they eat — from calories to trying new foods — all in a way that's easy to manage through the app, so you can spend more time doing what's important to you!
This application, based on your requirements and use cases, adapts to help you find interesting meals while providing grocery prices in your local area via Walmart's data.
Need help tracking how many calories you eat or what exactly you're eating? Say no more! Plated easily tracks your weekly meals in a clean, organized format, to make sure you never overeat.
Plated uses secure, role-based access control throughout the app, enforcing security through JWT tokens.
Know how much you save compared to the average Canadian, at any time
We offer an easy UI to navigate through to help you day-by-day to cook, and plan your meals!
Plated uses a containerized service architecture deployed on AWS, ensuring scalability and reliability.
- NGINX acts as a reverse proxy, routing incoming HTTPS requests from
plated-app.onlineto the appropriate containers, based on route calls - Frontend Container (React) serves the user interface on port 80
- Backend Container (Spring Boot) handles API requests on port 8080, processing business logic and authentication
- PostgreSQL Database runs on AWS RDS, providing reliable data persistence separate from the application containers
- Docker containerizes both frontend and backend in 1 network, making deployment consistent across environments
- EC2 hosts the entire application stack, with all containers running within a single instance for cost-effective production deployment
This architecture allows for easy local development with Docker Compose while maintaining production-grade deployment on AWS infrastructure, with this in mind, it handles scale well, and can be adjusted.
The fastest way to get Plated running locally:
# Clone the repository
git clone https://github.com/bmar1/Plated.git
cd Plated
# Create your environment file
cp .env.example .env
# Edit .env with your API keys and configuration
# Build and start all services
docker-compose up --build
# Access the application
# Frontend: http://localhost:3000
# Backend API: http://localhost:8080# Start services
docker-compose up -d
# Stop services and remove volumes (fresh start)
docker-compose down -v
# Rebuild after code changes
docker-compose up --buildgit clone https://github.com/bmar1/Plated.git
npm install
npm startPlated/
├── src/
│ ├── backend/ # Spring Boot application
│ │ ├── controllers/ # REST API endpoints
│ │ ├── models/ # Database entities
│ │ ├── services/ # Business logic
│ │ └── config/ # Security & app configuration
│ └── frontend/ # React application
│ ├── public/ # Static assets
│ └── src/ # React components
├── docker-compose.yml # Docker services configuration
├── Dockerfile # Container image definition
├── .env.example # Environment template
└── README.md # This file
- Spring Boot 3.5 - Robust Java framework for RESTful APIs
- PostgreSQL - Reliable relational database
- AWS RDS - Managed database hosting (production)
- JWT Authentication - Secure user sessions
- React 18 - Modern UI framework
- Responsive Design - Mobile-first approach
- Docker & Docker Compose - Containerized development and deployment
- AWS EC2 - Application hosting
- GitHub Actions - Continuous deployment
- Vercel - Frontend preview environment
If you'd like to contribute, reach out to me on any social media and let's talk!
Otherwise, feel free to leave some issues or pull requests!
- TheMealDB for recipe data
- Walmart API for grocery pricing
- Nutritionix API for calories/macros
Built with ❤️ to make meal planning simple and budget-friendly



