Web apps · React
Maintenance requests
Log tenant maintenance requests by unit and priority, then track them through to done.

What you get
A maintenance desk for a small landlord or property manager: requests by unit and tenant with priority, scheduled date and cost, worked from reported to done on a board. The properties, priorities and sample requests live in src/app.ts.
Files
Exactly what is copied into a new project: 12 files, nothing generated.
Explorer 12
import type { AppSpec } from "./types"; /** Everything this app shows. Edit freely. */export const app: AppSpec = { "brand": "Keyline", "icon": "wrench", "storageKey": "keyline-requests-v1", "entity": { "singular": "Request", "plural": "Requests" }, "title": "Maintenance requests", "subtitle": "Elm Court and Bayview Terrace, 24 units", "currency": "$", "titleKey": "issue", "statusKey": "status", "tones": { "Reported": "bad", "Scheduled": "accent", "In progress": "warn", "Done": "good" }, "views": [ "table", "board" ], "fields": [ { "key": "issue", "label": "Issue", "type": "text", "required": true }, { "key": "unit", "label": "Unit", "type": "text" }, { "key": "tenant", "label": "Tenant", "type": "text" }, { "key": "priority", "label": "Priority", "type": "select", "options": [ "Urgent", "High", "Normal", "Low" ] }, { "key": "scheduled", "label": "Scheduled", "type": "date" }, { "key": "cost", "label": "Cost", "type": "money" }, { "key": "status", "label": "Status", "type": "select", "options": [ "Reported", "Scheduled", "In progress", "Done" ] }, { "key": "notes", "label": "Notes", "type": "longtext", "hideInTable": true } ], "summary": [ { "label": "Requests", "kind": "count" }, { "label": "Not yet scheduled", "kind": "count", "status": "Reported" }, { "label": "In progress", "kind": "count", "status": "In progress" }, { "label": "Spent on completed", "kind": "sum", "field": "cost", "status": "Done" } ], "seed": [ { "issue": "No hot water", "unit": "Elm Court 3B", "tenant": "Karen Doyle", "priority": "Urgent", "scheduled": "2026-10-28", "cost": 0, "status": "Reported", "notes": "Water heater pilot light keeps going out." }, { "issue": "Leaking kitchen tap", "unit": "Bayview 12", "tenant": "Marco Bianchi", "priority": "Normal", "scheduled": "2026-10-30", "cost": 85, "status": "Scheduled", "notes": "" }, { "issue": "Broken window latch", "unit": "Elm Court 1A", "tenant": "Steph Nguyen", "priority": "High", "scheduled": "2026-10-29", "cost": 60, "status": "In progress", "notes": "Ground floor, security concern." }, { "issue": "Smoke alarm chirping", "unit": "Bayview 4", "tenant": "Ade Bello", "priority": "High", "scheduled": "2026-10-24", "cost": 25, "status": "Done", "notes": "Battery replaced, alarm tested." }, { "issue": "Mould in bathroom ceiling", "unit": "Bayview 9", "tenant": "Ruth Jacobs", "priority": "Normal", "scheduled": "2026-11-03", "cost": 420, "status": "Scheduled", "notes": "Needs extractor fan check too." }, { "issue": "Dishwasher not draining", "unit": "Elm Court 2C", "tenant": "Tariq Saleem", "priority": "Normal", "scheduled": "2026-10-21", "cost": 140, "status": "Done", "notes": "Filter cleared, drain hose replaced." }, { "issue": "Hallway light out, 2nd floor", "unit": "Elm Court common", "tenant": "", "priority": "Low", "scheduled": "2026-11-05", "cost": 0, "status": "Reported", "notes": "" }, { "issue": "Front door lock sticking", "unit": "Bayview 7", "tenant": "Ellie Grant", "priority": "High", "scheduled": "2026-10-27", "cost": 110, "status": "In progress", "notes": "Locksmith booked." } ]};Remix
Remix this template
Describe what to change and the agent starts from Maintenance requests's files. The box is already started for you: finish “Start from Maintenance requests and …”
Dependencies
Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.
- react^19.1.0
- react-dom^19.1.0
- vite^6.3.0
- @vitejs/plugin-react^4.4.0
- tailwindcss^4.1.0
- @tailwindcss/vite^4.1.0
- typescript^5.8.0
How it runs
- Framework
- Vite + React + TypeScript
- Dev command
- npm run dev
- Build command
- npm run build
- Output directory
- dist
- Port
- 5173
- Entry route
- /
Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.
Keep browsing
All templates
React starter
A clean React + TypeScript + Tailwind single-page app. The default target for AI generation.

Sales leads CRM
A lean CRM for a small sales team: leads, deal values, next follow-ups and a pipeline board.

Wedding guest list
Keep the guest list, RSVPs, meal choices and table plan for the big day in one place.
Build on Maintenance requests
Create a free account, start from this template, and ask the AI agent to turn it into your app.