How to build an app like MaintainX: CMMS and maintenance management software breakdown
Building a custom CMMS like MaintainX costs $140,000-$200,000 and takes 14-18 weeks. Core modules are work order management, asset management with QR codes, preventive maintenance scheduling, parts inventory, digital inspection forms, and a mobile technician app with offline capability. The primary tech stack is React, React Native, Node.js, PostgreSQL, Firebase for push notifications, and AWS S3 for document storage. Manufacturers and facilities groups with 100+ assets typically recoup the build cost within 3-5 years against MaintainX subscription fees.
Key Takeaways
- MaintainX charges $16-$115 per user per month depending on plan. A maintenance team of 20 pays $3,840-$27,600 per year. At 50 users, the top-tier plan costs $69,000 per year.
- A custom CMMS costs $140,000-$200,000 to build once and takes 14-18 weeks. Manufacturers with proprietary equipment taxonomies, hospital facilities with HIPAA requirements, and food plants with FDA compliance needs build custom because generic CMMS platforms cannot match their specific data models.
- Preventive maintenance scheduling is the highest-value feature. Trigger work orders by calendar interval (every 30 days) or meter reading (every 500 hours of runtime). Auto-generated work orders from PM triggers reduce emergency breakdowns and cut MTTR significantly.
- The mobile technician app must work offline. Factory floors and industrial job sites have unreliable WiFi. Technicians complete work orders, add photos, and record parts used offline. The app syncs when a connection is restored.
- QR code asset labels are the fastest path to data accuracy. Scanning a machine's QR code pulls its full maintenance history, attached manuals, and open work orders instantly -- no manual search required.
MaintainX raised $50M+ and built a strong product. The pricing reflects it. A maintenance team of 20 technicians on the Advanced plan pays $11,760 per year. Step up to Enterprise for features like advanced reporting, custom integrations, and priority support, and that same team pays $27,600 per year. Scale to 50 users and annual cost approaches $69,000.
For a single small facility, that is a reasonable price for a polished product. For a manufacturer with proprietary equipment, a hospital managing Joint Commission compliance requirements, or a commercial real estate group maintaining 50+ buildings, the math changes -- and the generic platform's limitations start showing before the price does.
This guide covers what a custom CMMS build involves: work orders, assets, preventive maintenance, parts inventory, inspection forms, and the mobile app that technicians actually use. Cost runs $140,000-$200,000. Timeline is 14-18 weeks.
What a CMMS actually is
CMMS stands for Computerized Maintenance Management System. The name is dated but the function is specific: a system that tracks what needs to be maintained, who does the maintenance, what parts and time it takes, and whether the scheduled maintenance actually happened.
MaintainX, UpKeep, Limble, and Fiix all cover the same core territory: work orders, asset records, preventive maintenance schedules, and a mobile app for technicians. They differ in depth, compliance features, and how well they model specific industry asset taxonomies.
The case for building custom is not usually about feature parity. It is about data model fit and compliance requirements. A food processing plant needs maintenance records that satisfy FDA 21 CFR Part 11 requirements. A hospital needs HIPAA-compliant maintenance logs for medical equipment. A manufacturer with proprietary machinery needs an asset taxonomy that does not exist in any generic CMMS catalog. Those organizations build custom because the off-the-shelf product cannot model their specific operational reality.
Work orders: the core workflow
Every maintenance operation runs on work orders. A work order (WO) is the record of a maintenance task from creation to completion.
A WO has a title and description, a priority level (critical, high, normal, low), an asset it is tied to, a location, an assigned technician, a due date, a status (open, in-progress, on-hold, completed), a list of parts used, hours of labor logged, and resolution notes written by the technician when the job is done.
The status flow is not always linear. A WO opens when maintenance is requested. It moves to in-progress when a technician starts work. It can move to on-hold if the required parts are not in stock or if the equipment cannot be taken out of service yet. It moves to completed when the technician closes it with resolution notes. Managers can reopen completed WOs if the repair was inadequate.
Priority matters for the daily queue. Critical work orders are equipment failures that stop production or create safety hazards. They need immediate attention. High priority is degraded performance that can be tolerated briefly. Normal priority is routine repairs. Low priority is cosmetic issues and deferred improvements. The technician's daily task list sorts by priority, then by due date.
The mobile technician app is where most of the WO interaction happens. Technicians are not sitting at desks. They are on factory floors, in equipment rooms, on building rooftops. The mobile app is their primary interface: they receive WO assignments, view the asset's history and documentation, log labor time, photograph the before and after condition, record parts used, and close the WO with resolution notes -- all from their phone.
Asset management with QR code labels
An asset in a CMMS is any piece of equipment, infrastructure, or vehicle that requires maintenance tracking. An HVAC unit, a CNC machine, a commercial elevator, a company vehicle, a fire suppression system -- each gets an asset record.
The asset record holds: make, model, serial number, installation date, warranty expiry date, the asset's maintenance history (every WO ever completed against it), attached documents (the manufacturer's manual, schematics, warranty certificates), and a QR code label.
The QR code is the practical interface between the physical world and the software. A laminated QR code label affixed to the machine lets a technician scan it with their phone to pull up the asset record instantly. No searching by name, no remembering the asset ID -- scan the label and see everything: current open work orders, last five maintenance events, attached documentation, and parts that have been used on this asset historically.
Asset hierarchy matters for facilities managers and manufacturers. A building contains floors. Each floor contains rooms. Each room contains equipment. A manufacturing line contains cells. Each cell contains machines. Each machine contains components. The asset database needs to support parent-child relationships so managers can see all maintenance across a building or a production line in one view.
Warranty tracking is a frequently missed feature that delivers clear value. When a technician logs a repair, the system checks whether the asset is under warranty and flags it if so. Repairs completed under warranty should be documented and submitted to the manufacturer for reimbursement. Without automated flagging, warranty claims are missed.
Preventive maintenance scheduling
Preventive maintenance (PM) schedules are the highest-value feature in any CMMS. They are also where the financial case for maintenance software is most direct: a machine that is maintained on schedule has fewer emergency failures, and emergency repairs cost 3-5 times more than scheduled maintenance.
A PM schedule defines a recurring maintenance task for an asset. There are two trigger types:
Calendar-based triggers fire on a date schedule: every 30 days, every quarter, every 6 months. When the trigger fires, the system automatically generates a work order assigned to the designated technician with the appropriate task template. The task template includes a checklist of what to inspect and service during that PM cycle.
Meter-based triggers fire when an asset reaches a usage threshold: every 500 hours of runtime, every 10,000 miles, every 1,000 production cycles. Meter-based PMs require the system to track the asset's current meter reading. Technicians log readings when they interact with the asset. The system evaluates the next PM trigger after each reading update and generates a work order when the threshold is crossed.
The combination of both trigger types is important. A vehicle might need an oil change every 5,000 miles (meter) and a coolant flush every 2 years (calendar), regardless of mileage. Both schedules coexist on the same asset.
When a PM work order is generated automatically, it appears in the technician's queue like any other work order -- with the asset, the task checklist, and the due date. The PM compliance rate (the percentage of scheduled PMs completed on time) is one of the most important metrics for a maintenance manager. A rate below 80% signals that schedules are too aggressive or the team is understaffed.
Parts and inventory management
Every repair consumes parts. Parts need to be in stock when a repair is needed. The parts inventory module tracks this.
Each part has a name, part number, description, storage location in the stockroom, current quantity on hand, minimum stock level (the reorder point), and unit cost. When a technician completes a work order and records parts used, the inventory decrements automatically.
When stock falls below the minimum level, the system generates a reorder alert. The alert goes to the purchasing manager with the part details, current quantity, and the recommended reorder quantity. More sophisticated builds connect directly to vendor order systems so reorder requests can be submitted with a single approval click.
Parts cost tracking ties back to asset records. Every part used on an asset is recorded, which means the system can report total parts cost per asset over any time period. This data drives replacement decisions: when an aging machine has consumed $40,000 in parts over two years, the case for replacement is quantified.
Digital inspection forms
Inspections differ from repairs. A repair is triggered by a problem. An inspection is a structured evaluation of an asset's condition.
A digital inspection form is a checklist attached to a work order. Each item on the checklist can be pass/fail, yes/no, or a numeric reading (current pressure: ___ PSI, oil level: ___). The technician completes the form on their mobile app during the inspection.
Failed inspection items automatically generate corrective work orders. If the technician marks "belt condition: FAIL" on a conveyor inspection, the system creates a new work order to replace the belt, pre-populated with the asset, the location, and a description referencing the failed inspection item. This closes the gap between identifying a problem and creating the repair ticket -- it happens automatically, with no manual step required.
The inspection form history is audit-ready. Each completed form is timestamped, tied to the technician who completed it, and stored permanently against the asset record. For regulated industries -- food processing, healthcare, aviation -- this audit trail is not optional. It is the documentation that proves maintenance compliance.
Reporting and maintenance metrics
Three metrics define maintenance performance:
MTTR (mean time to repair) measures how long it takes from the moment a failure is reported to the moment it is resolved. A lower MTTR means the team responds faster and machines return to service sooner. It is calculated per asset, per asset type, and across the facility.
MTBF (mean time between failures) measures how long assets run between unplanned failures. Rising MTBF means preventive maintenance is working -- assets are failing less frequently. Declining MTBF signals either aging equipment or inadequate PM schedules.
PM compliance rate measures the percentage of scheduled preventive maintenance work orders that are completed on or before the due date. A rate consistently below 85% signals either scheduling problems or resource constraints that management needs to address.
Cost reporting by asset identifies which machines consume the most maintenance resources. Cost reporting by technician identifies productivity and efficiency differences across the team. Both reports drive staffing and capital expenditure decisions.
The mobile app: built for the field
The technician mobile app is the most important interface in the system. It is also the one that generic CMMS platforms most often get wrong by treating as a simplified web view rather than a purpose-built field tool.
Two requirements are non-negotiable:
Offline capability. Factory floors have concrete walls and interference from machinery. Commercial building basements have no signal. Industrial outdoor sites have patchy coverage at best. The technician app must allow work orders to be viewed, updated, and completed without an active internet connection. All changes -- status updates, parts logging, photos, labor time, resolution notes -- are stored locally on the device and sync to the server when a connection is restored. Building offline sync correctly requires a local SQLite database on the device and a conflict resolution strategy for cases where the server-side record changes while the device is offline.
Photo capture and documentation. Technicians photograph equipment before and after a repair. They photograph the replacement part they installed. They photograph unusual conditions they observe. These photos are attached to the work order record and stored permanently. The mobile app must handle photo capture, local storage, and upload with minimal friction -- the technician should be able to take a photo and move on in under 10 seconds.
QR code scanning from the mobile app pulls up the asset record for the scanned machine. The technician can see all open work orders for that asset, its maintenance history, and attached manuals without navigating any menus. This is the fastest path from physical machine to digital record.
Tech stack
React for the admin web application: work order management board, asset database, PM schedule configuration, inventory management, vendor management, and reporting dashboards.
React Native for the technician mobile app: designed for offline-first operation with local SQLite storage and sync. The mobile app handles work order viewing and updating, QR code scanning, photo capture, parts logging, labor time tracking, digital inspection forms, and push notifications for new WO assignments.
Node.js for the backend API. PostgreSQL for the primary database. The PM schedule trigger evaluation runs as a background job that checks all PM schedules on a regular cycle and generates work orders when triggers fire.
QR code generation for asset labels. Each asset record generates a unique QR code on creation. The QR code URL points to the asset detail page in the mobile app. Physical labels are printed from the admin panel and applied to the equipment.
Firebase Cloud Messaging for push notifications. When a work order is assigned to a technician, they receive a push notification on their mobile app. When a critical priority WO is created, the assigned technician and their manager both receive notifications.
AWS S3 for photo and document storage. Technician photos, inspection records, asset manuals, and vendor documents are all stored in S3 with structured paths by asset ID.
Timeline and cost
A full build takes 14-18 weeks with a team of 5-6 engineers. Weeks 1-4 cover the database schema, work order API, and asset management. Weeks 5-9 cover the admin web application: work order board, asset records, PM schedule configuration, and parts inventory. Weeks 10-14 cover the mobile app with offline sync, QR code scanning, photo capture, and inspection forms. Weeks 15-18 cover reporting, vendor management, push notifications, and load testing.
Cost runs $140,000-$200,000. The lower end assumes a web-admin-focused build with a simpler mobile app. The higher end includes the full offline-capable React Native app, meter-based PM scheduling, digital inspection forms with auto-generated corrective work orders, and advanced reporting.
A manufacturing operation with 50 users on MaintainX Enterprise pays $69,000 per year. The custom build at $200,000 pays for itself in under three years -- before accounting for the value of a data model actually matched to the operation's specific equipment and compliance requirements.
What most builds get wrong
Offline sync is underestimated in almost every mobile-first operations project. Teams plan for it, then scope it down, then discover in user testing that every third work order update is lost because the technician was in a dead zone. Build offline sync as a first-class architectural requirement, not an afterthought. Use SQLite on-device from day one and design the sync protocol before writing any UI code.
PM schedule trigger evaluation is more complex than it looks. Meter-based triggers require up-to-date meter readings to work. If technicians do not log readings consistently, the PM triggers fire late or not at all. The mobile app needs to make meter reading entry easy and routine -- a prompt at work order close, not a separate data entry task. Build the habit into the workflow.
Asset hierarchy design is where teams make decisions that are painful to reverse. Start by mapping the actual physical hierarchy of the facility before designing the database schema. A flat list of assets works for 50 machines. It fails at 500 machines across 10 buildings. Design for the hierarchy from the start.
Get offline sync right. Get meter reading entry into the natural technician workflow. Design the asset hierarchy before writing any schema. The rest of the build is straightforward once those three are addressed.
Frequently asked questions
- A custom CMMS costs $140,000-$200,000 to build, depending on feature scope. Core modules include work order management, asset records with QR codes, preventive maintenance scheduling, parts inventory, digital inspection forms, vendor management, and a mobile technician app with offline capability. Timeline is 14-18 weeks with a team of 5-6 engineers.
- MaintainX pricing in 2026: the Basic plan is free for up to 3 users with limited features. The Essential plan is $16 per user per month, the Advanced plan is $49 per user per month, and the Enterprise plan starts at $115 per user per month. A maintenance team of 20 on the Advanced plan pays $11,760 per year. At 50 users on Enterprise, annual cost reaches $69,000 before any professional services or integrations.
- Core features: work order creation and management with priority levels and status tracking, asset records with QR code labels and maintenance history, preventive maintenance scheduling by calendar or meter reading, parts inventory with reorder alerts, digital inspection checklists with pass/fail items, vendor management for external contractors, reporting (MTTR, MTBF, PM compliance rate), and a mobile app for technicians with offline capability.
- React for the admin web application, React Native for the technician mobile app with offline sync, Node.js for the backend API, PostgreSQL for the primary database, QR code generation for asset labels, Firebase Cloud Messaging for push notifications, AWS S3 for photos and document storage, and a background job processor for preventive maintenance trigger evaluation.
- Build custom when you have proprietary equipment that requires a custom asset taxonomy MaintainX cannot model, when you operate in a regulated environment (hospitals require HIPAA compliance, food plants require FDA maintenance records), when you manage 50+ users and annual MaintainX fees exceed $50,000, or when you need deep integration with proprietary ERP systems. Single facilities with fewer than 20 technicians should use MaintainX -- the Essential plan is reasonable for smaller teams.
Ask an AI
Get an instant summary of this post from your preferred AI assistant.



