An open-source hyperlocal service platform connecting users with nearby workers.
Features • Tech Stack • API Specs • Socket Protocols • Deployment Guide • Contributing
FixNearby is designed to bridge the gap between people who need everyday services (like plumbing, electrical work, carpentry, or cleaning) and the skilled professionals who provide them in their local neighborhoods.
Unlike massive corporate directories, FixNearby aims to be a lightweight, fast, and community-driven application built entirely on the MERN Stack (MongoDB, Express, React, Node.js) and styled with Tailwind CSS.
FixNearby is a community-driven platform built to connect people who need everyday services, such as plumbing, electrical work, carpentry, cleaning, and repairs, with skilled professionals in their local area.
Our goal is to create a platform that is:
- ⚡ Fast and lightweight
- 📱 Easy to use on mobile and desktop
- 🛠️ Built for real community needs
- 🌍 Open-source and contributor-friendly
- 🚀 Scalable for future feature growth
Unlike large corporate directories, FixNearby focuses on local discovery, trust, and accessibility.
This repository is currently a scaffolded starter template. We have built about 50% of the foundational architecture so that open-source contributors can easily jump in and start coding features immediately!
- Frontend (
client/): A Vite + React application with React Router configured. It includes a fully responsive Tailwind CSS landing page, navigation, and dummy-data placeholder pages (/services,/worker/:id,/bookings,/profile). - Backend (
server/): An Express.js server connected to MongoDB. It includes a basic project folder structure (routes,controllers,models,middleware), a basicUserschema with password hashing, and a JWT authentication skeleton.
📖 Open Source Contributor Drive: We have created a comprehensive, deep-dive Open Source Contributor Roadmap detailing system subsystems, current architectural gaps (like the bookings/search API bypasses), code hygiene standards, and a categorized feature wishlist!
- Refer to the roadmap to see how you can help fix code integrations, route orphan components, or build advanced real-time systems.
We rely on the open-source community to bring this platform to life! If you are looking to contribute, here are the core features we need help building right now:
- 🔌 API Integration: Connect the login, register, and profile forms to real backend endpoints.
- 🧠 State Management: Implement Context API or Redux to manage authentication state globally.
- 🔍 Search & Filtering: Build worker filtering on the
/servicespage by category, rating, and location. - 📊 Interactive Dashboards: Replace placeholder
/dashboardand/bookingspages with dynamic data tables.
- 🔐 Authentication: Finish the JWT login/register flow in
authController.jsand enforce protected routes. - 🗂️ Database Models: Create Mongoose schemas for
Worker,Service,Booking, andReview. - 🌐 RESTful APIs: Build CRUD endpoints for nearby workers, reviews, and bookings.
- ✅ Validation: Add robust input validation and error handling using Joi or Express-Validator.
Tip: Search the codebase for
TODO:comments. We've left dozens of hints exactly where new code needs to be added!
- 🎨 Frontend: React.js (Vite), React Router v6, Tailwind CSS
- 🛠️ Backend: Node.js, Express.js, JSON Web Tokens (JWT), Bcrypt
- 🗄️ Database: MongoDB, Mongoose
Want to run the project locally? Please refer to our comprehensive Developer Guide for full setup instructions, or follow these quick steps:
Before you start, make sure you have the following installed:
- ✅ Node.js (v18+ recommended)
- ✅ npm or yarn
- ✅ MongoDB (local instance or MongoDB Atlas)
- ✅ Git
- ✅ A code editor like VS Code
- Navigate to the server folder:
cd server - Install dependencies:
npm install
- Copy
.env.exampleto.envin the server root and fill in your details (likeMONGODB_URIandJWT_SECRET). - Start the server:
npm run dev
- Navigate to the client folder in a new terminal:
cd client - Install dependencies:
npm install
- Start the dev server:
npm run dev
The complete local stack includes the React client, Node.js API, MongoDB, and Redis.
JWT_SECRET="replace-with-a-long-random-value" docker compose up --buildOpen http://localhost:5173. The client proxies API and Socket.IO traffic to the server inside the Compose network. Persistent Docker volumes retain MongoDB, Redis, and uploaded files.
Stop the stack with:
docker compose downUse docker compose down -v only when you intentionally want to remove all local persisted data.
If you run into issues, try the following:
- 🟡 Make sure MongoDB is running and the connection string in
.envis correct. - 🟡 Confirm that both frontend and backend dependencies are installed.
- 🟡 Check that your Node.js version is compatible with the project requirements.
- 🟡 If the app fails to start, inspect the terminal output for missing environment variables.
- 🟡 Clear node_modules and reinstall dependencies if package issues appear.
We welcome contributions from everyone—whether you are a beginner looking for your first PR, or a senior dev wanting to design system architecture.
Please read our CONTRIBUTING.md for detailed instructions on how to fork the repo, create a branch, and submit a Pull Request.
This project is open-source and available under the MIT License.
