Hot-Coffee is a RESTful API application built in Go to manage a coffee shop's backend operations. It enables handling orders, managing menu items, tracking inventory, and running reports, all designed with a three-layered software architecture for maintainability and scalability.
- Order Management: Create, retrieve, update, delete, and close orders.
- Menu Management: Add, retrieve, update, and delete menu items.
- Inventory Management: Track ingredient stock levels, update quantities, and check availability for orders.
- Reports: Generate total sales and popular items reports.
- Logging: Integrated logging using
log/slogfor significant events and errors. - Error Handling: Graceful error responses with appropriate HTTP status codes.
- cmd/: Application entry point (
main.go) - internal/: Organized by layers
- handler/: HTTP request handlers
- service/: Business logic layer
- dal/: Data Access Layer (repositories)
- models/: Data models for orders, menu items, and inventory
- data/: JSON files for persisting data (
orders.json,menu_items.json,inventory.json)
POST /orders- Create a new orderGET /orders- Retrieve all ordersGET /orders/{id}- Retrieve order by IDPUT /orders/{id}- Update an orderDELETE /orders/{id}- Delete an orderPOST /orders/{id}/close- Close an order
POST /menu- Add a new menu itemGET /menu- Retrieve all menu itemsGET /menu/{id}- Retrieve a menu item by IDPUT /menu/{id}- Update a menu itemDELETE /menu/{id}- Delete a menu item
POST /inventory- Add a new inventory itemGET /inventory- Retrieve all inventory itemsGET /inventory/{id}- Retrieve an inventory item by IDPUT /inventory/{id}- Update an inventory itemDELETE /inventory/{id}- Delete an inventory item
GET /reports/total-sales- Retrieve total salesGET /reports/popular-items- Retrieve popular menu items
./hot-coffee --port <N> --dir <data_directory>
./hot-coffee --help