A fair and efficient task distribution system for Wohngemeinschaften (WGs) or shared living spaces. Automate your cleaning schedule with ease!
- 🔄 Automatic weekly task assignment
- ⚖️ Fair distribution considering task frequency and estimated time
- 🔁 Rotation mechanism to prevent repetitive assignments
- 📊 Transparent task history and time spent for each user
- 🐳 Dockerized for easy setup and deployment
-
Clone this repository:
git clone https://github.com/KaiserRuben/Putzplan.git
-
Create a
data.json
file in the project root (see Configuration for details). -
Run with Docker Compose:
docker compose up
-
Access the Putzplan system at
http://localhost:9876
.
Here are some screenshots of the Putzplan system in action:
First Open | Landing Page |
---|---|
![]() |
![]() |
Task Overview | Task Details |
![]() |
![]() |
Create a data.json
file in the project root with the following structure:
{
"tasks": [
{
"id": 1,
"name": "Clean Bathroom",
"frequency": "weekly",
"estimatedTime": 45,
"subtasks": [
{
"id": 101,
"name": "Clean Toilet",
"description": "Thoroughly clean and disinfect the toilet",
"cleaningProducts": ["Toilet cleaner", "Brush", "Gloves"],
"tips": "Don't forget to clean under the rim",
"cautions": "Use gloves and ensure good ventilation"
},
// More subtasks...
]
},
// More tasks...
],
"users": [
{
"name": "Alice",
"color": "#FF5733"
},
// More users...
]
}
export interface Subtask {
id: number;
name: string;
description: string;
cleaningProducts: string[];
tips: string;
cautions: string;
}
export interface Task {
id: number;
name: string;
frequency: 'weekly' | 'bi-weekly' | 'monthly' | 'bi-monthly' | 'three-monthly' | 'four-monthly' | 'six-monthly' ;
estimatedTime: number;
subtasks: Subtask[];
}
You can find a sample data.example.json
file in the project root.
- Tasks are defined with properties such as frequency and estimated time.
- Each week, the system:
- Determines which tasks are due
- Distributes tasks evenly among users
- Rotates the starting point for distribution to ensure long-term fairness
- The system tracks each user's task history and total time spent.
Q: How often are tasks assigned? A: Tasks are assigned weekly, but the system considers different frequencies (weekly, bi-weekly, monthly).
Q: Can I add or remove tasks?
A: Yes, modify the data.json
file to add or remove tasks. The system will adjust automatically. Tasks might be reassigned.
Q: How does the system ensure fairness? A: It uses rotation and even distribution.
For:
- n := total time passed
- t_i := time spent by user i, where i ∈ ℕ
As n → ∞: t_i = t_j for all i, j ∈ ℕ
Q: Can users swap assigned tasks? A: The current system doesn't have a built-in swapping feature. Users can manually agree to swap tasks.
Q: When does the week change? Why is it Wednesday? A: Cause from experience, tasks are usually done on weekends.
Q: Is my data stored securely? A: All user data and task history are stored locally on your device.
Q: Can I customize the interface appearance? A: The current version doesn't include interface customization.
Q: What if a task takes longer than estimated?
A: Adjust the estimated time in data.json
if a task consistently takes longer than expected.
Q: Can I add new users to the system?
A: Yes, add new users to the users
array in data.json
. They'll be included automatically in task distribution.
Q: What if someone is away for a week? A: The system doesn't have a built-in absence feature. Manually redistribute tasks in such cases.
We welcome contributions! Please submit issues and pull requests on our GitHub repository.
This project is licensed under the MIT License - see the LICENSE file for details.