Food delivery app built with Angular and Spring Boot. Customers order, restaurants run the queue, riders deliver and an admin approves new restaurants, all behind OTP login (no passwords). Everything runs in Docker.
- Customers browse restaurants, fill a cart, place an order and follow it from placed to delivered.
- Restaurants edit their menu, profile and opening hours, and work through the incoming orders: accept, prepare, mark ready.
- Delivery partners see the deliveries assigned to them and mark each one picked up and delivered. A ready order goes to the partner with the fewest open deliveries.
- Platform admins approve or reject new restaurants and delivery partners.
There are no payments. Orders are placed and tracked, nothing is charged.
- Backend: Java 25, Spring Boot 4.1, Spring Security with JWT, Spring Data JPA, Flyway migrations, PostgreSQL 18
- Frontend: Angular 22 with standalone components and signals, Angular Material
Just Docker (Desktop or Engine + compose plugin). No local Node, JDK, Maven or Postgres needed, everything builds and runs in containers.
git clone https://github.com/thanecoder/relish-food-delivery-saas.git
cd relish-food-delivery-saas
cp .env.example .env
docker compose upOnce it is up, open the frontend in your browser. The ports are in docker-compose.yml if you need to change them.
The frontend can report errors, page loads and web vitals to Grafana through the Faro Web SDK. It is off by default and sends nothing. To turn it on, set FARO_URL in .env to your collector's address and run docker compose up -d frontend. URLs are stripped of query strings and ids first, and only the user's role is attached to a session.
docker compose --profile test run --rm backend-test
