How kurmamadhav/automated-whatsapp-stationary-store works
This is a deterministic WhatsApp storefront for browsing stationery, maintaining a cart, and placing an order. The main path receives a Meta webhook, normalizes text or interactive replies, routes them through the finite-state engine, and returns WhatsApp payloads. The engine coordinates session state, catalog and order operations, message templates, and the WhatsApp client; checkout validates and deducts stock while creating a pending-payment order. The README also documents Redis-backed sessions and simulation interfaces. Some implementation excerpts are partial, so uncertain internal wiring is omitted.
Main entry points: main.py FastAPI Webhook & API · engine.py State Router · database.py Database Access · models.py Product & Order Models
Components 16
Ingress & Simulation
- FastAPI Webhook & API
app/main.py - Message Schemas
app/schemas.py - Terminal Simulator
simulate_cli.py
Shopping Workflow
- State Router
app/engine.py - Catalog & Orders
app/catalog.py
WhatsApp Messaging
- Payload Builders
app/whatsapp_templates.py - WhatsApp Client
app/whatsapp_client.py
State & Persistence
- Session Manager
app/session.py - Database Access
app/database.py - Product & Order Models
app/models.py - Product & Order Store
- Catalog Seed Data
app/seed_data.py
Other components
- Shopper
- Meta WhatsApp
- Simulator User
- Redis Session Store
Connections 24
- Shopper → Meta WhatsApp: sends messages
- Meta WhatsApp → FastAPI Webhook & API: posts webhook
- FastAPI Webhook & API → Message Schemas: normalizes messages
- FastAPI Webhook & API → State Router: dispatches inbound
- FastAPI Webhook & API → Database Access: gets DB session
- FastAPI Webhook & API → Product & Order Models: queries products/orders
- FastAPI Webhook & API → State Router: simulates message
- Simulator User → FastAPI Webhook & API: uses simulation API
- Simulator User → Terminal Simulator: chats in terminal
- Terminal Simulator → State Router: submits inbound
- Terminal Simulator → Database Access: opens DB session
- Terminal Simulator → Catalog Seed Data: seeds catalog
- State Router → Session Manager: loads and saves state
- State Router → Catalog & Orders: queries and places orders
- State Router → Payload Builders: builds responses
- State Router → WhatsApp Client: sends payloads
- Catalog & Orders → Product & Order Models: queries and updates
- Database Access → Product & Order Models: creates tables
- Database Access → Product & Order Store: connects
- Product & Order Models → Product & Order Store: persists products and orders
- Catalog Seed Data → Database Access: initializes database
- Catalog Seed Data → Product & Order Models: inserts products
- Session Manager → Redis Session Store: persists sessions
- WhatsApp Client → Meta WhatsApp: sends WhatsApp payloads