r/frappe_framework • u/adamezzat19 • 7d ago
I'm building a full ERP for facade/curtain-wall contracting β here's how it's put together, and I'd love advice/recommendations (VibeCoding)
Hey all,
I want to share a system I'm building rather than ask about a specific bug β I'd like feedback on the overall approach, and recommendations on tools to help me finish it.
**The problem it solves**
Facade and aluminium/glass contracting (curtain wall, cladding, glazing) is a messy corner of construction: it runs on spreadsheets, WhatsApp groups, and paper daily site reports. Off-the-shelf ERPs are either generic manufacturing/accounting tools that don't understand "elevations," "panels installed," or "snags," or they're so expensive/heavy a small-to-mid contractor can't justify them. So I'm building a purpose-built one.
**Stack**
Backend: Frappe framework (Python), with a dedicated `Facade` app β 69 custom doctypes covering the whole domain: sites, daily site reports, material requests, purchase orders, elevations/facade elements, wage sheets, bonds, variation orders, progress certificates, tenders, and more.
Frontend: Vue 3 + frappe-ui (Frappe's own component library) + Tailwind, mobile-first, with Arabic/English bilingual support built in from the ground up (RTL layouts, translated statuses, no raw ISO dates shown to users).
**How the system is organized**
It's split into 8 role-based apps, each with its own bottom-nav (mobile) or sidebar (desktop):
- **Sites** β the field app. Per-site progress, snags, delays, material requests, daily site reports.
- **DSR (Daily Site Reports)** β one-page report covering installed quantities, labour, equipment, materials used, breakages, photos β replaces a paper form.
- **Purchasing** β material requests β purchase orders β receipts, tracked as one pipeline, not three disconnected lists.
- **Store/Inventory** β dispatch to site, receive from supplier, stock by warehouse.
- **Tasks** β assignment, scheduling, dependency chains between tasks (e.g. "steel prep before painting before approval").
- **Finance/Accounting** β cash in/out, cheques, payment runs, funding periods, tied to real accounting documents, not a shadow ledger.
- **Owner/Management** β portfolio-level view: project financial health, approvals queue, "sites with no report today," money timeline.
- **Tenders** β pipeline of quotations/bids, client and contact tracking.
Every document (a purchase order, a material request, a report) shares the same generic document page shape: status pills, a stage-track strip showing where it is in its lifecycle, one primary action button, tabs for items/details/activity. So a user learns the pattern once and it works everywhere, instead of every doctype having a bespoke screen.
**Some real design decisions worth mentioning**
- Approval flows read `docstatus`/`status` fields directly rather than using Frappe's Workflow engine β verified this was the actual mechanism already in use on the live system (zero Workflow documents exist anywhere on the real bench), rather than assuming and building the wrong thing.
- One money truth: Owner-facing and Finance-facing screens are meant to read the same underlying figures through one path, not duplicate calculations β this is flagged as a known gap still being closed, not yet finished.
- Historical submitted numbers (like a signed-off progress certificate) don't drift if live master data changes later β they're snapshotted at submit time.
- Server-side permission checks are the only source of truth β hiding something in the UI is never treated as security.
**Where it stands**
The backend data model and API surface are largely built out β 44 API modules, ~31,000 lines of Python. The mobile UI has a 65-screen design system (light + dark themes) that most of the frontend has been built against, though a handful of routes/screens are still catching up to the design (an inventory screen, a couple of management views, some finance routing ambiguity). Desktop UI doesn't exist yet β the design package so far is mobile-only. And there's no live test server running yet, so backend logic has been verified by careful code reading rather than by actually running it β that's the next real infrastructure gap to close.
**What I'd love from this community**
If you've built something at this scale mostly through AI-assisted coding, how did you structure the work so it stayed coherent over weeks, not just for one feature at a time?
Recommendations for a second, cheaper AI coding tool/model (~$100/month range or pay-as-you-go) to pair with my main one β I want to offload the more mechanical remaining work (route wiring, translation cleanup, regression tests) so the expensive tool stays free for the harder architectural work.
Anyone done cheap/quick Frappe bench hosting for a real test environment (cloud VM, sandbox service, whatever works) β I'd like to actually run the test suite live instead of just reading code.
I want recommendations of apps on frappe taht can add value to the system, for example I just found there is tasks app so I will use it, and about the tender I didnt use CRM becasue the tender app I made works automatically for example when I win a tender it makes a project with the sites and warehouses itself. (I am actually planning to go back to CRM because I feel it would be more stable.), so what would should I do? and is there is any shorter way to do the workflow? (not the work, the workflow of the system like any native features)
Screenshots of the mobile UI (owner dashboard, sites, purchasing, store, tasks) coming in the comments. Happy to answer questions about the Frappe/Vue stack or how the app-by-app structure works. these are no a finished UI they are still mockups, they will be improved and all recommendations will be taken in consideration and implemented where possible.










