Skip to content

bmar1/Plated

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

150 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plated Icon Plated

A full-stack application aimed to help you save food, tighten your budget, and plan interesting, tasteful meals from around the world!

Build Status Spring Boot React License


Live Demo

Try it now: Plated


Demo Photos

Menu Cooking Steps

Objective

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!


⚙️ Features

Grocery Tracking / Planning

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.

Meal Planning

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.

Security

Plated uses secure, role-based access control throughout the app, enforcing security through JWT tokens.

Analytics

Know how much you save compared to the average Canadian, at any time

Ease of use

We offer an easy UI to navigate through to help you day-by-day to cook, and plan your meals!

Dashboard



Architecture

Plated uses a containerized service architecture deployed on AWS, ensuring scalability and reliability.

Architecture Diagram

How it works

  • NGINX acts as a reverse proxy, routing incoming HTTPS requests from plated-app.online to 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.


Quick Start with Docker (Recommended)

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

Docker Commands

# Start services 
docker-compose up -d

# Stop services and remove volumes (fresh start)
docker-compose down -v

# Rebuild after code changes
docker-compose up --build

💻 To run it locally (note that this will only run the frontend):

git clone https://github.com/bmar1/Plated.git
npm install
npm start

📦 Project Structure

Plated/
├── 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

Tech Stack

Backend

  • 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

Frontend

  • React 18 - Modern UI framework
  • Responsive Design - Mobile-first approach

Infrastructure

  • Docker & Docker Compose - Containerized development and deployment
  • AWS EC2 - Application hosting
  • GitHub Actions - Continuous deployment
  • Vercel - Frontend preview environment

🤝 Contributing

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!


🙏 Acknowledgments

  • TheMealDB for recipe data
  • Walmart API for grocery pricing
  • Nutritionix API for calories/macros

Built with ❤️ to make meal planning simple and budget-friendly

About

A full-stack application aimed to help in saving food, tightening your budget, all while planning interesting, tasteful meals from around the world!

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages