Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

🍽️ Restaurant Review Platform

Restaurant App Logo

A full-stack restaurant review application built with Spring Boot (Java) and React, featuring user authentication, role-based access control, and a modern, responsive UI.


🎯 Project Overview

This is a production-ready restaurant review platform that allows users to:

  • Browse and search restaurants by cuisine type
  • View detailed restaurant information with photos, location maps, and operating hours
  • Write and manage reviews with ratings and photos
  • Admin users can create, edit, and delete restaurants

πŸš€ Tech Stack

Backend

  • Java 21
  • Spring Boot 3.5.7
  • Spring Security
  • OAuth2 Resource Server
  • Keycloak
  • Elasticsearch
  • MapStruct
  • Lombok
  • Maven

Frontend

  • React 18
  • Vite
  • Tailwind CSS
  • Framer Motion
  • React Router
  • Axios
  • Keycloak JS
  • React Hot Toast

Infrastructure

  • Docker Compose
  • Keycloak
  • Elasticsearch + Kibana

πŸ“‹ Features

User Features

  • User registration & login with Keycloak
  • Custom login/signup UI
  • Search restaurants by name or cuisine
  • Detailed restaurant view (photos, maps, hours, reviews)
  • Create/update/delete own reviews
  • Rating + optional review photos
  • Location map integration

Admin Features

  • Create restaurants
  • Edit restaurant details
  • Delete restaurants
  • Admin role indicators

Technical Features

  • RESTful APIs
  • JWT authentication
  • File upload support
  • Proper validation & error handling
  • Responsive UI
  • Smooth animations
  • Unit tests

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ React Frontend β”‚ β”‚ (Port 3000) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ HTTP/REST + JWT β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Spring Boot Backend β”‚ β”‚ (Port 8080) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β” β”‚Elasticβ”‚ β”‚Keycloakβ”‚ β”‚File Systemβ”‚ β”‚search β”‚ β”‚(9090) β”‚ β”‚ Storage β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

yaml Copy code


πŸ“¦ Prerequisites

  • Java 21+
  • Node.js 18+
  • Docker + Docker Compose
  • Maven 3.8+

πŸ” Security

Your application includes a full production-grade security stack powered by Keycloak and Spring Security:

  • πŸ”‘ OAuth2 / OIDC authentication via Keycloak
  • πŸ” JWT-based authorization (Resource Server)
  • πŸ›‚ Role-Based Access Control (RBAC): user, admin
  • 🧰 Backend-side validation on all inputs
  • πŸ›‘οΈ Protected routes on both frontend & backend

πŸ“‘ API Endpoints

🟦 Public Endpoints

GET /api/restaurants GET /api/restaurants/{id} GET /api/restaurants/{id}/reviews GET /api/photos/{filename}

🟩 Authenticated Endpoints

POST /api/restaurants/{id}/reviews PUT /api/restaurants/{id}/reviews/{reviewId} DELETE /api/restaurants/{id}/reviews/{reviewId} POST /api/photos

πŸŸ₯ Admin Endpoints

POST /api/restaurants PUT /api/restaurants/{id} DELETE /api/restaurants/{id}


🎨 UI/UX Highlights

  • πŸ“± Fully responsive design (desktop, tablet, mobile)
  • ✨ Framer Motion animations
  • 🍞 Toast notifications for actions
  • ⭐ Interactive star rating system
  • πŸ–ΌοΈ Photo galleries for restaurants & reviews
  • πŸ—ΊοΈ Map integration for restaurant locations
  • ⚑ Smooth page transitions & loading states

πŸŽ“ Recruiter Highlights

πŸ’Ό Backend Engineering

  • Spring Boot best practices (controllers, services, repositories)
  • OAuth2, JWT, RBAC security fundamentals
  • Elasticsearch integration
  • MapStruct mapper usage
  • Layered architecture + dependency injection
  • Validation & exception handling
  • JUnit unit testing
  • Maven project structure

πŸ’» Frontend Engineering

  • Component-driven React architecture
  • REST API integration
  • Secure auth with Keycloak JS
  • React Router navigation
  • Global state via Context API
  • Tailwind CSS styling
  • Animation systems (Framer Motion)
  • Handling loading/error states gracefully

βš™οΈ DevOps & Infrastructure

  • Docker Compose multi-container environment
  • Keycloak, Elasticsearch, Kibana orchestration
  • Environment-based configuration
  • Production-ready folder structure

🀝 Contributing

Contributions, issues, and feature requests are welcome!
Feel free to fork the repo and submit a pull request.


πŸ“„ License

This project is licensed under the MIT License.


πŸ‘€ Author

Built as a portfolio project to demonstrate full-stack engineering proficiency and real-world application

About

A full-stack restaurant review application built with Spring Boot (Java) and React, featuring user authentication, role-based access control, and a modern, responsive UI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages