A full-stack expense management engine designed to track event-based debts, user balances, and transaction history. Built with a focus on data integrity, secure authentication, and a responsive user experience.
- Complex Debt Logic: Custom-built balancing engine that calculates real-time "who owes whom" metrics across multiple events.
- Secure Authentication: Implementation of JWT (JSON Web Tokens) with HttpOnly cookies for secure session persistence.
- Dynamic API: Fully documented RESTful API using Django REST Framework (DRF).
- Nested Data Management: Utilizes writable nested serializers to handle relational data structures (Events, Transactions, and Balances) in a single request flow.
Backend
- Python 3.10+
- Django & Django REST Framework
- PostgreSQL
- SimpleJWT / Django AbstractUser
Frontend
- React.js
- Axios (for API calls)
- React Router
- CSS
1. Clone the Repositories
# Create a parent directory
mkdir sendkonalang && cd sendkonalang
# Clone the Frontend
git clone https://github.com/mmmkay-la/sendkonalang-ui.git
# Clone the Backend
git clone https://github.com/mmmkay-la/sendkonalang-app.git
2. Backend Setup (Django)
Navigate to the app directory and set up your environment:
cd backend/sendkonalang-app
# Create and activate virtual environment
python -m venv venv
On Mac: source .venv/bin/activate
On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run migrations
python manage.py migrate
# Start the server
python manage.py runserver
The API will be available at http://127.0.0.1:8000/
3. Frontend Setup (React)
Open a new terminal window:
cd frontend/sendkonalang-ui
# Install dependencies
npm install
# Start the development server
npm start
The UI will be available at http://localhost:3000/
Backend .env
Create a .env file in .backend root:\
DEBUG= set to True for development
SECRET_KEY=your_secret_key
DB_NAME=your_credentials
DB_USER=your_credentials
DB_PASSWORD=your_credentials
DB_HOST=your_host
DB_PORT=your_port\