Skip to main content
Back to selected projects

TijaraOS

A bilingual, multi-tenant retail operations SaaS for branch inventory, point-of-sale workflows, customers, debts, receipts, reporting, and team permissions.

Backend
Python, Django, Django REST Framework
Data and delivery
PostgreSQL, Redis, Docker, GitHub Actions
Clients
Next.js web and Expo mobile applications

My full-stack contribution

I designed and implemented the backend foundations around tenant isolation, permissions, relational domain models, transactional inventory and sales logic, API boundaries, migrations, and automated release checks.

On the Next.js and TypeScript web client, I implemented protected routes, validation, branch-aware filtering, and API integration. I also connected the Expo mobile client to the same backend boundaries while keeping business rules and access enforcement on the server.

Full-stack architecture

The request path connects product interfaces to tenant-aware application rules and relational data without moving business decisions into the client.

  1. Product interfaces

    Next.js web · Expo mobile

    Web and mobile workflows turn authenticated user actions into requests for the application API.

    Routes requests to the application API

  2. API and business logic

    Django · Django REST Framework

    The API resolves the active organization, enforces effective permissions, validates input, and runs transactional service workflows.

    Reads and writes through scoped services

  3. Data services

    PostgreSQL · Redis

    PostgreSQL stores relational application records. Redis provides shared cache state for request throttling and readiness checks.

    Returns data through the application layer

Sanitized view of the implemented application boundaries. It shows responsibilities and data flow, not production scale, customer usage, or sole ownership.

Backend scope

  • Accounts, authentication, organizations, workspaces, memberships, invitations, and permission overrides
  • Products, categories, transactional catalogue import, branches, inventory movements, and stocktakes
  • Point-of-sale sales, cancellations, receipts, customers, debts, payments, and ledger history
  • Dashboard summaries, settings, audit events, health checks, and production runbooks

Engineering evidence

The project is private, so this map explains the implementation decisions and the product risks they address without exposing proprietary code or data.

01

Organization-scoped data access

Organizations act as tenants. Memberships, active-workspace resolution, scoped querysets, and role or effective-permission checks keep business records inside the selected organization.

Risk controlled: Cross-organization data exposure

02

Transactional inventory mutations

Branch inventory is the operational stock source. Sales, cancellations, allocations, and stocktakes use database transactions, row locking, and inventory movements where consistency matters.

Risk controlled: Overselling and inconsistent stock

03

Server-managed web sessions

A same-origin Next.js gateway keeps Django JWT credentials in secure, HttpOnly, SameSite cookies and applies origin and CSRF checks to write requests.

Risk controlled: Token exposure in browser JavaScript

04

Release acceptance gate

The release workflow runs Django checks and tests, migration-drift checks, dependency audits, frontend linting, type checks and builds, mobile checks, and optional production-built browser acceptance.

Risk controlled: Shipping an unverified release

Current boundary

TijaraOS is suitable for a controlled design-partner pilot after production-host, domain, TLS, SMTP, monitoring, off-host backup, and manual release checks are completed. I do not present it as a tax-compliant Egyptian POS, a complete accounting suite, or a proven system at customer scale.

Discuss the implementation

I can walk through the architecture, tenant boundary, transaction design, API contracts, and release process in a technical interview.

Email Ahmed