How ajibare/business-platform-api works
This is a NestJS REST API for a multi-product SaaS platform, with Pharmacy Stock Intelligence as its first product. Users call versioned API endpoints; authentication and organisation-role checks protect pharmacy operations, which cover medicine and supplier records, receipts, batches, inventory movements, stock counts, expiry monitoring and reports. Services use Prisma for persistence. The README names broader platform capabilities, but their implementations were not sampled, so those are shown as a single platform subsystem. Links reflect documented wiring or indexed source references; unsampled internals are not inferred.
Main entry points: app.module.ts NestJS application · roles.guard.ts Role guard · jwt-auth.guard.ts JWT guard · medicines.controller.ts Medicine endpoints
Components 27
API runtime
- NestJS application
src/app.module.ts
Identity and access
- Auth endpoints
src/modules/platform/auth/auth.controller.ts - Authentication
src/modules/platform/auth/auth.service.ts - JWT guard
src/common/guards/jwt-auth.guard.ts - Role guard
src/common/guards/roles.guard.ts - User context
src/common/decorators/current-user.decorator.ts - Role metadata
src/common/decorators/roles.decorator.ts
SaaS platform
- Platform services
src/modules/platform
Pharmacy operations
- Medicine endpoints
src/modules/products/pharmacy/medicines/medicines.controller.ts - Medicine catalogue
src/modules/products/pharmacy/medicines/medicines.service.ts - Supplier endpoints
src/modules/products/pharmacy/suppliers/suppliers.controller.ts - Supplier records
src/modules/products/pharmacy/suppliers/suppliers.service.ts - Receipt endpoints
src/modules/products/pharmacy/receipts/receipts.controller.ts - Receipt processing
src/modules/products/pharmacy/receipts/receipts.service.ts - Batch endpoints
src/modules/products/pharmacy/batches/batches.controller.ts - Batch records
src/modules/products/pharmacy/batches/batches.service.ts - Movement endpoints
src/modules/products/pharmacy/inventory/inventory.controller.ts - Inventory movements
src/modules/products/pharmacy/inventory/inventory.service.ts - Stock count endpoints
src/modules/products/pharmacy/counts/counts.controller.ts - Stock counts
src/modules/products/pharmacy/counts/counts.service.ts - Expiry endpoints
src/modules/products/pharmacy/expiry/expiry.controller.ts - Expiry monitoring
src/modules/products/pharmacy/expiry/expiry.service.ts - Report endpoints
src/modules/products/pharmacy/reports/reports.controller.ts - Pharmacy reports
src/modules/products/pharmacy/reports/reports.service.ts
Persistence
- Prisma service
src/database/prisma.service.ts - PostgreSQL
Other components
- API client
Connections 48
- API client → Auth endpoints: calls
README.md - API client → Medicine endpoints: calls
README.md - API client → Supplier endpoints: calls
README.md - API client → Receipt endpoints: calls
README.md - API client → Batch endpoints: calls
README.md - API client → Movement endpoints: calls
README.md - API client → Stock count endpoints: calls
README.md - API client → Expiry endpoints: calls
README.md - API client → Report endpoints: calls
README.md - NestJS application → Auth endpoints: registers
src/app.module.ts - NestJS application → Platform services: registers
src/app.module.ts - NestJS application → Medicine endpoints: registers
src/app.module.ts - NestJS application → Supplier endpoints: registers
src/app.module.ts - NestJS application → Receipt endpoints: registers
src/app.module.ts - NestJS application → Batch endpoints: registers
src/app.module.ts - NestJS application → Movement endpoints: registers
src/app.module.ts - NestJS application → Stock count endpoints: registers
src/app.module.ts - NestJS application → Expiry endpoints: registers
src/app.module.ts - NestJS application → Report endpoints: registers
src/app.module.ts - Auth endpoints → Authentication: delegates to
src/modules/platform/auth/auth.controller.ts - Medicine endpoints → Medicine catalogue: delegates to
src/modules/products/pharmacy/medicines/medicines.controller.ts - Supplier endpoints → Supplier records: delegates to
src/modules/products/pharmacy/suppliers/suppliers.controller.ts - Receipt endpoints → Receipt processing: delegates to
src/modules/products/pharmacy/receipts/receipts.controller.ts - Batch endpoints → Batch records: delegates to
src/modules/products/pharmacy/batches/batches.controller.ts - Movement endpoints → Inventory movements: delegates to
src/modules/products/pharmacy/inventory/inventory.controller.ts - Stock count endpoints → Stock counts: delegates to
src/modules/products/pharmacy/counts/counts.controller.ts - Expiry endpoints → Expiry monitoring: delegates to
src/modules/products/pharmacy/expiry/expiry.controller.ts - Report endpoints → Pharmacy reports: delegates to
src/modules/products/pharmacy/reports/reports.controller.ts - Medicine endpoints → JWT guard: guards with
src/modules/products/pharmacy/medicines/medicines.controller.ts - Supplier endpoints → JWT guard: guards with
src/modules/products/pharmacy/suppliers/suppliers.controller.ts - Receipt endpoints → JWT guard: guards with
src/modules/products/pharmacy/receipts/receipts.controller.ts - Batch endpoints → JWT guard: guards with
src/modules/products/pharmacy/batches/batches.controller.ts - Movement endpoints → JWT guard: guards with
src/modules/products/pharmacy/inventory/inventory.controller.ts - Stock count endpoints → JWT guard: guards with
src/modules/products/pharmacy/counts/counts.controller.ts - Expiry endpoints → JWT guard: guards with
src/modules/products/pharmacy/expiry/expiry.controller.ts - Report endpoints → JWT guard: guards with
src/modules/products/pharmacy/reports/reports.controller.ts - Medicine endpoints → Role guard: guards with
src/modules/products/pharmacy/medicines/medicines.controller.ts - Supplier endpoints → Role guard: guards with
src/modules/products/pharmacy/suppliers/suppliers.controller.ts - Receipt endpoints → Role guard: guards with
src/modules/products/pharmacy/receipts/receipts.controller.ts - Batch endpoints → Role guard: guards with
src/modules/products/pharmacy/batches/batches.controller.ts - Movement endpoints → Role guard: guards with
src/modules/products/pharmacy/inventory/inventory.controller.ts - Stock count endpoints → Role guard: guards with
src/modules/products/pharmacy/counts/counts.controller.ts - Expiry endpoints → Role guard: guards with
src/modules/products/pharmacy/expiry/expiry.controller.ts - Report endpoints → Role guard: guards with
src/modules/products/pharmacy/reports/reports.controller.ts - Medicine endpoints → User context: extracts context
src/modules/products/pharmacy/medicines/medicines.controller.ts - Supplier endpoints → User context: extracts context
src/modules/products/pharmacy/suppliers/suppliers.controller.ts - Stock count endpoints → Role metadata: sets roles
src/modules/products/pharmacy/counts/counts.controller.ts - Role guard → Role metadata: reads roles
src/common/guards/roles.guard.ts