🍽️

Eat N Treat

Restaurant & Workshop Management System

Overview

Eat N Treat is a comprehensive full-stack web application designed to streamline restaurant and workshop management operations. The system provides dual functionality: a customer-facing booking platform for restaurant reservations and a robust backend user management system (UMS) for administrative control.

Built with enterprise-grade technologies, this application demonstrates proficiency in modern web development practices including JWT-based authentication, RESTful API design, responsive UI, and secure database operations.

Technologies Used

Frontend

  • • Angular 20.x - Modern SPA framework
  • • TypeScript - Type-safe development
  • • RxJS - Reactive programming
  • • Angular Material - UI components
  • • Angular Forms - Reactive forms

Backend

  • • Java 17 - Backend language
  • • Spring Boot 3.5.3 - Enterprise framework
  • • Spring Security - Authentication & authorization
  • • JWT (JSON Web Tokens) - Secure auth
  • • Spring Data JPA - ORM layer
  • • PostgreSQL - Relational database
  • • Maven - Dependency management

Key Features

Customer Booking System

Intuitive restaurant reservation platform allowing customers to book tables, select time slots, and manage their reservations with real-time availability updates.

User Management System (UMS)

Comprehensive admin dashboard for managing users, roles, and permissions with full CRUD operations. Includes user authentication, role-based access control (RBAC), and audit logging.

JWT Authentication

Secure stateless authentication using JSON Web Tokens with token refresh mechanism, password encryption using BCrypt, and protected API endpoints.

Workshop Management

Specialized module for managing workshop schedules, participant registrations, resource allocation, and automated notifications for upcoming events.

RESTful API Architecture

Well-structured REST APIs with proper HTTP methods, status codes, error handling, and API documentation. Includes validation, pagination, and filtering capabilities.

System Architecture

Frontend Architecture

• Component-based architecture with lazy loading

• Service layer for API communication

• Guards for route protection

• Interceptors for JWT token handling

Backend Architecture

• Layered architecture (Controller → Service → Repository)

• Entity-DTO pattern for data transfer

• Security filters for authentication

• JPA entities with proper relationships

Technical Highlights

Security Features

BCrypt password hashing, CORS configuration, CSRF protection, and SQL injection prevention

Database Design

Normalized schema with proper indexing, foreign key constraints, and optimized queries

API Design

RESTful endpoints with proper HTTP methods, versioning support, and comprehensive error handling

Validation

Server-side validation with Bean Validation API and client-side Angular form validators

Challenges & Solutions

Challenge: JWT Token Management

Handling token expiration and refresh across multiple Angular applications while maintaining security.

Solution: Implemented HTTP interceptors in Angular to automatically attach tokens to requests and handle 401 responses with token refresh logic.

Challenge: Real-time Booking Conflicts

Preventing double bookings when multiple users attempt to reserve the same time slot simultaneously.

Solution: Implemented database-level constraints and optimistic locking with version control to handle concurrent booking requests.

Challenge: Role-Based Access Control

Creating a flexible permission system that works across both frontend and backend.

Solution: Developed a hierarchical role system using Spring Security with method-level security annotations and Angular route guards.

Project Outcome

Eat N Treat successfully demonstrates enterprise-level full-stack development capabilities. The application showcases proficiency in Angular frontend development, Spring Boot backend architecture, PostgreSQL database design, and modern authentication mechanisms.

2
Angular Applications
20+
REST API Endpoints
100%
Type-Safe Code