# DEPRECATED — Current Architecture Documentation Review > **Status:** Deprecated historical inventory (2026-07-22). > **Superseded by:** [docs/README.md](README.md) and the consolidated documentation tree. > Kept for audit trail only — do not update. **Date:** 2026-07-22 **Scope:** Read-only inventory of architecture / structure / progress documentation in the TorbatYar (SuperApp) repository. **Action taken:** No existing documentation was modified at review time. This review file is retained as history. --- ## 1. Discovered documents Search covered the whole repo for architecture-related markdown and naming patterns (`architecture*`, `design*`, `database*`, `progress*`, `roadmap*`, `ADR*`, `deployment*`, `services*`, etc.). ### 1.1 Core docs (`docs/`) | # | Path | | --- | --- | | 1 | `docs/architecture.md` | | 2 | `docs/database_schema.md` | | 3 | `docs/services_contracts.md` | | 4 | `docs/developer_guide.md` | | 5 | `docs/progress.md` | | 6 | `docs/last_step.md` | ### 1.2 Root & package READMEs | # | Path | | --- | --- | | 7 | `README.md` | | 8 | `backend/README.md` | | 9 | `frontend/README.md` | | 10 | `backend/services/README.md` | | 11 | `backend/core-service/alembic/README.md` | ### 1.3 Service READMEs (`backend/services/*/README.md`) | # | Path | | --- | --- | | 12 | `backend/services/identity-access/README.md` | | 13 | `backend/services/accounting/README.md` | | 14 | `backend/services/crm/README.md` | | 15 | `backend/services/ecommerce/README.md` | | 16 | `backend/services/restaurant/README.md` | | 17 | `backend/services/website_builder/README.md` | | 18 | `backend/services/live_chat/README.md` | | 19 | `backend/services/ai_assistant/README.md` | | 20 | `backend/services/smart_messenger/README.md` | | 21 | `backend/services/sms_panel/README.md` | | 22 | `backend/services/link_shortener/README.md` | | 23 | `backend/services/file_storage/README.md` | | 24 | `backend/services/notification/README.md` | ### 1.4 Related non-markdown / ops material (not architecture docs, but architecture-relevant) These are **not** architecture documents, but they encode production architecture decisions and are currently undocumented (or only partially documented) in `docs/`: | Path / area | Why it matters | | --- | --- | | `infrastructure/nginx/torbatyar.ir.conf` | Live reverse-proxy / TLS / tenant host routing | | `infrastructure/nginx/provision_ssl.py` | Auto SSL expand for tenant domains | | `infrastructure/nginx/torbatyar-tenant-ssl.map` | Per-tenant HTTPS redirect readiness | | `infrastructure/deploy/.env.production.example` | Production env contract (incl. `SSL_PROVISION_*`) | | `infrastructure/keycloak/realm/superapp-realm.json` | SSO realm / clients / redirect URIs | | `docker-compose.yml` | Runtime topology (Core, Identity, Keycloak, FE, Celery, Postgres, Redis) | | `.env.example` | Config surface area | | `scripts/deploy_*.py` | Operational deploy procedures (not product docs) | ### 1.5 Patterns searched but **not found** No dedicated files matching: - `ADR*` / architecture decision records - `roadmap*` / `next-step*` (except `docs/last_step.md`) - `design*` / `system*` / `engineering*` / `conventions*` / `principles*` as standalone docs - `docs/` deployment guide - `AGENTS.md` / `CONTRIBUTING.md` / `CHANGELOG.md` at repo root **Total architecture-related markdown documents reviewed:** **24** --- ## 2. Purpose of each document ### Core docs | Document | Purpose | | --- | --- | | `docs/architecture.md` | Canonical high-level architecture: FE/BE split, multi-tenancy, Core responsibilities, tenant resolution, entitlement, outbox, identity layers (SSO + OTP), white-label intent, Phase 4 onboarding model. | | `docs/database_schema.md` | Schema reference for `core_platform_db` and `identity_access_db`, plus conceptual schemas for future business-service databases. | | `docs/services_contracts.md` | Inter-service communication rules, event envelope, entitlement check API, Core APIs, onboarding/tenant-context contracts, Identity auth APIs. | | `docs/developer_guide.md` | Developer onboarding: prerequisites, Docker/local setup, env vars, folder layout, Alembic/pytest/Celery, how to add a new service. | | `docs/progress.md` | Phase-by-phase checklist of what was delivered; backlog of remaining work. **Primary status source of truth.** | | `docs/last_step.md` | Narrative of the latest completed delivery (Phase 4 / brief Phase 3) and proposed next phase (white-label runtime). | ### Package READMEs | Document | Purpose | | --- | --- | | `README.md` | Project entrypoint: overview, quick start, links to `docs/`, high-level tree. | | `backend/README.md` | Backend boundary, tree, Core run/test commands, no-UI rule. | | `frontend/README.md` | Frontend boundary, stack versions, run commands, white-label note. | | `backend/services/README.md` | States that `services/` holds future service placeholders and architecture rules. | | `backend/core-service/alembic/README.md` | How to create/apply/downgrade Core Alembic migrations. | ### Service READMEs | Document | Purpose | | --- | --- | | `identity-access/README.md` | Real Identity & Access service: Keycloak BFF, DB, run/test, basic OIDC flow. | | `accounting` … `notification` READMEs (12 files) | Placeholder scope statements: intended responsibilities, independent DB name, entitlement prefix, API/event-only rule. | --- ## 3. Validity assessment Legend: - **Valid** — accurate enough to trust as current guidance - **Partially valid** — still useful but contains stale or incomplete claims - **Placeholder-valid** — intentionally aspirational / not yet implemented (OK if labeled clearly) - **Stale** — claims that contradict current code / fresher docs | Document | Validity | Notes | | --- | --- | --- | | `docs/progress.md` | **Valid** (best status doc) | Reflects phases 1–4 done, JIT done, nginx+SSL done, white-label partial. | | `docs/last_step.md` | **Mostly valid** | Best narrative of “what just shipped” and next phase; white-label wording is transitional. | | `docs/architecture.md` | **Partially valid** | Core principles still correct; several operational claims stale (JIT deferred, nginx later, “only Core implemented”). | | `docs/database_schema.md` | **Mostly valid** | Core/Identity schema docs remain useful; future service DBs correctly marked conceptual. | | `docs/services_contracts.md` | **Partially valid** | Onboarding/Identity contracts largely correct; missing newer public tenant-site + SSL; JIT `403` note may be outdated. | | `docs/developer_guide.md` | **Partially valid** | Setup still useful; `services/` “all placeholder”, missing Identity/env/SSL/production ops, possible API client naming confusion. | | `README.md` | **Partially valid** | Quick start OK; claims only phases 1–2; tree omits `infrastructure/`, `scripts/`. | | `backend/README.md` | **Partially valid** | Boundary rules OK; `services/` still called placeholder-only. | | `frontend/README.md` | **Partially valid** | Separation OK; does not describe onboarding/tenant host/SSO pages; cites `api-client.ts` while primary client is `api.ts` (both files exist). | | `backend/services/README.md` | **Stale** | Says no services implemented in Phase 1 / only READMEs — Identity is implemented. | | `alembic/README.md` | **Valid** | Narrow and accurate for Core migrations. | | `identity-access/README.md` | **Partially valid** | Correct as a real service, but API list incomplete vs contracts (mobile/session APIs). | | Business service READMEs (12) | **Placeholder-valid** | Correctly labeled unimplemented; still useful as future module map. | --- ## 4. Overlaps | Topic | Documents that cover it | Overlap assessment | | --- | --- | --- | | FE/BE separation rules | `architecture.md` §2.1, `developer_guide.md`, `README.md`, `backend/README.md`, `frontend/README.md` | **Heavy overlap** — same rule repeated 5 times. Keep once in architecture; short pointer elsewhere. | | Database-per-service / no cross-DB | `architecture.md`, `services_contracts.md`, `services/README.md`, most service READMEs | Intentional repetition; OK if architecture is canonical and others link to it. | | Phase status / what is done | `progress.md`, `last_step.md`, `README.md`, `architecture.md` intro | **Conflict risk** — status should live only in `progress.md` (+ short pointer in `last_step.md`). | | Onboarding / Phase 4 | `architecture.md` §11, `services_contracts.md` §7, `progress.md`, `last_step.md`, `database_schema.md` | Complementary if roles are clear: architecture=model, contracts=API, progress=checklist, last_step=narrative. | | Identity / SSO / OTP | `architecture.md`, `services_contracts.md`, `progress.md`, `identity-access/README.md` | Overlap acceptable; Identity README should not duplicate full contracts. | | White-label | `architecture.md` §10, `frontend/README.md`, `progress.md`, `last_step.md` | Overlap + **inconsistency** on “done vs partial”. | | Future service list | `architecture.md`, `database_schema.md` conceptual DBs, 12 service READMEs | Triple map of the same modules — consolidate later. | | How to run the stack | `README.md`, `developer_guide.md`, `backend/README.md`, `frontend/README.md` | Moderate overlap; root README should stay the short path. | --- ## 5. Obsolete or stale claims | Claim | Where | Why obsolete / stale | | --- | --- | --- | | Repo includes only Phase 1 + Phase 2 | `README.md` | Phases 3–4 are delivered per `progress.md`. | | In Phase 1 only Core is implemented; everything under `services/` is placeholder | `architecture.md`, `backend/README.md`, `developer_guide.md`, `backend/services/README.md` | Identity & Access is a real implemented service. | | JIT Core user from Keycloak JWT is deferred / yields `403` | `architecture.md` §11, `services_contracts.md` §7 | JIT implemented in `UserService.resolve_current`; marked done in `progress.md` / `last_step.md`. | | Nginx/Traefik added in later phases | `architecture.md` §9 | Production nginx + TLS + tenant auto-SSL are in place. | | White-label is only static `theme.config.json` | older framing in architecture / last_step residual wording | Partial runtime exists: `GET /public/tenant-site`, `TenantSitePage`, subdomain-aware `useTheme`. | | Outbox “real publish later” | `architecture.md` / workers commentary | Still largely true for message bus, but progress backlog already tracks it — keep, but don’t imply whole infra is unimplemented. | | Admin login is a dedicated OTP UI | older progress wording (partially corrected) | Admin login now routes through central SSO; OTP still exists via Identity/Keycloak + Core APIs. | **Not obsolete (still intentionally open):** - Real payment gateway - Real DNS/TXT custom-domain verification - Membership/plan auto-provision on legacy `POST /admin/tenants` - First real business module (Restaurant etc.) - Advanced permissions / invites - Independent Subscription service - Real message bus --- ## 6. Missing topics Topics that are **implemented or operationally real** but poorly / not documented in architecture docs: 1. **Production deployment topology** — hosts (`192.168.10.162` app, `192.168.10.156` nginx), domains (`torbatyar.ir`, `api.`, `identity.`, `auth.`, `*.torbatyar.ir`). 2. **Nginx routing & TLS model** — apex vs service hosts vs tenant subdomains; HTTP→HTTPS rules; LE cert expand. 3. **Automatic tenant SSL provisioning** — `SSL_PROVISION_*`, Celery task `provision_domain_ssl`, `provision_ssl.py`. 4. **Public tenant site API & UX** — `GET /api/v1/public/tenant-site`, guest landing vs member services on subdomain. 5. **Cross-subdomain auth cookies** — cookie Domain=`.torbatyar.ir`, login redirect via apex. 6. **Alembic production practice** — `upgrade 0001_initial && stamp head` used in compose (important operational caveat vs “upgrade head”). 7. **Phase numbering glossary** — brief “Phase 3” vs docs “فاز ۳ OTP” vs docs “فاز ۴ onboarding”. 8. **ADRs / decision log** — no Architecture Decision Records. 9. **Security model summary** — platform_admin vs tenant roles vs Identity memberships (two membership tables). 10. **Observability / logging / backup / disaster recovery** — absent. 11. **CI/CD & git workflow** — Gitea remote exists; no architecture doc. 12. **Frontend API client map** — `lib/api.ts` vs `lib/api-client.ts` roles. 13. **Celery queues & SSL worker networking** — worker must reach nginx host over SSH. 14. **Keycloak theme / mobile OTP unified login UX** — implemented; scattered across docs. 15. **Roadmap document** — only `last_step.md` + backlog bullets; no dedicated roadmap. --- ## 7. Conflicting information | Conflict | Doc A | Doc B / Reality | Preferred truth | | --- | --- | --- | --- | | Current phase coverage | README: phases 1–2 | progress: phases 1–4 done | **progress.md** | | Are services implemented? | `services/README.md`: none | Identity service exists | **Identity is real; others placeholder** | | JIT provisioning | architecture/contracts: not done / 403 | progress/last_step + `user_service.py`: done | **JIT done (edge cases remain)** | | Reverse proxy / TLS | architecture: later | progress + nginx configs: done | **Nginx/TLS done** | | White-label runtime | architecture: config/theme file framing; last_step: next phase | progress: partial (`tenant-site`, `TenantSitePage`, `useTheme`) | **Partial — next phase to finish** | | Phase “3” meaning | progress: OTP = فاز ۳ | brief/architecture/last_step: onboarding = Phase 3 / docs فاز ۴ | **Needs explicit glossary** | | Frontend API entry | developer_guide / frontend README: `api-client.ts` | Main typed client used by app is largely `api.ts` | **Document both or consolidate** | | Dual `tenant_memberships` | database_schema explains Core vs Identity | Easy to miss; contracts/architecture mention lightly | **Must stay explicit everywhere memberships are discussed** | --- ## 8. Recommendations ### 8.1 Do not rewrite everything yet Wait for approval (per request). When approved, prefer **reconcile + slim**, not a brand-new parallel doc set that duplicates again. ### 8.2 Proposed documentation roles (target model) | Document | Should become | | --- | --- | | `docs/architecture.md` | **Canonical architecture** (principles, components, tenancy, identity, entitlement, events). Status claims removed or linked to progress. | | `docs/database_schema.md` | **Canonical data model** only. | | `docs/services_contracts.md` | **Canonical API/event contracts** only (include public tenant-site). | | `docs/progress.md` | **Only status checklist** (what is done / open). | | `docs/last_step.md` | **Latest delivery narrative + next-step proposal** (or rename to `next-steps.md`). | | `docs/developer_guide.md` | **How to run/develop locally**. | | `README.md` | Short intro + links; no stale phase claims. | | New (recommended): `docs/deployment.md` | Production topology, nginx, TLS, SSL auto-provision, env vars. | | New (recommended): `docs/adr/` | Short decision records for major choices. | | Service READMEs | Identity: keep real; business modules: keep placeholders but link to architecture module map. | ### 8.3 Immediate reconciliation items (when editing is approved) 1. Fix stale JIT / nginx / “phases 1–2 only” / “all services placeholder” statements. 2. Add a **phase numbering glossary** (brief vs internal). 3. Document **tenant subdomain runtime** (public site, theme, cookies, SSL). 4. Update Identity README API table to match contracts. 5. Clarify `api.ts` vs `api-client.ts`. 6. Update root tree to include `infrastructure/` and `scripts/`. ### 8.4 What not to do - Do not create a second “full architecture” that competes with `architecture.md` without retiring overlaps. - Do not treat placeholder service READMEs as implementation status. - Do not mix roadmap, status, and architecture in one file. ### 8.5 Suggested reading order (today) 1. `docs/progress.md` + `docs/last_step.md` — current truth 2. `docs/architecture.md` — design intent (discount stale ops claims) 3. `docs/database_schema.md` + `docs/services_contracts.md` 4. `README.md` + developer/frontend/backend READMEs 5. `identity-access/README.md` + other service placeholders --- ## Appendix A — Inventory matrix (compact) | # | Document | Purpose class | Valid? | Obsolete bits? | Overlaps | | --- | --- | --- | --- | --- | --- | | 1 | `docs/architecture.md` | Architecture | Partial | JIT, nginx, Core-only | High | | 2 | `docs/database_schema.md` | Data model | Mostly | Minor | Medium | | 3 | `docs/services_contracts.md` | Contracts | Partial | JIT 403; missing public site | Medium | | 4 | `docs/developer_guide.md` | Dev ops | Partial | placeholders; env gaps | Medium | | 5 | `docs/progress.md` | Status | Yes | — | With last_step | | 6 | `docs/last_step.md` | Status/narrative | Mostly | White-label nuance | With progress | | 7 | `README.md` | Entry | Partial | Phase 1–2 only | High | | 8 | `backend/README.md` | Package | Partial | placeholders | Medium | | 9 | `frontend/README.md` | Package | Partial | incomplete FE map | Medium | | 10 | `backend/services/README.md` | Package | Stale | “none implemented” | High | | 11 | `alembic/README.md` | Tooling | Yes | — | Low | | 12 | `identity-access/README.md` | Service | Partial | incomplete APIs | Medium | | 13–24 | Business service READMEs | Placeholders | Placeholder-valid | N/A if labeled | With architecture module list | --- ## Appendix B — Approval gate **No further architecture documentation changes will be made until approval.** When approved, recommended first deliverables: 1. Reconcile stale claims in existing docs (minimal edits). 2. Add `docs/deployment.md`. 3. Optionally introduce `docs/adr/` and a slim `docs/roadmap.md` (or rename `last_step.md`). Awaiting decision before creating the final architecture documentation set.