- Rob: Bufala (10.50)
- Hauke: Bufala (10.50)
- Max: Don Ciro (12.50)
- Felix: Bufala (10.50)
Requirements engineering done. Tasted great.
- Everyone can open a new order
- Orders are public and should be accessible without the need for authentication via a unique URL
- Multiple simultaneous orders
- Multiple simultaneous clients (e.g. a website, matrix bot, etc.)
- have a great name
- countdown timer for the order
- Authenticated access with users/passwords
- Payment processing
- Backend Interface: GraphQL, REST, gRPC, or other RPC mechanism?
- Database: SQLite or other?
- => Repository pattern
- RocksDB afterwards?
- Frontend: Rust! But what framework? Yew?
- slug: string
- menuUrl: string
- open: boolean
- items: array[OrderEntry]
- (availableViaClients: array[string] # e.g. ["web", "matrix/#rust:darkfasel.net"])
- (date: datetime)
- (pickupTime: datetime)
- slug: string
- buyer: string
- food: string
- quantity: number (default: 1, min:1) => Do we even want this? We could also have each entry be a single item
- (price: number)
- (paid: boolean)
- (tip: number)
- RegisterClient(clientName: string) => boolean # returns true if the client was registered; false if it already existed
- ClientHeartbeat(clientName: string) => boolean # Returns true if the client is registered and the heartbeat was successful; false otherwise
- NewOrder() => slug
- ToggleOpen(slug)
- GetOrder(slug) => Order
- AddItem(slug, buyer, food, quantity, price) => slug
- RemoveItem(slug)
- (TogglePaid(slug))
- GetOrders() => array[Order]
- Easy Ordering View (Summary with only relevant options for phoning the restaurant and checkmarks?)
- Model restaurant menus for frequently used restaurants (with prices, etc.)
Feature | napoli-server | napoli-pain (yew.rs web) |
---|---|---|
Show a list of all orders | ✅ | ✅ |
Show a detailed view of a single order | ✅ | ✅ |
Add a new order | ✅ | ✅ |
Add a new item to an order | ✅ | ✅ |
Remove an item from an order | ✅ | ✅ |
Change the state of an order | ✅ | 🙅♀️ |
Show an extra summary view for ordering via the phone | - | ✅ |
Track order by datetime | 🙅♀️ | 🙅♀️ |
Track order pickup time | 🙅♀️ | 🙅♀️ |
Notify the user when the order pickup is ready | - | 🙅♀️ |
Filter by order state on homepage | 🙅♀️ | 🙅♀️ |
Some way to authenticate users | 🙅♀️ | 🙅♀️ |