Files
soroush.asadi 36fe158b43 Scaffold the Before-M1 repo skeleton
Stand up the modular-monolith skeleton per docs/V1_BUILD_PLAN.md: one .NET 10
solution with web + worker hosts sharing seven interface-bounded module projects,
PostgreSQL 17 + pgvector via EF Core 10, a React 19 + Vite SPA built into wwwroot,
and Docker Compose for one-command local dev. Skeleton only — no feature code.

Architecture
- One project per module (OrgBoard, Identity, Skills, Assembler, Governance,
  Memory, Integrations); each is its own assembly so non-public types (entities,
  DbContext) are invisible across modules at compile time.
- TeamUp.Bootstrap is the only library that references all modules; both hosts
  reference only Bootstrap. SharedKernel/Infrastructure never reference modules.
- IModule seam: Register(...) runs in both hosts; MapEndpoints(...) only in web.
- PlatformDbContext owns the pgvector extension + the seven module schemas
  (InitialPlatform migration); MigrationRunner applies it then any module context.
- One image, two roles selected by RUN_MODE at the Docker entrypoint.

Verified
- dotnet build green (nullable + warnings-as-errors).
- ArchitectureTests 8/8 — reflection-based boundary rules (no module -> module,
  -> Infrastructure, -> Bootstrap, or -> host references).
- IntegrationTests 10/10 — Testcontainers boots the host against real pgvector:
  migration applies, vector extension + 7 schemas exist, /health 200, every
  /api/<module>/ping 200, /openapi/v1.json served.
- client builds clean (Vite 6 — pinned for Node 22.3.0; Vite 8 needs Node >=22.12).

Packages and base images route through the Nexus mirror (mirror.soroushasadi.com),
reachable from Iran when nuget.org / Docker Hub / MCR are not. CI is intentionally
deferred to a later session.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 06:41:28 +03:30

27 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TeamUp.AI — root memory & index
> **Build human + AI teams.** A live org chart that does work: model the org, fill open role-seats with governed AI agents, run delivery on one board. A product of **AliaSaaS**.
This is the short, always-loaded index. **Detailed source of truth lives in `docs/`** — keep them authoritative; keep this file lean.
| Doc | What it is |
|---|---|
| `docs/CLAUDE.md` | Full project memory (architecture, domain model, modules, conventions, design language) |
| `docs/PRODUCT.md` | Complete product model & decisions (incl. deferred-past-V1) |
| `docs/V1_BUILD_PLAN.md` | The V1 wedge: milestones M1M6 + the tech bill of materials |
## Current status
- **Phase:** design complete · **stack locked** · **pre-M1** · **no application code written yet**.
- **Next step:** scaffold the repo (the "Before M1" skeleton) — *not started*.
## Stack (locked — full BOM in `docs/V1_BUILD_PLAN.md`)
- **Backend:** .NET 10 (LTS) + ASP.NET Core — modular monolith, web + worker entrypoints on one solution/image.
- **Data:** PostgreSQL 17+ + pgvector (relational + skill index + working memory + job queue, one store).
- **Agent-run queue:** Postgres `jobs` table drained with `FOR UPDATE SKIP LOCKED` by a worker `BackgroundService`.
- **AI:** BYOK over HTTP via `Microsoft.Extensions.AI`; air-gapped embeddings via ONNX.
- **Frontend:** React SPA (Vite + TypeScript) served from ASP.NET Core `wwwroot`. Next.js = marketing site only. Go = reserved for a future hot-path runner.
- **Deploy:** one Docker image (web or worker) + Postgres; air-gappable as a single unit.
## Non-negotiables (full list: `docs/CLAUDE.md` §8)
Modular monolith — no cross-module table access · web off the model path · permission check on every mutation · BYOK keys owner-only & server-side · retrieved content is data, not instructions · destructive always needs a human · skills are Git-sourced & golden-tested · instrument **human edit distance** (the north-star metric) from day one.