Skip to content

Ndevu12/the_inventory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

203 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

The Inventory β€” Backend API

License: BSD-3-Clause Python 3.12+ Django 6.0 Wagtail 7.3

A comprehensive REST API for inventory management built with Django and Wagtail CMS. Manage products, stock levels, warehouses, purchases, sales, and reporting through a powerful headless API.

This is the backend API only. For the frontend UI, see the-inventory-ui.


Features

  • πŸ“¦ Inventory Management β€” Products, categories, stock locations, and movements
  • πŸ›’ Procurement β€” Suppliers, purchase orders, goods received notes
  • πŸ’³ Sales β€” Customers, sales orders, dispatch tracking
  • πŸ“Š Reporting β€” Stock valuation, movement history, analytics
  • 🌍 Multi-Tenancy β€” Support multiple organizations on one deployment
  • πŸ” Security β€” JWT authentication, RBAC, audit logging
  • πŸ”Œ REST API β€” Comprehensive API with OpenAPI documentation
  • 🌐 Internationalization β€” Support for multiple languages

Tech Stack

Layer Technology
Language Python 3.12+
Web Framework Django 6.0
API Django REST Framework
Admin UI Wagtail 7.3
Database SQLite (dev) / PostgreSQL (production)
Search Wagtail search backend
Containerization Docker

Quick Start

For detailed setup instructions, see the Getting Started Guide.

Prerequisites

  • Python 3.12 or later
  • Git

Installation

# Clone repository
git clone https://github.com/Ndevu12/the_inventory.git
cd the_inventory

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Navigate to backend
cd src

# Run migrations
python manage.py migrate

# Create superuser
python manage.py createsuperuser

# Start development server
python manage.py runserver

Access the API


Documentation

Guide Purpose
Getting Started Installation and first steps
Features What this API provides
API Reference REST API endpoints and examples
Deployment Production deployment (Docker, Render, K8s)
Integration How to integrate with frontend
Development For contributors
Operations For platform operators
Security Security best practices
Troubleshooting Common issues and solutions
FAQ Frequently asked questions
Architecture Technical design
Environment Variables Configuration reference
Roadmap Development roadmap

Project Structure

src/
β”œβ”€β”€ manage.py                    # Django entry point
β”œβ”€β”€ the_inventory/               # Project configuration
β”‚   β”œβ”€β”€ settings/                # base, dev, production
β”‚   β”œβ”€β”€ urls.py                  # URL routing
β”‚   └── wsgi.py                  # WSGI application
β”œβ”€β”€ api/                         # REST API
β”œβ”€β”€ inventory/                   # Core inventory app
β”œβ”€β”€ procurement/                 # Procurement app
β”œβ”€β”€ sales/                        # Sales app
β”œβ”€β”€ reports/                     # Reporting app
β”œβ”€β”€ tenants/                     # Multi-tenancy
└── locale/                      # Translations

seeders/                         # Database seeding
tests/                           # Test suite
docs/                            # Documentation

See Architecture for the full technical design.


Docker

Build and run with Docker:

# Build image
docker build -t the_inventory .

# Run container
docker run -p 8000:8000 \
  -e SECRET_KEY="your-secret-key" \
  -e DATABASE_URL="postgresql://user:pass@db:5432/inventory" \
  the_inventory

For complete deployment instructions, see Deployment Guide.


Testing

cd src

# Run all tests (seeders excluded)
python manage.py test

# Run specific test module
python manage.py test tests.api

# Run with coverage
coverage run --source='.' manage.py test
coverage report

See Development Guide for more testing details.


Contributing

Contributions are welcome! Please read our Contributing Guide before submitting a pull request.

This project follows the Contributor Covenant Code of Conduct.


Frontend

The official frontend is a separate repository:

the-inventory-ui β€” Next.js UI for The Inventory

You can also build your own frontend using any framework (React, Vue, Angular, etc.) by consuming this REST API.


License

This project is licensed under the BSD 3-Clause License β€” see the LICENSE file for details.

Copyright (c) 2026, Jean Paul Elisa NIYOKWIZERWA.


Support


Roadmap

See Roadmap for planned features and development phases.


Changelog

See Changelog for release notes and version history.

About

Open Inventory management system

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors