Homeowners Find Help, Handymen Find Work: Building HomeSquad
Published: 2024-07-10 16:34:01

As an aspiring software engineering student at Alx, I've been pouring my efforts into HomeSquad, a project designed to bridge the gap between homeowners and skilled handymen. Inspired by Upwork's successful model of connecting freelancers with employers, HomeSquad caters specifically to local home improvement needs. Homeowners can browse for handymen or post jobs, receiving bids from qualified professionals. Conversely, handymen leverage the platform to discover available jobs through postings and direct homeowner offers.

As I navigated the demanding software engineering program at Alx for the past nine months, I often found myself browsing Upwork. It was a revelation – the power to connect with employers from across the globe, looking for someone like me(near future me) to help in with their projects. I could bid for a web developer job from India, a graphic job designer from Argentina, all within the comfort of my own home. It felt like the future of work, efficient and globalized.

But a nagging question kept popping up: what about the physical world we live in? Imagine this: your washing machine sounds like a distressed banshee in the middle of the night, threatening to flood your laundry room. Or your living room desperately needs a fresh coat of paint, but the thought of sifting through endless recommendations and unreliable leads is enough to make you want to grab a paintbrush yourself (even if you have zero artistic talent). Finding reliable help for these everyday tasks often involves a frustrating web of recommendations and unreliable leads.

It was this very pain point, hitting close to home (literally, in the case of the potential washing machine flood!), that sparked the idea for HomeSquad.  Upwork's model was brilliant for freelancers in the digital realm, but what about the skilled handymen and home improvement specialists right in our own communities? Why couldn't we create a platform that bridged the gap, connecting homeowners like myself with the local talent we desperately needed? HomeSquad wouldn't just be convenient; it could empower both homeowners and handymen. Homeowners could escape the cycle of endless phone calls and unreliable recommendations. Handymen could ditch the flyers and unreliable leads, finally connecting with clients who genuinely needed their skills. The more I fleshed out the idea, the more passionate I became. It wasn't just about fixing leaky faucets – it was about creating a solution that would make countless lives easier.

## project Architecture
This is a simple MERN stack app with simple architecture

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6ttlejycemfihr2v95d.png)
## Project Achivement

Since the projects main aim is connecting homeowners with skilled handymen in there local area, searching for a handyman can be done by applying filters like proximity and work category.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/229akdag3g88qt3bq984.PNG)


Homeowners then can choose from the result of handymen search for a person that fit their criteria. They can see the profile of the handyman his/her rating, work history and other information, to make a decision if they want to hire or offer a job for the handyman.

For handymen looking for work, they can also search for job postings that match their skillset and location of work to bid and submit proposal for the work.

## application features

- Both homeowners and handymen can signup and have a profile on HomeSquad.
- Users can customize their profile. Address info, describe their services(for handymen), and have a bio.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ckd15dmovsutfpzkaveo.PNG)

- Homeowners can search for handymen using filters like proximity, job category or by name.

- Homeowners can post a job, offer a job for a handymen, rate a handyman and add him/her to their favorites and award a job form a list of bid they get for their job posting. 

- Handymen can search for a job post, bid on job postings and rate employers after job.
 

## Tech stack of the project
This project is built with the MERN stack

- React.js - for the frontend, the plan was to learn more about react while doing this project. it was a bit of steep learning curve than I expected.

- Material UI- for styling to give a professional feel to the app

- Express.js - For the backend, also JavaScript for the backend

- MongoDb - As a databas, I used MongoDb Atlas

- Passport.js with 'passport-local' strategy - for authentication and authorization.

- Firebase storage - to store profile images and other images

## Technical Challenges
The most frustrating challenge I faced happened after I deploy my demo project to render. While development I was running both my react development server and express server at localhost, I was able to authenticate without a problem and call api end points which need authorization without any problem. After deploying to Render I despite being able to authenticate I was not able to make subsequent authorized requests. I checked for cors settings, my axios config and my passport config but couldn't figure out the problem. After hours of googling I found out that the my browser is ignoring the Set-Cookie response header. And I found out that render uses a publicly listed domain for hosting sites and the browser black lists this publicly listed domains.
I get around this issue by deploying both the frontend and backend aps as one app and make the backend server the frontend app.

## what I learned
The main thing I learned from my journey building HomeSquad is pre planning is supper important. Even though learning by doing is a recommended way of learning, when working on a project with a deadline it's important to get enough knowledge before diving in.

I am a software engineering student with a passion to learn new technologies every chance I get. I will take the things I learn from this project and apply them to the next one and hopefully get better.

Project repository - https://github.com/daw22/HomeSquad-web-app
Deployed Project - https://homesquad-web-app.onrender.com/
Project landing page - https://homesquad.my.canva.site/
LinkedIn - https://www.linkedin.com/in/dawit-yifru-692aa11a5/