MakeReadyOS is a self-hosted property operations platform focused on apartment make-ready and maintenance workflows. It uses a dense software-defined spreadsheet workflow built for local ownership, Docker deployment, and property maintenance operations.
The core workflow is a fast table-first make-ready board with Kanban, Schedule, Dashboard, item drawer, comments, attachments, checklists, vendors, preventive maintenance, refrigerant tracking, pool/spa logging, risk scoring, automations, property maps, and a Frog Pond visualization.
MakeReadyOS is:
- A self-hosted operations board for property maintenance and apartment turns.
- A table-first daily workflow for supervisors, techs, leasing, cleaners, and managers.
- A local-first system for make-ready tracking, comments/photos, checklists, vendors, scheduling, automations, risk visibility, and operational reporting.
- An open-source foundation for integrations through documented JSON/API contracts.
MakeReadyOS is not:
- A property-management accounting system.
- A resident ledger, rent collection, or leasing CRM replacement.
- A vendor compliance platform like NetVendor.
- A public SaaS service or hosted marketplace.
- A plugin runtime for arbitrary untrusted JavaScript.
| Table | Dashboard |
|---|---|
![]() |
![]() |
| Kanban | Schedule |
|---|---|
![]() |
![]() |
| Frog Pond |
|---|
![]() |
- Dense make-ready table with inline editing, custom fields, managed labels, floor plans, structured server-side board filters, batch actions, and archive/restore workflows.
- Kanban, Schedule, Dashboard, Activity, My Work, Planning, Vendors, Preventive Maintenance, Refrigerant, Pool Log, Maps, Frog Pond, Automations, Setup, Fields, Admin, and Integrations workspaces.
- Preventive Maintenance includes recurring templates, due-task generation, history, printable reports, attachments, and Property Wiki references.
- Pool Log includes daily readings, safety checks, chemical additions, printable reports, scoped photos/PDFs, and in-app review reminders.
- Authentication, roles, property-scoped permissions, audit logs, API tokens, and in-app notifications.
- Optional SMTP-backed new-user invite emails from Admin when operators want login details delivered to the user's email address.
- English/Spanish user language preferences for the sign-in flow, core app shell, dashboard shell, connection/offline status messaging, and user-management workflow. Module-level workflow translation is still an active hardening pass.
- Mobile browser install support through a Progressive Web App manifest and app-like home-screen launch.
- Local attachments/photos, item comments, checklist templates, item drawer, unit history, analytics snapshots, and risk scoring.
- Scoped integration API with examples and a lightweight OpenAPI contract at
/api/openapi.json. - Docker Compose, PostgreSQL, Prisma, Fastify, React, Vite, TypeScript, backup scripts, and deployment docs.
For a fuller feature walkthrough, see docs/PRODUCT_OVERVIEW.md and docs/FEATURE_STATUS.md.
apps/api: Node 20, Fastify 5, Prisma, PostgreSQLapps/web: React, Vite, TypeScriptdocker-compose.yml: web, API, and PostgreSQL services- Root scripts for build, test, E2E, backups, automation runs, analytics snapshots, webhook delivery runs, and diagnostics
Requirements:
- Docker and Docker Compose
- Node.js 20+ if running scripts outside containers
git clone https://github.com/nextcode4u/MakeReadyOS.git
cd MakeReadyOS
cp .env.example .env
docker compose up --build -dBefore exposing the app beyond localhost, set APP_URL in .env to the real browser URL operators will use:
APP_URL=http://your-lan-host-or-ip:8080Reverse-proxy / DuckDNS example:
APP_URL=https://your-public-hostname.example.com
TRUST_PROXY=trueOpen:
- Web UI:
http://localhost:8080 - API health:
http://localhost:4000/health
Sign in with the admin username/email and password you set in .env.
Do not expose MakeReadyOS outside a trusted local environment until you have replaced every sample secret in .env, especially ADMIN_USERNAME, ADMIN_EMAIL, ADMIN_PASSWORD, POSTGRES_PASSWORD, SESSION_COOKIE_SECRET, and WEBHOOK_SECRET_ENCRYPTION_KEY. ADMIN_EMAIL is optional for sign-in and invite emails, but ADMIN_USERNAME or ADMIN_EMAIL must be set.
The example environment starts as a blank operational workspace: no sample properties, units, or turns are created, but baseline make-ready labels, table columns, checklist templates, and schedule tracks are ready. Set SEED_DEMO_DATA=true only when you want sample properties and records for evaluation.
For deployment details, including Raspberry Pi/VM notes, updates, migrations, backups, upload volume handling, and restore, see docs/DEPLOYMENT.md, docs/DISASTER_RECOVERY.md, and docs/BACKUP_AND_TRANSFER.md.
For EPA 608-friendly refrigerant tracking, tank lifecycle rules, recovery workflow, and exports, see docs/REFRIGERANT.md.
For daily pool/spa readings, safety checks, chemical additions, and chemistry review, see docs/POOL_LOG.md.
For recurring filter changes, seasonal routines, PM templates, task history, and PM exports, see docs/PREVENTIVE_MAINTENANCE.md.
npm ci
npm --prefix apps/api ci
npm --prefix apps/web ci
npm --prefix apps/api run db:migrate
npm --prefix apps/api run seed
npm run devFor local demo data, set SEED_DEMO_DATA=true before running the API seed.
Local dev endpoints:
- Web UI:
http://localhost:5173 - API:
http://localhost:4000
For disposable local databases, npm --prefix apps/api run db:push can be used as a fast schema-sync fallback. For shared or production-like environments, use versioned Prisma migrations.
On supported mobile browsers, MakeReadyOS can be installed to the home screen as a Progressive Web App. Android/Chrome shows an optional install prompt when available, with a Continue in browser bypass. iOS users can use the browser share menu and choose Add to Home Screen.
The current PWA support is for app-like launch and static shell caching. Operational API data and uploaded files are not cached for offline edits.
./doctor.sh
./build.sh
./test.sh
./e2e.sh
./run-automations.sh
./run-analytics-snapshot.sh
npm --prefix apps/api audit --omit=dev
npm --prefix apps/web audit --omit=devBuild, test, E2E, automation, and analytics scripts write timestamped logs under logs/.
More detail: docs/BUILD_AND_TEST.md.
Native JSON export/import is for MakeReadyOS-to-MakeReadyOS operational transfer. PostgreSQL and upload backups are for disaster recovery.
./backup-db.sh
./backup-uploads.sh
./prune-backups.sh --dry-runRestore scripts are intentionally confirmation-gated:
./restore-db.sh backups/makereadyos-db-YYYYMMDD-HHMMSS.dump
./restore-uploads.sh backups/makereadyos-uploads-YYYYMMDD-HHMMSS.tgzSee docs/BACKUP_AND_TRANSFER.md, docs/DISASTER_RECOVERY.md, and docs/SCHEDULED_BACKUPS.md.
For most self-hosted installs:
./update.sh --pull --yesupdate.sh now works on both:
- hosts with local
node/npm - Docker-only hosts where Prisma migration deploy should run inside the
apicontainer
Photo uploads are local-first. MAX_UPLOAD_MB=0 disables MakeReadyOS' per-file API limit so high-resolution phone/HDR photos are not blocked by the app, though browsers, disk space, and external reverse proxies can still impose limits. The inspection gallery supports multi-file upload, in-app preview, markup pins, explicit per-file download, and filtered ZIP export. Use UPLOADS_HOST_PATH when uploads should live on a host directory, external drive, or NAS/Samba mount. The Admin storage screen can inspect the active upload path, validate a proposed NAS path, and route new uploads into property-specific subfolders, but Docker still needs the host path mounted and the stack restarted. Existing root-level upload files can be previewed and moved into property folders with ./route-existing-uploads.sh.
Start here:
- Product Overview
- Architecture
- Architecture Inventory
- Deployment
- Onboarding
- Build And Test
- Release Process
- Security
- Support
- Roles And Permissions
- API
- Extensions
- JSON Schemas
- Operational Library
- Property Templates
- Risk Engine
- Vendors
- Property Maps
- Unit Directory And Occupancy
- Photo Inspections
- Pool Log
- Preventive Maintenance
- Make Ready QA Checklist
- Upload Storage
- Operating Calendars
- Frog Pond
- Analytics And History
- Workload Planning
- Performance And Scale
- Roadmap
- Release Checklist
Contributor-facing docs:
reference/ is local research material and is not a runtime dependency. If an asset is used by the app, it must first be copied into a committed runtime-safe path such as assets/ or apps/web/public/.
Current committed runtime assets include OpenDyslexic fonts, Frog Pond assets, and small Font Awesome placeholder icons.
MakeReadyOS is released under the BSD Zero Clause License, allowing use, distribution, forks, and modifications without attribution requirements.




