FlexiRota is a smart shift and availability management app designed for teams. It enables employees to set their unavailability and allows managers to view and manage team rotas efficiently.
🔗 Neil and Bhagy: View our video here! https://drive.google.com/file/d/1NZT1UEh23-iVcsCsFGE3YXCG66d3lKYP/view?usp=drive_link
🔗 https://flexirota.netlify.app
- Frontend: React + Vite (hosted on Netlify)
- Backend: Django + Django REST Framework
- Auth: JWT (via
djangorestframework-simplejwt) - Docs: Swagger UI at
/api/docs/swagger/ - Database: SQLite (development only)
- Submit availability/unavailability with start and end times
- View personal availability calendar
- Secure authentication with JWT
- Generate invite links to onboard employees
- View team availability within the organisation
- Admin access to manage all users and schedules
- Clone the repository:
git clone https://github.com/ch020/flexi-rota.git
cd flexi-rota/backend- Set up and activate a virtual environment:
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux- Install dependencies:
pip install -r requirements.txt- Run the backend server:
python manage.py runserver- Swagger UI available at:
http://localhost:8000/api/docs/swagger/
- Create a superuser for admin dashboard:
python manage.py createsuperuser- Navigate to the frontend directory:
cd ../frontend- Install dependencies:
npm install- Start the development server:
npm run dev- Local frontend will typically run at:
http://localhost:5173
Make sure the frontend is configured to send API requests to the backend at
http://localhost:8000.
POST /api/token/– Login (returns access + refresh tokens)POST /api/token/refresh/– Get new access tokenPOST /api/logout/– Blacklist refresh token
backend/
├── backend/ # Django settings
├── rota/ # App: models, views, serializers
├── manage.py
└── requirements.txt
Developed by:
- Matthew Chapman
- Matthew Harris
- Aaran Saluja
- Milo Lombardo
If you find a bug or want to contribute, feel free to open an issue or PR.
FlexiRota – Designed for simplicity. Built for flexibility. 💼