The rebase onto Dev resolved five conflicts; four were wrong. In the service files Dev's constructor parameter lists won while the branch's field declarations and constructor bodies stayed, so the bodies assigned parameters that no longer existed. - AdjustmentService: restore fifo, approvals, db and serialTracking parameters (Dev's glAccounts kept, configuration dropped). - FifoCostingService: restore the LowStockTracker field, parameter and assignment. - CountService: restore _serialTracking and _adjustments, and delete Dev's PostAdjustmentJournalAsync. Dev's call site did not survive the rebase, so the method was orphaned dead code referencing fields this class no longer has. The branch routes count variances through AdjustmentService.SubmitAsync, which posts via Dev's role-keyed glCodes, so nothing is lost by removing it. - PurchaseInvoicePaymentService: this one compiled. paymentDay was computed but the GL period and EntryDate still used now, so a back-dated payment posted its journal to today's period. Use paymentDay, and resolve "today" through BusinessClock, matching SalesInvoicePaymentService. - ErpDbContextModelSnapshot: the resolution dropped the whole Expense module from the definition and relationship sections while leaving its navigation entries behind, so the snapshot no longer loaded. Rebuilt as the branch's snapshot plus Dev's GlAccountConfig blocks; EF now reports no pending model changes. Tests: BankDepositTestSupport's FakeGeneralLedger gains the ListAccountsAsync member Dev added to IGeneralLedgerService, and DualApprovalTests passes a StubGlAccountConfigService in place of the removed IConfiguration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ERP System — Inventory & Supply Chain (Phase 1)
A modular ERP built in phases. Phase 1 delivers Inventory & Supply Chain: master data, procurement, goods receipt, and stock management with FIFO costing, multi-warehouse, single-tenant.
Monorepo: a .NET 10 REST API backend and a Next.js frontend, with all documentation under docs/.
Repository layout
erp-monorepo/
├── Backend/ # ASP.NET Core Web API (.NET 10, PostgreSQL) + PROGRESS.md
├── Frontend/ # Next.js (App Router, TypeScript) + PROGRESS.md
└── docs/ # all documentation — START AT docs/00-CORE.md
Start here
All work begins at docs/00-CORE.md — the hub. It defines structure, tech stack, backend setup, and routes you to the right doc.
| Doc | Purpose |
|---|---|
docs/00-CORE.md |
Hub: structure, stack, backend init, routing |
docs/01-DOC-GUIDE.md |
Doc map, reading order, tracking conventions |
docs/10-BACKEND-PHASE1.md |
Backend spec: SRS + ER model + architecture |
docs/11-BACKEND-PHASE1.md |
Backend API reference (complete req/res) |
docs/20-FRONTEND.md |
Frontend user-flows + rules + validation posture |
Backend/PROGRESS.md, Frontend/PROGRESS.md |
Change checklists (git-shared) |
Prerequisites
- .NET 10 SDK (
dotnet --version→10.0.x) - PostgreSQL running on localhost
dotnet-eftool (dotnet tool install --global dotnet-ef)- Node.js (for the frontend)
Run the backend
# create the database in your local Postgres first, e.g.:
# createdb -U postgres ERPCore (or: CREATE DATABASE "ERPCore"; in psql)
cd Backend/ERPCore
# set Username/Password in appsettings.Development.json to your local Postgres login
dotnet ef database update
dotnet run
- Swagger UI:
https://localhost:<port>/swagger - Health:
https://localhost:<port>/health→Healthy
Full setup (packages, folder scaffold, Program.cs wiring) is in docs/00-CORE.md §5.
Run the frontend
cd Frontend
cp .env.local.example .env.local # set NEXT_PUBLIC_API_BASE_URL=https://localhost:<port>
npm install
npm run dev
Configuration & secrets
- Three appsettings files: base (
appsettings.json, placeholders only),Development(localhost),Production(env vars). - Local dev only currently. Before any shared/staging/production use, move secrets to User Secrets (dev) and environment variables (prod), keep
appsettings.Development.json/appsettings.Production.jsonout of git, and rotate any credential ever committed.
Tech stack
Backend: .NET 10, ASP.NET Core Web API, EF Core 10, PostgreSQL (Npgsql), JWT bearer auth, Serilog, Swashbuckle/Swagger, HealthChecks. Layering: Controller → Service → Repository → UnitOfWork, DTOs at the controller boundary, FIFO in a domain service. Frontend: Next.js (App Router) + TypeScript, plain React hooks, dependency-free validation (client for UX; server is authoritative).
Conventions
- Documentation: one source of truth per topic; edit in place; navigate from
docs/00-CORE.md. - Progress: update the relevant
PROGRESS.mdin the same commit as the code (docs/01-DOC-GUIDE.md §6).
Roadmap (future phases)
Sales & CRM · Manufacturing & Production · QC/QA · Accounting · HRM. Phase 1 reserves the integration seams (GL-ready journal entries, reservation status, goods-issue movement, inspection hold, user identity) so later phases integrate without a schema migration.