Skip to content

πŸ’§ A comprehensive water ordering system designed for NWU Mahikeng students. Streamlines delivery logistics with automated invoicing, analytics, and seamless payments.

License

Notifications You must be signed in to change notification settings

Bheki0987/Amanzi-Ordering-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Amanzi Logo

Amanzi Ordering System

πŸ’§ Hydration on Demand

A comprehensive, full-stack water delivery solution designed for the NWU Mahikeng Campus ecosystem. Bridging the gap between student residences and local water service providers.

MERN Stack React Node Stripe License


πŸ“– Overview

Amanzi Ordering System is a web-based platform that streamlines the logistics of water delivery. By digitizing the ordering process, we eliminate manual coordination errors, provide real-time tracking for students, and offer powerful revenue analytics for service providers.

This system was built to solve the specific logistical challenges faced by students living in residence clusters who require reliable access to purified water.


✨ Features

The application serves two distinct user groups with tailored dashboards:

πŸŽ“ For Students (Customers)

  • πŸ›’ Seamless Ordering: Place orders for 5L+ capacities with just a few clicks.
  • πŸ“ Smart Location: Select residence clusters for precise delivery.
  • πŸ’³ Flexible Payments: Integrated Stripe payments or Cash on Delivery options.
  • πŸ“± Live Tracking: Real-time status updates (Pending β†’ Accepted β†’ Out for Delivery).
  • πŸ“„ Digital Invoicing: Auto-generated invoices with provider contact details.
  • πŸ”” Smart Alerts: Email and in-app notifications for order updates.

πŸš› For Service Providers

  • πŸ“¦ Order Command Center: Accept, reject, and manage incoming orders efficiently.
  • πŸ“Š Analytics Suite: Visual charts for revenue trends, popular delivery slots, and residence hotspots.
  • πŸ’° Financial Tracking: Monitor daily earnings and transaction history.
  • πŸ“ˆ Capacity Planning: Analyze peak ordering times to optimize delivery routes.

πŸ›  Tech Stack

This project leverages the MERN architecture for scalability and performance.

Domain Technologies
Frontend React 18, Vite, Tailwind CSS, Chart.js, Axios
Backend Node.js, Express.js, REST API Architecture
Database MongoDB (Atlas), Mongoose ODM
Security JWT Auth, BCrypt hashing, CORS policies
Services Stripe API (Payments), Nodemailer (Notifications)

πŸš€ Getting Started

Prerequisites

Ensure you have the following installed locally:

Installation

  1. Clone the Repository

    git clone [https://github.com/YOUR_USERNAME/amanzi-ordering-system.git](https://github.com/YOUR_USERNAME/amanzi-ordering-system.git)
    cd amanzi-ordering-system
  2. Backend Setup

    cd backend
    npm install

    Create a .env file in /backend and add:

    PORT=5000
    MONGODB_URI=your_mongodb_connection_string
    JWT_SECRET=your_secure_secret
    STRIPE_SECRET_KEY=your_stripe_secret
    FRONTEND_URL=http://localhost:5173
    EMAIL_USER=your_email@gmail.com
    EMAIL_PASSWORD=your_app_password
  3. Frontend Setup

    cd ../frontend
    npm install

    Create a .env.development file in /frontend and add:

    VITE_API_URL=http://localhost:5000/api
    VITE_STRIPE_PUBLISHABLE_KEY=your_stripe_public_key
  4. Run the Application Terminal 1 (Backend): npm run dev Terminal 2 (Frontend): npm run dev


πŸ“‚ Project Structure

Click to view the full file tree
amanzi-ordering-system/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/         # DB & Stripe Config
β”‚   β”‚   β”œβ”€β”€ controllers/    # Logic for Orders, Auth, Payments
β”‚   β”‚   β”œβ”€β”€ middleware/     # Auth & Error Handling
β”‚   β”‚   β”œβ”€β”€ models/         # Mongoose Schemas (User, Order)
β”‚   β”‚   β”œβ”€β”€ routes/         # API Route Definitions
β”‚   β”‚   └── services/       # Email & Helper Services
β”‚   └── server.js           # Entry Point
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Auth/       # Login/Register components
β”‚   β”‚   β”‚   β”œβ”€β”€ Charts/     # Dashboard Visualizations
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard/  # Role-based Dashboards
β”‚   β”‚   β”‚   β”œβ”€β”€ Invoices/   # Invoice Generation
β”‚   β”‚   β”‚   └── Payment/    # Stripe Elements
β”‚   β”‚   β”œβ”€β”€ services/       # Axios API consumers
β”‚   β”‚   └── styles/         # Global styles
β”‚   └── vite.config.js

πŸ“‘ API Documentation

Base URL: http://localhost:5000/api

πŸ” Authentication

Method Endpoint Description
POST /auth/register Register new Customer/Provider
POST /auth/login Authenticate user & retrieve Token

πŸ“¦ Orders

Method Endpoint Access Description
POST /orders Customer Create a new water order
GET /orders/my-orders Customer View personal order history
PUT /orders/:id/status Provider Update status (Accept/Reject)

πŸ’³ Payments

Method Endpoint Description
POST /payments/create-intent Initialize Stripe transaction
POST /payments/webhook Listen for payment success events

πŸ‘¨β€πŸ’» Development Team

Proudly built by students of North-West University (Mahikeng Campus).

Name Role Links
Bheki Mogola Backend Lead & Architecture LinkedIn
Karabo Makau Frontend Lead & UI/UX LinkedIn
Potego Sethwape Documentation & QA LinkedIn

🀝 Contributing

We welcome contributions to improve hydration access!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.


B

About

πŸ’§ A comprehensive water ordering system designed for NWU Mahikeng students. Streamlines delivery logistics with automated invoicing, analytics, and seamless payments.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published