Handyman Booking System

Ndip Kliuvert Egbe - Sep 24 - - Dev Community

Purpose of the Project
Our handyman booking system was created to simplify the process of connecting customers with skilled craftsmen in their area. Whether users need a plumber, electrician, or carpenter, the platform provides a seamless way to browse services, check availability, and book a craftsman quickly. The goal is to help homeowners or businesses find trustworthy professionals for repairs and installations without the hassle of searching through multiple sources.

Team Members, Roles, and Timeline
Our project team consists of three members:

  • Kliuvert Egbe – full-stack Engineer
  • Freeman Boss – Devops Engineer
  • tito – Frontend engineer

The development process spanned two months, where each member contributed their expertise in building the application. I personally focused on the overall architecture and full-stack development, ensuring the integration between the frontend and backend was smooth. i worked on the backend APIs, database structure, and authentication, while tito handled the UI/UX design and frontend functionality. And freeman handled smooth ci/cd pipelining

Target Audience
The project was created for homeowners, small business owners, and property managers who require quick access to reliable craftsmen for home repairs and maintenance services. We wanted to design a platform that makes it easier for these users to find skilled professionals who fit their specific needs and schedule.

My Personal Focus

As the full-stack engineer, my focus was on creating a robust architecture that ensures both security and performance. I also concentrated on the user flow from registration and login to service booking, aiming to provide a user-friendly experience across all devices. Additionally, I worked on integrating role-based access control (RBAC) to separate admin, customer, and craftsman functionalities effectively.

The Story Behind the Handyman Booking System

This project is not just a technical exercise for me it’s deeply personal. I grew up in a small neighborhood where finding reliable help for household repairs was always a challenge. My family had to rely on word-of-mouth recommendations, often spending days or even weeks searching for a plumber, electrician, or carpenter. I remember countless times when my parents were frustrated because they couldn’t find anyone to fix something urgently, or the people they did find were unreliable or overpriced.

This sparked my interest in creating a solution where people could easily find and book trustworthy, skilled craftsmen. I wanted to create a platform that my family and people in similar situations could use a way to ensure that no one would have to go through the hassle of chasing down a repairman or worry about the quality of the work.

As I moved into software development, I realized this dream could be turned into a real, scalable product. By combining my passion for solving real-world problems with my technical skills, I set out to build this handyman booking system. It’s more than just an app to me it’s a way of giving back to communities like the one I grew up in, where access to quality service should be simple and stress-free.

My personal focus on this project is making sure that the experience is seamless for both customers and craftsmen. I’ve spent hours thinking about how to create a system where homeowners can trust the professionals they book, and craftsmen can manage their schedules, show off their skills, and find steady work. This project is a step towards that vision a place where people can connect and build better homes and lives, starting with reliable service.

Results of the Handyman Booking System
The Handyman Booking System is evolving into a fully functional platform where users can browse, book, and review skilled craftsmen for various services. The application integrates seamlessly across frontend and backend systems, ensuring a smooth flow of data from customers booking services to craftsmen managing their appointments.
Architectural Overview
At the core of the application is a well-defined architecture that ensures efficient data flow and a smooth user experience. The flow of data begins with a user browsing available services, submitting a booking request, which is then processed by the backend, and assigned to the selected craftsman. Each request goes through various layers of the application, from the frontend interface, backend processing, and database interactions, to the final confirmation of bookings.

  1. Frontend (React + Tailwind CSS)
    We chose React for building the frontend because of its component-based architecture and its ability to manage dynamic content effectively. Tailwind CSS was selected for styling because it allows us to rapidly prototype and build custom, responsive designs without writing complex CSS. The combination of React and Tailwind CSS enabled us to create a clean, user-friendly interface with minimal development overhead.

  2. Why we chose these technologies:
    React provided flexibility in managing state and user interactions, while Tailwind’s utility-first approach helped maintain consistency across various screen sizes and devices. These technologies allowed us to focus on building a responsive and scalable UI without worrying about too much custom CSS.

  3. Backend (NestJS + PostgreSQL)
    For the backend, we used NestJS, a Node.js framework, to build scalable APIs and manage business logic. The structure of NestJS allows us to easily organize modules and handle complex operations like authentication and role-based access control (RBAC). PostgreSQL was selected as the database for its robust relational data handling and its support for complex queries, which were necessary for managing user roles, service listings, and bookings.

