A collaborative house management system built with Django REST Framework that allows users to create houses, join them, and manage household tasks together.
- User authentication with OAuth 2.0
- House creation and management
- Task management within houses
- Automatic points system
- Member management
- Google Cloud Storage integration for media files
- Background job processing
- Python 3.8+
- pip (Python package manager)
- Virtual environment (recommended)
- Google Cloud Storage account (for media storage)
- Clone the repository:
git clone https://github.com/yourusername/homesync.git
cd homesync- Create and activate a virtual environment:
python -m venv virtual_env
# On Windows
virtual_env\Scripts\activate
# On Unix or MacOS
source virtual_env/bin/activate- Install dependencies:
pip install -r requirements.txt- Set up environment variables:
Create a
.envfile in the root directory with the following variables:
DEBUG=True
SECRET_KEY=your-secret-key
GOOGLE_CLOUD_STORAGE_BUCKET=your-bucket-name
GOOGLE_CLOUD_CREDENTIALS=path-to-your-credentials.json
- Run migrations:
python manage.py migrate- Create a superuser (optional):
python manage.py createsuperuser- Run the development server:
python manage.py runserverPOST /api/auth/register/- Register a new userPOST /api/auth/login/- Login userPOST /api/auth/logout/- Logout user
GET /api/house/- List all housesPOST /api/house/- Create a new houseGET /api/house/{id}/- Get house detailsPUT /api/house/{id}/- Update house detailsDELETE /api/house/{id}/- Delete a house
POST /api/house/{id}/join/- Join a housePOST /api/house/{id}/leave/- Leave a housePOST /api/house/{id}/remove_member/- Remove a member from house (Manager only)
GET /api/tasks/- List all tasksPOST /api/tasks/- Create a new taskGET /api/tasks/{id}/- Get task detailsPUT /api/tasks/{id}/- Update taskDELETE /api/tasks/{id}/- Delete task
homesync/
├── backgroundjobs/ # Background task processing
├── house/ # Main house management app
├── task/ # Task management app
├── users/ # User management app
├── main/ # Project configuration
├── media/ # Media files storage
└── manage.py # Django management script
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Django REST Framework
- Google Cloud Storage
- All contributors who have helped shape this project