Authors:
- Alex Guo
- Tan Nguyen
- Stewart Sankey
- Mike Zeng
This application was built as part of the course CS:5830:0001 Software Engineering Project taken during the Spring 2025 semester at The University of Iowa.
The original repository can be found .
The Handyman Services Application (HSA) is a web-based, field-service app designed to assist handyman businesses. The app is an all-in-one solution for a handyman to manage everyday tasks such as customer management, job tracking, invoicing, and bookings.
A handyman is a person who provides maintenance or "fix-me-up" type of work for households. Typical services include work such as cleaning gutters, window washing, pressure washing, painting, furniture assembly, lighting, and remodeling. While they are typically a generalist, some may have additional expertise in areas such as HVAC, landscaping, electrical, and plumbing.
A recent study by Slack found that small business owners are losing on average 96 minutes per day in productivity from context switching between different apps for managing their business. This amounts to over 3 work weeks of loss productivity annually. Handyman businesses are no exception to this.
An independent handyman business can have a lot of overhead in their day-to-day operations. To run their business, a handyman needs to be able to track their customers, jobs, materials, and other costs. They also need to manage their schedules, generate quotes, dispatch subcontractors, track invoices, and many other tasks. As their business grows, the time spent having to manage overhead grows with it.
The Handyman Services App consists of 6 primary features and a secondary customer-facing feature. HSA is organized into three primary systems: The CRM system, the Jobs system, and the Bookings system.
Quote Managment
quote-demo.mp4
External Website Forms
iframe-demo.mp4
Login and Signup
Signup.and.Login.-.Wiki.mp4
Invoices
Invoice.-.Wiki.mp4
Onboarding
Onboarding.-.Wiki.mp4
Bookings and Calendar
Booking.-.Wiki.mp4
Booking Remainders
remainder-demo.mp4
Jobs
Job.-.Wiki.mp4
The Handyman Services Application is built using the following technologies:
- Frontend: Angular 19 with Angular Material and Tailwind CSS
- Backend: Django Rest with Gunicorn
- Database: PostgreSQL + Redis
- Deployment: Google Cloud Platform + Kubernetes
- Node.js (v18 or higher)
- Python (v3.10 or higher)
- PostgreSQL (v14 or higher)
- Docker (optional, for containerized deployment)
-
Navigate to the frontend directory:
cd HSA-frontend -
Install dependencies:
npm install
-
Start the development server:
npm start
The application will be available at http://localhost:4200
-
Navigate to the backend directory:
cd HSA-backend -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up the database:
- Create a PostgreSQL database
- Configure the database connection in your environment variables:
DATABASE_NAME=your_db_name DATABASE_IP=localhost DATABASE_USERNAME=your_db_user DATABASE_PASSWORD=your_db_password
-
Run migrations:
python manage.py migrate
-
Start the development server:
python manage.py runserver
The API will be available at http://localhost:8000
The application can also be deployed using Docker:
-
Build the Docker image:
./environment.sh build
-
Set the required environment variables:
export DATABASE_NAME=your_db_name export DATABASE_IP=your_db_host export DATABASE_USERNAME=your_db_user export DATABASE_PASSWORD=your_db_password
-
Run the Docker container:
./environment.sh run
The application will be available at http://localhost:8000
Please see Contributing.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the terms of the LICENSE file included in the repository.
