TorbatYar/docs/current-architecture-review.md
Mortezakoohjani 12c8615615 Ship enterprise Accounting FE/API with CRUD parity and production wiring.
Adds accounting-service PATCH/archive, fiscal helpers, COA templates and setup status, plus SuperApp Accounting UI (DS, scoreboard, masters, vouchers, ledger, ops modules) with session refresh and HTTPS public API URLs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 15:26:43 +03:30

18 KiB
Raw Blame History

DEPRECATED — Current Architecture Documentation Review

Status: Deprecated historical inventory (2026-07-22).
Superseded by: docs/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

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.
accountingnotification 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 14 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 12; 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 34 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 dont 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 provisioningSSL_PROVISION_*, Celery task provision_domain_ssl, provision_ssl.py.
  4. Public tenant site API & UXGET /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 practiceupgrade 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 maplib/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 12 progress: phases 14 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 12 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 12 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
1324 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.