Work in progress  ·  v1 coming soon

The backend engine
every e-commerce
service needs.

Sellaris is a modular, API-first Django backend — handling products, carts, orders, payments, and more. Drop it in, wire up your frontend, and ship faster.

Built with 🐍 Django ⚡ DRF 🐘 PostgreSQL 🐳 Docker 🌿 Celery (planned)

Core commerce, fully covered.

Every module your e-commerce service needs — cleanly separated, independently deployable, and ready to extend.

Product Catalog

Full product management — create, update, categorise, and query products at scale. Variants and inventory tracking on the roadmap.

Cart System

Session-aware cart handling with add, update, and remove operations. Coupon support planned as the project matures.

Wishlist

Let users save products for later. Wishlist endpoints are fully available and tied to user accounts.

Order Processing

End-to-end order lifecycle — creation, status management, and tracking. Supports both guest and authenticated users.

Payments

Payment endpoint is live and ready for Flutterwave and Paystack wiring. Secure verification in progress.

User Management

Authentication, registration, and profile endpoints. Guest checkout support and role-based access on the roadmap.

Notifications

Notification module scaffolded and ready. Email notifications via Celery are coming — the architecture already supports async tasks.

Docker-First Dev

One command spins up the entire stack — Django, PostgreSQL, and future Redis/Celery — all containerised and environment-configured.

Clean endpoints. RESTful by design.

All endpoints return JSON and are versioned under /api/v1 and /v1. Session auth, guest ownership, and staff-only routes are all documented explicitly.

GET /api/v1/products/products Catalog list
POST /api/v1/carts/cart-items Add to cart
GET /api/v1/wishlists/wishlists Wishlists
POST /api/v1/orders/checkout Checkout orders
POST /api/v1/payments/initialize Initialize payment
POST /api/v1/users/login Session auth
example — guest cart + checkout
// Guests can shop with a Django session
// Keep cookies enabled so cart and order ownership persists

await fetch("/api/v1/carts/cart-items", {
  method: "POST",
  credentials: "include",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    product_variant: "6c6d7030-fd91-4d30-8a74-457b5f670001",
    quantity: 2
  })
});

const checkout = await fetch("/api/v1/orders/checkout", {
  method: "POST",
  credentials: "include",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    email: "shopper@example.com",
    phone_number: "+2348012345678"
  })
});

const order = await checkout.json();
// Then initialize payment with order.id

Built for scale from day one.

Structured for the real world — clean separation of concerns and a clear path to microservices when you're ready.

01 / LAYERS

App-Local Services

Business logic is pushed into focused service modules where it matters most, especially around inventory, payments, email delivery, and ownership transfer.

02 / MODULES

Domain-Based Apps

Each domain (users, products, orders…) is an independent Django app under apps/. Add, remove, or replace domains without touching unrelated code.

03 / ASYNC

Celery-Ready Tasks

Background jobs live in tasks/ and are Celery-ready. Hook in Redis and you have async processing with zero refactoring.

04 / CORE

Shared Utilities

Cross-cutting concerns — permissions, pagination, filters, validators, and helper utilities — centralised in core/ so behavior stays consistent.

05 / DEPLOY

Docker Compose Stack

Development and production both run from root-level Compose files, with Nginx, health checks, Redis, Celery workers, and TLS automation wired in.

06 / FUTURE

Microservices Path

Because apps are decoupled and communicate via service layers, breaking Sellaris into microservices later is a refactor — not a rewrite.

Roadmap

Sellaris is actively developed. Here's what's in progress and what's planned.

Payment Integration

Flutterwave & Paystack — gateway hooks are in place.

Auth & Authorisation

Session auth with CSRF-aware browser support, guest checkout, and shopper-data transfer after login.

Security Hardening

Rate limiting, input validation, and secure payment verification.

Product Variants & Inventory

Size, colour, and stock level tracking per SKU.

Order Tracking

Real-time status updates from placed → fulfilled.

Email Notifications

Transactional emails sent asynchronously via Celery.

API Rate Limiting

DRF throttling + Redis-backed rate limiting per user/IP.

Admin Dashboard

Enhanced Django admin with analytics and order views.

Everything you need to know.

Read about how Sellaris works, how to deploy it, and how to integrate it with your service.

Docs are loaded from docs/docs/v1/. The machine-readable contract lives at openapi/sellaris-v1.yaml.
Loading…

We test it. Regularly.

Sellaris undergoes routine testing to ensure every module keeps working as the codebase grows.

● Passing

Product API

CRUD operations, list filtering, and pagination covered with unit and integration tests.

● Passing

Cart Logic

Add-to-cart, update quantity, and remove-item flows tested end-to-end via the DRF test client.

◐ In Progress

Order Workflow

Order creation and status transition tests being written as the order module stabilises.

◐ In Progress

Payment Verification

Mock gateway responses being introduced for payment unit testing.

○ Planned

Auth & Permissions

Full token auth and permission boundary tests planned alongside the auth module.

○ Planned

Load & Rate Limiting

Performance and throttling tests scheduled after rate limiting is implemented.

Up and running in minutes.

All you need is Docker and Docker Compose. No local Python setup required.

01

Clone the repository

Pull Sellaris from GitHub to your local machine.

git clone https://github.com/occupythemind/sellaris-backend.git
02

Create your .env.local file

Add a root-level .env.local file with database credentials, payment config, and callback paths.

nano .env.local
03

Start the Docker stack

Builds and runs Django + PostgreSQL together inside containers.

docker build -t sellaris:latest -f Dockerfile . && docker compose --env-file .env.local -f docker-compose.yml up -d
04

Hit the API

Django listens at http://localhost:8000. Try the health check and the catalog endpoint to verify it is running.

curl http://localhost:8000/health/ && curl http://localhost:8000/api/v1/products/products

Power your store with Sellaris.

Open source, MIT licensed, actively maintained. Fork it, extend it, ship with it.