Cafe ordering system with M-Pesa payment integration using Flask and Intasend API - Moringa AI Capstone Project
# 🍰 Cafe Ordering System with M-Pesa Integration
A full-stack cafe ordering application demonstrating M-Pesa mobile money payment integration using Flask (backend) and React + Tailwind CSS (frontend). Built as part of the Moringa School AI Capstone Project.
---
## 📋 Table of Contents
1. Project Overview
2. Technology Stack
3. Features
4. System Requirements
5. Installation & Setup
6. Environment Configuration
7. Running the Application
8. Testing M-Pesa Payments
9. API Documentation
10. AI Prompts Used
11. Common Issues & Solutions
12. Learning Reflections
13. Future Enhancements
14. Resources
---
## 📋 Project Overview
### Technology Choice
**M-Pesa Payment Integration via Intasend API**
### Justification
M-Pesa is the dominant mobile money platform in Kenya with over 30 million active users. Learning M-Pesa integration is crucial for building real-world applications in the East African market. Intasend provides a developer-friendly wrapper around the complex M-Pesa Daraja API, making it ideal for learning payment integration fundamentals.
### End Goal
Build a functional cafe ordering system where customers can:
- Browse menu items
- Add items to cart
- Checkout and pay via M-Pesa STK Push (Lipa na M-Pesa Online)
- Receive order confirmation after successful payment
### Real-World Applications
- E-commerce platforms (Jumia, Kilimall)
- Food delivery services (Uber Eats, Glovo)
- Utility bill payments
- Subscription services
- Ticket booking systems
---
## 🛠️ Technology Stack
### Backend
- **Flask 3.0.0** - Python web framework
- **Intasend Python SDK 1.3.0** - M-Pesa payment gateway
- **Flask-CORS** - Enable cross-origin requests from React frontend
- **python-dotenv** - Environment variable management
### Frontend
- **React 18+** - JavaScript UI library
- **Tailwind CSS 3+** - Utility-first CSS framework
- **Axios** - HTTP client for API requests
- **React Router** - Client-side routing
### Payment Gateway
- **Intasend API** - M-Pesa integration …