Why we chose these technologies:
NestJS provided the structure we needed to implement clean, maintainable code, while PostgreSQL ensured we could handle relationships between users, craftsmen, and bookings efficiently. NestJS's integration with TypeORM made it easy to manage database interactions and migrations.

  1. Authentication & Security (JWT + Redis) We implemented JWT (JSON Web Tokens) for user authentication, ensuring secure login and session management. Redis was used for token storage and session management, offering fast data retrieval for our authentication system. This combination allowed us to enhance security while maintaining quick access to user sessions.

Why we chose these technologies:
JWT offered a secure and scalable way to manage user authentication, while Redis allowed us to store and manage session data efficiently, reducing the load on the primary database

Key Features

  1. Role-Based Access Control (RBAC) One of the core features of the platform is role-based access control. The system manages different user roles—admin, customer, and craftsman—ensuring that each user can access only the appropriate parts of the platform.
  • Admins can manage service listings, approve craftsmen, and review customer feedback.

  • Customers can browse services, book appointments, and leave reviews.

  • Craftsmen can manage their bookings, update availability, and view customer feedback.

Value for the user: This ensures a tailored experience based on the user’s role, maintaining system security and integrity.

2. Craftsman Profile Management
Craftsmen have dedicated profiles where they can list their skills, experience, and availability. They can also update their profile with certifications and customer ratings, providing a transparent way for customers to assess their services before booking.

Value for the user: Craftsmen can showcase their expertise, while customers can make informed decisions based on reviews and credentials.

3. Service Booking and Scheduling The booking system is designed to allow customers to book services directly through the platform. Once a booking is made, the craftsman is notified, and both the customer and craftsman can view and manage the booking details. The system also handles cancellations and rescheduling requests.

- Value for the user: Customers can easily schedule services without manual coordination, while craftsmen can manage their workload efficiently.

These features have made the Handyman Booking System a reliable platform for users and craftsmen alike, improving the process of finding and managing services for home repairs. The technologies and features we’ve implemented were chosen to enhance both functionality and user experience, providing a modern solution to a traditional problem.

Technical Takeaways
One of the most important takeaways from this project was the understanding and application of role-based access control (RBAC). Before diving into this project, I had a conceptual understanding of RBAC, but implementing it in a real-world application was a completely different challenge. I learned how crucial it is to plan user roles and permissions early in the development process, as it has wide-reaching impacts on security and user experience. I also honed my skills in NestJS and JWT authentication, which are now solidified in my toolkit for future projects.

What I Might Do Differently
If I were to start this project again, I would dedicate more time to the planning phase, especially in terms of architecting the permission structure. I spent a considerable amount of time fixing edge cases in the RBAC implementation that could have been avoided with better initial planning. I also would have explored using more advanced tools or libraries for role management, such as Casbin or Keycloak, to see if they could have simplified the process and offered more flexibility.

What I Learned About Myself as an Engineer
This project reaffirmed something I’ve always believed: problem-solving is at the core of engineering. The experience of tackling the challenges I faced, from small bugs to complex architectural decisions, reminded me of how much I enjoy debugging and improving code. I learned that I have a high level of resilience when facing issues that at first seem insurmountable. Additionally, I discovered that I thrive in situations where I need to seek out external resources, be it documentation, forums, or even reaching out to the developer community for help.

How This Project Informs My Engineering Path
This project has strengthened my desire to focus on backend systems and security. The satisfaction of implementing robust access control and the challenge of ensuring user data was securely managed sparked a deeper interest in security practices. Moving forward, I want to explore more about authentication mechanisms, OAuth, and API security. I also realized how much I value building scalable architectures, so I’ll continue learning about microservices, containerization (like Docker), and cloud services (like AWS or GCP), which could take projects like this to the next level.
This project has shown me that with the right tools, mindset, and support, I can tackle any challenge I set my sights on.

About Me
I am a passionate full-stack software engineer with a deep interest in backend development, Devops, security, and scalable architectures. With a background in both frontend and backend technologies, I love solving complex problems and creating efficient, user-centric applications. When I’m not coding, I enjoy participating in CTF challenges and honing my problem-solving skills.

Feel free to explore the project and connect with me through the following links:

GitHub Repository: Backend, frontend
LinkedIn: profile
Thank you for reading about my journey with this project!

.
Terabox Video Player