- One team member dropped the course, so we redistributed the work among the three remaining members
- 📌 Project Overview
- ✨ Features
- 🚀 Tech Stack
- 🏗️ Architecture Design
- 📝 Project Journal
- 🧰 Getting Started
▶️ Running the Application- 🚀 Deployment
- 🔄 CI/CD
- 🤝 Contributing
- 💡 XP Core Values
SYNERGY, also known as BookTable, is a comprehensive online restaurant reservation platform for customers, restaurant managers, and administrators. It features location-based search, real-time booking, user profiles, and a review system to enhance the dining experience.
- AWS Cognito with OTP-based login and role-based access via Cognito Groups
- Location-based search (MySQL spatial + Google Maps API)
- View locations on Google Maps
- Nearby restaurant suggestions
- User can see any restaurant number of bookings on a particular day
- Booking and cancellation with real-time conflict detection
- Email confirmations via AWS SES and Thymeleaf templates
- Personalized home & profile pages
- View restaurants and available time slots
- Add/update restaurant details
- Upload images via AWS S3 pre-signed URLs
- View and manage dashboard
- Admin dashboard with analytics
- Approve/reject/remove restaurants
- Users can submit & view reviews and ratings
- Frontend: Next.js, React, Material-UI
- Backend: Spring Boot (Java 17), Gradle
- Database: MySQL
- Authentication: AWS Cognito, Spring Security, JWTs
- Cloud Services:
- AWS Elastic Beanstalk, EC2, Docker, ECR
- AWS S3, SES, Lambda
- APIs: Google Maps GeoAPI
- RESTful API architecture
- JWTs stored in HTTP-only cookies
- Role-based access (CUSTOMER, MANAGER, ADMIN)
- Modular backend layers: controllers, services, repositories
- Component-based frontend with Next.js
- Deployed using Docker containers on AWS Elastic Beanstalk
- Contributions of Each Team Member
- Deployment_Diagram
- Design Decisions Document
- ER Diagram
- Scrum Report
- XP Values
- Figma Design
- Confluence Docs
- Node.js (v18.x or v20.x)
- JDK 17
- Gradle (uses wrapper)
- Docker
- AWS CLI (with configured credentials)
- MySQL instance
Environment Variables
Backend: (application.properties
):
DB_URL, DB_USERNAME, DB_PASSWORD
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION
SPRING_SECURITY_OAUTH2_JWT_ISSUER_URI
AWS_COGNITO_USER_POOL_ID, AWS_COGNITO_CLIENT_ID, AWS_COGNITO_CLIENT_SECRET
AWS_COGNITO_REGION, AWS_S3_BUCKET, GOOGLE_API_KEY, APP_BASE_URL, AWS_SES_FROM_EMAIL
Frontend: (.env.local
):
NEXT_PUBLIC_BASE_URL, NEXT_PUBLIC_PLACES_API_KEY
cd backend/bookTable
chmod +x ./gradlew
./gradlew clean build
./gradlew bootRun
cd open-table-frontend
npm install
npm run dev
Backend API: http://localhost:8080 Frontend UI: http://localhost:3000
- Backend: Dockerized, pushed to ECR, deployed via Elastic Beanstalk
- Frontend: Deployed to FrontEnd
- CI/CD with GitHub Actions
- backend-ci-cd.yml: builds, tests, pushes to ECR, deploys to Elastic Beanstalk
- codeql.yml: scans Java/Kotlin codebase
In-Repo Docs:
Team Roles & Contributions
Design Decisions
XP Core Values
Contributions of Each Team Member in Detail in contributions.md Tushar Singh
- Frontend UI: Login, Registration, Search, Home, Profile
- Backend: Booking flow, booking APIs, conflict resolution
Rajeev Ranjan Chaurasia
- Backend setup, AWS DevOps, CI/CD, Cognito auth, spatial queries Email Integration, Restaurant Manager portal
Jeevan Kurian
- Project Confluence documentation, Admin portal (UI + backend) Ratings/Reviews system, Admin analytics,Writing Readme ( UI + Backend)
- Communication: Stand-ups, Figma, Confluence, transparency
- Courage: Embraced new tech, role expansions, learned AWS stack
- Respect: Code reviews, professionalism, empathy, shared ownership
Read more in our XP Core Values Document