PropMaintain: On-Demand Property Maintenance Platform

PropMaintain: On-Demand Property Maintenance Platform

WebAutomation2025Node.jsExpress.jsMongoDBMongooseSocket.ioJWTbcryptNodemailerexpress-validatorHelmetexpress-rate-limitCORSMorganReact 18React RouterAxiosReact Hook FormZodContext API

Client

Sudeep Aryal

Year

2025

Tech stack

Node.js, Express.js, MongoDB, Mongoose, Socket.io, JWT, bcrypt, Nodemailer, express-validator, Helmet, express-rate-limit, CORS, Morgan, React 18, React Router, Axios, React Hook Form, Zod, Context API

About

PropMaintain connects property owners with verified maintenance professionals. Owners post a job, the system instantly matches it to the right available provider, and both sides follow everything from booking to completion with live updates, in-app chat, progress notes, and reviews.

The Problem

Getting maintenance work done on a property is still mostly manual and disorganised. Owners call around for quotes, wait for callbacks, and end up with no clear record of what was agreed. Tradespeople receive vague job details and sometimes travel to places outside their area. Nobody shares a single view of progress, so both sides keep chasing each other by phone. Existing home service apps hide how jobs are assigned, give owners little insight into provider quality, and rarely let anyone track a job cleanly from start to finish.

What I Built

I built a full-stack web application where property owners, maintenance professionals, and an administrator each get their own experience. Owners (customers) post service requests. The backend automatically finds suitable verified providers and offers them the job in real time. If nobody takes it quickly, the system books the next available slot on its own. From there the job moves through clear stages, the two parties can message each other, the provider posts progress updates, and the customer leaves a rating at the end. An admin oversees all users, verifies providers, and can step into any request.

Key Features

Separate customer, provider, and admin roles, each with its own dashboard and permissions

Secure sign-up with email verification and tokenized password reset by email

JWT authentication using short-lived access tokens and longer-lived refresh tokens

Automatic account lockout after five failed login attempts to block password guessing

Guided service request form covering category, specific service type, urgency, location, and preferred date

Automatic matching that finds verified, available providers by service type and travel distance

Real-time job offers sent to every matching provider, awarded to the first one who accepts

Self-scheduling fallback that books the next working-day slot when no provider responds in time

End-to-end job status tracking from pending to completed, with a full history of every change

Per-job in-app chat plus provider progress updates so neither side has to chase by phone

Star ratings and written reviews gathered automatically once a job is marked complete

Admin tools to verify providers, suspend accounts, and monitor every request, plus a public landing page driven by live platform stats

Project Details

Setting up. A property owner registers as a customer and confirms their email. A tradesperson registers as a provider and fills in their business name, service categories, the specific services they offer (for example plumbing, tiling, or CCTV installation), their service area, and how far they are willing to travel. They then wait for an admin to verify them. An availability toggle lets a provider mark themselves on or off at any time, and that setting feeds straight into matching.

Posting a job. When a customer needs work done, they fill in one request: the type of work (home repair, home upgrade, or tech and digital), the specific service, how urgent it is, the address, and an optional preferred date. That is the only manual step the customer has to take.

Matching, in seconds. As soon as the request is submitted, the backend searches for providers who fit: the right service category and type, currently available, verified and active, and close enough that the job falls inside their travel radius. Providers who have not set a fixed location are treated as covering any area. Every matching provider receives an instant offer through a live websocket connection. The first provider to accept is assigned the job, it moves to the matched stage, and the other offers disappear.

Nobody left waiting. If no provider accepts within a short window, the system does not leave the request hanging. It automatically books the job into the next available working-day slot and notifies the customer, so a request always ends up with a plan.

Doing the work. Once a provider is assigned, they schedule a visit, mark the job as in progress, and post short progress updates as they go. The customer and provider chat inside that job's page. When the work is finished, the provider marks it complete and the customer is asked for a star rating and a comment.

Staying informed. Every meaningful step (request created, provider matched, visit scheduled, job started, job completed, new message, review received) creates a notification that appears in the app straight away. Email is used for the moments that happen outside the app, such as verifying an account or resetting a password.

Oversight. The admin has a separate dashboard to verify or reject providers, suspend problem accounts, and browse every request on the platform, including counts of available and unavailable providers.

A landing page that tells the truth. The public landing page is not fixed marketing copy. It pulls live numbers from the database: completed jobs, total and verified providers, registered customers, average rating, the most recent reviews, and a featured active job. The figures on the page always match what is actually in the system.

Who it serves. Customers get a fast, transparent way to arrange maintenance without phoning around, plus a record of what happened. Providers get clean job details, work that is genuinely in their area, and control over when they are reachable. The platform operator gets oversight, a quality lever through provider verification, and real activity data.

In short. PropMaintain brings the whole maintenance job into one place. The customer describes the problem once, the platform handles finding and assigning the right person, and both sides follow the same live view of the job until it is finished and reviewed. Automation covers the slow parts, which are matching and scheduling, while chat, progress updates, and reviews cover communication and trust.

Screenshots

The Result

The result is a working end-to-end platform that takes a maintenance job from a single request to a completed, reviewed piece of work without anyone phoning around or assigning jobs by hand. Matching and scheduling happen in seconds. Customers can see exactly what stage their job is at and talk to their provider in the same place. Providers only see jobs that fit their skills, area, and availability. Admins get a live view of the whole system and can keep provider quality in check. The landing page reflects real usage rather than fixed claims. As a final-year project it demonstrates full-stack development, real-time features, secure authentication, role-based access, and workflow automation in one integrated build.