Skip to content

GoDine is an online food ordering system designed using Golang and following the principles of Domain-Driven Design (DDD).

License

Notifications You must be signed in to change notification settings

blackhorseya/godine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoDine

Go Coverage Quality Gate Status GitHub release GitHub License

GoDine is an online food ordering system designed using Golang and following the principles of Domain-Driven Design ( DDD). The system includes multiple business domains such as User Management, Restaurant Management, Order Management, Payment Management, and Notification Management. Each domain has clear boundaries and interacts with other domains to provide a seamless online dining experience.

Project Name Explanation

The name GoDine is derived from combining "Golang" and "Dine", representing an online food ordering system built using Golang. This name is concise and representative, conveying the core functionality of the project, which is to provide efficient online dining services using Golang technology.

Features

  • User Management: User registration, login, profile updates, account deletion.
  • Restaurant Management: Restaurant information management, menu management.
  • Order Management: Order creation, order status updates, order queries.
  • Payment Management: Handling order payments, payment record queries.
  • Notification Management: Sending notifications to users (e.g., order status updates).

Technical Details

  • Programming Language: Golang
  • Architecture Pattern: Domain-Driven Design (DDD)
  • Major Modules:
    • User Management: Responsible for user registration, login, profile management, etc.
    • Restaurant Management: Responsible for restaurant information and menu management.
    • Order Management: Handles order creation, management, and tracking.
    • Payment Management: Processes payments and manages payment records.
    • Notification Management: Sends notifications regarding order status changes to users.

System Architecture Diagram

graph TD
    UserManagement[用戶管理]
    RestaurantManagement[餐廳管理]
    OrderManagement[訂單管理]
    PaymentManagement[支付管理]
    NotificationManagement[通知管理]
    LogisticsManagement[物流管理]

    UserManagement -->|確認用戶身份| OrderManagement
    RestaurantManagement -->|確認餐廳和菜單可用性| OrderManagement
    OrderManagement -->|確認訂單和金額| PaymentManagement
    PaymentManagement -->|通知支付結果| OrderManagement
    OrderManagement -->|通知訂單狀態變更| NotificationManagement
    OrderManagement -->|安排配送| LogisticsManagement
    LogisticsManagement -->|更新配送狀態| OrderManagement
    LogisticsManagement -->|通知配送狀態變更| NotificationManagement

    subgraph UserManagement[用戶管理]
        UM[User Service]
        UM --> U[User]
    end

    subgraph RestaurantManagement[餐廳管理]
        RM[Restaurant Service]
        M[Menu Service]
        RM --> R[Restaurant]
        M --> MI[MenuItem]
    end

    subgraph OrderManagement[訂單管理]
        OM[Order Service]
        OM --> O[Order]
        O --> OI[OrderItem]
    end

    subgraph PaymentManagement[支付管理]
        PM[Payment Service]
        PM --> PR[PaymentRecord]
    end

    subgraph NotificationManagement[通知管理]
        NM[Notification Service]
        NM --> N[Notification]
    end

    subgraph LogisticsManagement[物流管理]


        LM[Logistics Service]
        LM --> D[Delivery]
        D --> DS[DeliveryStatus]
    end
Loading

Installation

  1. Clone the repository:
    git clone https://github.com/blackhorseya/godine.git
  2. Navigate to the project directory:
    cd godine
  3. Install dependencies:
    go mod tidy

Usage

  1. Run the service:
    make dev
  2. Access the service:
    • API documentation is available at http://localhost:1992/api/docs/index.html.

Contribution

We welcome contributions to this project. Please follow these steps:

  1. Fork the repository
  2. Create your feature branch:
    git checkout -b feature-branch
  3. Commit your changes:
    git commit -am 'Add some feature'
  4. Push to the branch:
    git push origin feature-branch
  5. Create a Pull Request

License

This project is licensed under the GPL-3.0 License. See the LICENSE file for details.