Skip to content

Commit

Permalink
doc: add documentation about the project
Browse files Browse the repository at this point in the history
  • Loading branch information
helisfreitas committed Oct 6, 2024
1 parent 902c31a commit 5e0a60a
Show file tree
Hide file tree
Showing 5 changed files with 167 additions and 3 deletions.
40 changes: 38 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,44 @@
[![Java CI with Maven](https://github.com/helisfreitas/my-delivery-quarkus/actions/workflows/maven.yml/badge.svg)](https://github.com/helisfreitas/my-delivery-quarkus/actions/workflows/maven.yml)

# My Delivery App project

This project uses Quarkus, the Supersonic Subatomic Java Framework and Angular Front End
The *My-Delivery* app, a demo Application for just Study Purposes, is designed to be a general-purpose food delivery platform, similar to iFood.

This project uses Quarkus, Java Framework and Angular, FrontEnd Framework.

If you want to learn more about:

- Quarkus, please visit its website: https://quarkus.io/.
- Angular, please visit its website: https://angular.dev/.

## Specifications

[Spec 1](/docs/specs/SPEC1.md)

## Developer Mode

### Cloning the application

git clone https://github.com/helisfreitas/my-delivery-quarkus.git
cd /my-delivery-frontend-angular
git submodule init

### Running the application

- Running each module separately

1. my-delivery-registration (Restaurant Management)

See: [Instructions](/my-delivery-registration/README.md)

2. my-delivery-marketplace

See: [Instructions](/my-delivery-marketplace/README.md)

3. my-delivery-frontend-angular

If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
See: [Instructions](/my-delivery-frontend-angular/README.md)

## Reference links

- [Git Submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
Binary file added docs/diagrams/out/architecture/systemdiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 47 additions & 0 deletions docs/diagrams/src/systemdiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
@startuml
title My-Delivery System Architecture

package "Web Clients" {
[User Client\n(Angular App)]
}

package "Backend Quarkus" {
[Authentication Service]
[Restaurant Management Service]
[Marketplace Service]
[Delivery Service]
}

package "Database Layer" {
[PostgreSQL]
[MongoDB]
}

package "External Integrations" {
[Maps API]
[SMS/Email Service]
}

package "Infrastructure" {
[Load Balancer]
[Message Queue]
}

' Define interactions between components
[User Client\n(Angular App)] --> [Authentication Service]
[User Client\n(Angular App)] --> [Restaurant Management Service]
[User Client\n(Angular App)] --> [Marketplace Service]
[User Client\n(Angular App)] --> [Delivery Service]

[Marketplace Service] --> [PostgreSQL]
[Marketplace Service] --> [MongoDB]
[Restaurant Management Service] --> [PostgreSQL]
[Delivery Service] --> [MongoDB]

[Delivery Service] --> [Maps API]
[Marketplace Service] --> [SMS/Email Service]

[User Client\n(Angular App)] --> [Load Balancer]

[Marketplace Service] --> [Message Queue]
@enduml
81 changes: 81 additions & 0 deletions docs/specs/SPEC1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# SPEC-1: My-Delivery App (Demo Application for just Study Purposes)

## Background

The *My-Delivery* app is a demo app designed to be a general-purpose food delivery platform, similar to iFood. It will allow users to browse local restaurants, place orders, and track deliveries in real time. The platform will cater to a wide audience, connecting customers with a variety of cuisines. Both restaurants and delivery personnel will have dedicated interfaces to manage their services efficiently.

## Architecture Design

![System Architecture](../diagrams/out/architecture/systemdiagram.png)

## Requirements

The requirements for *My-Delivery* are broken down according to the MoSCoW prioritization model:

### Must Have

1. **Restaurant Listings**
- A searchable, filterable list of restaurants based on location, cuisine, and ratings.
- Restaurant profiles including details such as menus, ratings, operating hours, and contact information.

2. **Menu Items Listings**
- A searchable, filterable list of Menu Items based on category, restaurants.

3. **Restaurant Management (Admin Dashboard for Restaurants)**
- Restaurants can register and create their profiles.
- Restaurant owners can add, modify, or remove menu items, and set prices.
- Update product availability and business hours in real-time.

4. **Menu and Order Management**
- Customers can browse restaurant menus and add items to their carts.
- Support for order customization (special instructions, portion sizes, etc.).

5. **Order Placement**
- Comprehensive order summary showing price breakdown, delivery fees, and time estimates.
- Payment manually on delivery.

### Should Have

1. **User Registration & Authentication**
- Users can register and log in using email or social media accounts.
- User profile management features (name, contact information, etc.).

2. **Push Notifications**
- Real-time updates on order status and promotional offers.

3. **Promotions & Discounts**
- Allow restaurants to offer discount codes, and users to apply promo codes during checkout.

4. **Customer Support Chat**
- In-app support for customer queries and issues.

5. **Order History**
- Users can view and reorder from their past orders.

6. **Real-time Order Tracking**
- Track the order status (preparing, dispatched, delivered) with live delivery tracking via map integration.

7. **Ratings and Reviews**
- Customers can review both the restaurant and the delivery personnel.
- Display average ratings and reviews on restaurant profiles.

8. **Delivery Person Interface**
- Dedicated app or interface for couriers to view and accept deliveries.
- Navigation integration to assist delivery personnel in reaching destinations.

9. **Payment Service**
- System of payment service for customers with multiple payment options including credit/debit cards and Digital wallet.
- Integration for external payment services such as PayPal

### Could Have

1. **Loyalty Program**
- Reward customers for repeat orders with points or discounts.

2. **Scheduled Orders**
- Allow users to place an order for a future time or date.

### Won't Have (for MVP)

1. **Table Reservations**
- Features allowing users to reserve tables at restaurants will not be included in the initial version.
2 changes: 1 addition & 1 deletion my-delivery-registration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<artifactId>my-delivery-registration</artifactId>
<version>0.0.1</version>

<name>Registration Api</name>
<name>Restaurant Management Service</name>

<properties>
<compiler-plugin.version>3.13.0</compiler-plugin.version>
Expand Down

0 comments on commit 5e0a60a

Please sign in to comment.