ImanThiyanga c30ff473f5 Add the GL Accounts settings screen
Pickers are populated from GL's own chart of accounts, postable and active
accounts only, so a user can only choose a code the server will accept. A
stored code GL does not have is shown flagged and still selected rather
than appearing blank, which is the state 11 of the 12 mappings are in until
GL's chart is seeded - the broken mapping stays visible instead of looking
merely unset.

Options come from /gl-account-config rather than the GL proxy: that proxy
is gated on the `ledgers` nav permission while this screen is on
`settings`, and one endpoint keeps the picker and the server-side
validation working from the same list. Gated on the existing `settings` key
so no role_permissions edit is needed.

Saving is disabled outright while GL is unreachable, matching the server,
which refuses to store a mapping it could not verify.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-07 13:17:22 +05:30
2026-10-05 17:40:04 +05:30

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-ef tool (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.json out 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.md in 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.

S
Description
No description provided
Readme 43 MiB
Languages
TypeScript 50.4%
C# 47.8%
Python 1.7%
CSS 0.1%