An all-in-one multi-vendor Restaurant & Retail Point of Sale (POS) system.
Tallyko is architected from day one as a true multi-tenant SaaS platform.
Every vendor gets an isolated logical database space (either isolated via PostgreSQL Row-Level Security on a shared DB instance, or completely decoupled on a dedicated customer-hosted Postgres server).
Here is the high-level system topology showing clients, gateways, app layers, and database instances:
Note: Since the Draw.io CLI is not present in this build environment, the .png diagrams must be exported manually from the .drawio source files before they render in markdown.
To render the diagrams in this README, open each .drawio file located in docs/diagrams/ (e.g., using Draw.io) and export them as PNGs:
- Tallyko_Master_Architecture.drawio → Tallyko_Master_Architecture.png
- Tallyko_Docker_Deployment.drawio → Tallyko_Docker_Deployment.png
- Tallyko_Database_ERD.drawio → Tallyko_Database_ERD.png
| Layer | Component | Details | Links |
|---|---|---|---|
| Backend | Python / FastAPI | Modern, async-first REST API | Justification |
| Frontend | React Native | iOS + Android single codebase | Architecture |
| Database | PostgreSQL | Multi-tenant schema with RLS | Multi-Vendor Strategy |
| Cache & Broker | Redis | Rate-limiting, session store & task broker | System Design |
| Object Storage | MinIO | S3-compatible, self-hosted file system | Tech Stack Details |
| Reverse Proxy | Traefik | SSL Termination & dynamic domain routing | Deployment |
| Logging | tracenest |
Structured JSON log generation | Observability |
| Orchestration | Docker Compose | Run everything anywhere in isolation | Docker Strategy |
/Tallyko
├── .gitignore # Root level git rules
├── .env.example # Template for local environment vars
├── VERSION # Current system semver
├── docker-compose.yml # Core Docker orchestration skeleton
├── CHANGELOG.md # Semver release list
├── README.md # Main documentation page (this file)
├── /docs # Detailed markdown specifications
│ └── /diagrams # Draw.io source diagrams (.drawio)
├── /backend # FastAPI server & tests
│ ├── /app # API logic, core configs, and routers
│ └── /tests # Pytest suite (unit & integration)
├── /frontend # React Native mobile codebase
│ ├── /src # Functional feature stubs
│ └── /tests # React Native frontend tests
├── /scripts # Environment initialization & run scripts
├── /tests # Top-level e2e / cross-service tests
└── /changelog # Versioned changelog releases
To get the development environment running locally:
- Install Docker and Docker Compose.
- Install Git.
- Clone the repository:
git clone <repo-url> cd Tallyko
- Bootstrap the environment:
- Windows (PowerShell):
.\scripts\setup.ps1
- POSIX (Linux/macOS):
chmod +x scripts/*.sh ./scripts/setup.sh
- Windows (PowerShell):
- Start the containers:
- Windows (PowerShell):
.\scripts\dev.ps1
- POSIX (Linux/macOS):
./scripts/dev.sh
- Windows (PowerShell):
- Access the API:
Once the containers start up, the backend API is reachable at
http://localhost:8000/docs.
The system runs entirely containerized under Docker Compose:
Strict relational model mapping the schema design:
- We strictly adhere to Semantic Versioning (SemVer) rules.
- Check the CHANGELOG.md to inspect releases, which points to individual log files in /changelog.
- Bumping the version requires updating the VERSION file.
- Branching Policy: Work should happen on feature branches (e.g.
feature/001-auth-setup) and merge intomainvia PRs. - Testing:
- Backend: Run
pytestinside thebackendcontainer. - Frontend: Run
npm run testin/frontend.
- Backend: Run
- Pre-commit: Code must be formatted (Black/Prettier) before commit.
[To be decided / Placeholders for Licensing Terms]


