PlateMate - Recipe Sharing Social Website
Date
March 2025 - April 2025
Service
Object Oriented Programming
Client
University Project
Stack

Introduction
Managing and sharing recipes online often feels clunky, outdated, or overly complicated. Many existing platforms lack secure user management, scalable APIs, or a focused social experience around food. PlateMate was developed to rethink recipe management—not just as a database, but as a minimalist social platform for food lovers.

The Challenge
The goal was to build a full-stack recipe management system that allows users to:
Browse and filter recipes
Create and update their own entries
Favorite recipes they like
Securely register, login, and manage sessions
Share and discover new dishes through a feed-like structure
On top of functionality, we aimed to implement:
A clear, modular backend structure (OOP principles)
Secure authentication using JWT
A clean frontend interface that communicates via REST API
Scalability and maintainability using modern frameworks

The Solution
Backend (Java + Spring Boot + MongoDB)
Layered architecture (Controller → Service → Repository) following SOLID principles
User and Recipe models stored in MongoDB using document-based schema
Spring Security + JWT: authenticated access to protected endpoints
DTOs and Mappers for clean separation between internal data and exposed API
Global exception handling with descriptive error responses
Pagination, filtering, and CRUD endpoints for recipes
Favorites system per user (many-to-many logic)
Frontend (React or your tech stack, optional)
Minimal UI to create, read, and browse recipes
Auth-integrated user flow (register/login/logout with JWT storage)
Recipe feed with filtering by name, category, and cooking time

Key Features
🔐 JWT-based Authentication: Secure access to protected routes and user data
🗂️ MongoDB Integration: Flexible storage of nested recipe data and user relations
💾 Favorites System: Users can like/save recipes and view personal collections
⚙️ Modular OOP Design: Service/repo interfaces, clean separation of concerns
🧪 Global Exception Handling: Centralized error management for cleaner UX

Conclusion
PlateMate isn’t just a CRUD project—it’s a testbed for building production-grade backend systems with security, scalability, and user experience in mind. It taught us how to think beyond features and into system design, modular development, and clean, testable code.

