An open-source field service management (FSM) system built using FastAPI and SQLite. It lets you create technicians and jobs, auto-assign work based on skills, and manage job state transitions using FSM-style logic (pending → assigned → in progress → completed).
[v0.0.2]
- FastAPI + React integration; it isn't pretty but it's scaffolded
- Technician + Job CRUD via API
- Live frontend displaying job/tech tables; based on created jobs/techs
git clone https://github.com/zblauser/fieldopt.git
cd fieldopt
python3 -m venv venv
source venv/bin/activate <-- mac/linux
venv\Scripts\activate <-- on windows
pip install fastapi uvicorn sqlalchemy pydantic
uvicorn app.main:app --reload
http://localhost:8000/docs
- Create technicians with skills and locations
- Create service jobs with required skills and customer info
- Auto-assign jobs to matching technicians
- FSM job lifecycle:
pending → assigned → in_progress → completed
- Interactive API testing via Swagger UI
cd fieldopt/frontend
npm install
npm run dev
http://localhost:5173
- Built with Vite + Tailwind CSS
- Requires FastAPI backend running at http://localhost:8000
POST /technicians/
GET /technicians/
POST /jobs/
GET /jobs/
POST /jobs/{job_id}/assign
PATCH /jobs/{job_id}/start
PATCH /jobs/{job_id}/complete
-
Backend
- job cancellation [ ]
- job reassignment [ ]
- manual job assignment [ ]
- tech coordinates (automatic/manual) [ ]
- permissions [ ]
-
React Frontend
- drag/drop interface [ ]
- map interface [ ]
- cleaner interface [ ]
-
Mobile GUI
- tech endpoint [ ]
- mobile job/tech manager [ ]
If you share the belief that simplicity empowers creativity, feel free to contribute.
- Forking this repo
- Submiting a Pull Request
- Bug reports and feature requests
Please ensure your code follows the existing style.
If you hit any issues, feel free to open an issue on GitHub.
Pull requests, suggestions, or even thoughtful discussions are welcome.