Technology stack
Purpose
Section titled “Purpose”Inventory technologies so handover engineers know what to install and what not to assume (e.g. Next.js is not part of the Frappe app).
Application (leekimerp/leekimerp/)
Section titled “Application (leekimerp/leekimerp/)”| Layer | Component | Notes |
|---|---|---|
| Platform | Frappe / ERPNext | Versions come from your Bench environment; confirm with bench version. |
| Language | Python | DocTypes, hooks, api/, reports |
| Database | MariaDB (typical) | Via Frappe ORM; no Cloudflare D1 |
| Desk UI | Frappe Desk | Custom JS under public/js/ |
| Charts | Highcharts (CDN) | Declared in hooks.py app_include_js |
| App metadata | hooks.py, modules.txt | Modules: Lee Kim Alliance ERP, Time Tracking, Singpass, Incorporate, Payroll Plus |
requirements.txt in the app lists dash, pandas only; framework versions are managed by Bench, not this file alone.
Repository root (package.json)
Section titled “Repository root (package.json)”| Package | Role |
|---|---|
| express, socket.io, redis | Websocket / realtime extension (description in root package.json) |
| axios, dotenv, superagent | HTTP / env helpers |
Treat this as adjacent infrastructure, not the Desk frontend stack.
Documentation site (docs/)
Section titled “Documentation site (docs/)”| Component | Role |
|---|---|
| Node.js 22.12+ | Build/runtime for docs (docs/.nvmrc, engines; Astro 6 requirement) |
| Astro 6 | Static site generator |
| Starlight | Docs UI, Pagefind search |
| @astrojs/cloudflare | Adapter; prerenderEnvironment: 'node' for reliable Starlight prerender |
| Wrangler (dev) | Optional preview:cf |
Deploy: Cloudflare Pages (docs site). This site is not the ERP application.
Configuration
Section titled “Configuration”- Production: site_config.json, common_site_config.json, integration DocTypes (Xero, Stripe, etc.)
- Never commit API keys; use secrets or env injection per your ops policy.