HomeSplit is a web application designed to simplify household managemnt by enabling users to track expenses, manage tasks, share responsibilities, and create shopping lists with other members.
- 💰 Expense Tracking - Add expenses and split them automatically among household members
- ✅ Task Management - Create and track household tasks with due dates
- 🛒 Shopping Lists - Collaborative shopping lists that sync in real-time
- 👥 Household Management - Create households and invite members to join
- 🔐 Secure Authentication - User registration and login with JWT tokens
- 📱 Responsive Design - Works seamlessly on desktop and mobile devices
- Django: Python web framework
- Django REST Framework: Toolkit for building Web APIs
- SQLite: Lightweight database for development
- JWT Authentication: Secure user authentication
- DRF Spectacular: Swagger UI wrapper for API endpoints
- React: JavaScript library for building user interfaces
- TypeScript: Superset of JavaScript for type safety
- Tailwind CSS: Utility-first CSS framework for styling
- Axios: Promise-based HTTP client for making API requests
- React Router: Declarative routing for React applications
- Vite: Build tool for modern web projects
home-split/
├── backend/ # Django backend
│ ├── api/ # API application
│ │ ├── models/ # Database models
│ │ ├── serializers/ # API serializers
│ │ ├── views/ # API views
│ │ └── migrations/ # Database migrations
│ ├── algorithms/ # Business logic (settlements)
│ ├── backend/ # Django project settings
│ └── manage.py # Django management script
└── frontend/ # React frontend
├── src/ # Frontend source code
│ ├── components/ # Reusable UI components
│ ├── pages/ # Page components
│ ├── context/ # React context providers
│ ├── services/ # API service layer
│ └── types/ # TypeScript type definitions
└── package.json # Frontend dependencies
- Python 3.8+
- Node.js 16+
- npm or yarn
-
Clone the repository:
git clone https://github.com/diffiii/home-split
-
Navigate to the project directory:
cd home-split
-
Navigate to the
backenddirectory:cd backend -
Create a virtual environment:
python -m venv env
-
Activate the virtual environment:
- On Windows:
.\env\Scripts\activate
- On macOS/Linux:
source env/bin/activate
- On Windows:
-
Install backend dependencies:
pip install -r requirements.txt
-
Apply migrations to set up the database:
python manage.py migrate
-
Start the Django development server:
python manage.py runserver
The backend API will be available at http://localhost:8000/api/.
-
Navigate to the
frontenddirectory:cd frontend -
Install frontend dependencies:
npm install
or
yarn install
-
Start the development server:
npm run dev
or
yarn dev
The frontend will be available at http://localhost:3000/.
To quickly set up the database with sample data, you can run the following command in the backend directory:
cd backend
python manage.py loaddata ../data/sample_data.jsonIn case you experience issues with the sample data encoding, you can use the following command to load the data with UTF-8 encoding:
cd backend
python -Xutf8 manage.py loaddata ../data/sample_data.jsonThis will populate the database with predefined households, users, expenses, tasks, and shopping lists for testing purposes.
You can use two predefined users:
-
User 1:
email: maya@smith.com,password: testing321 -
User 2:
email: kinny@jones.us,password: testing321
The list of available API endpoints can be found at http://localhost:8000/api/docs/ once the backend server is running. This includes endpoints for user authentication, expense tracking, task management, and more.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

