Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Expenses Tracking Portfolio (sendkonalang-app)

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.


🚀 Key Features

  • 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.

🛠️ Tech Stack

Backend

  • Python 3.10+
  • Django & Django REST Framework
  • PostgreSQL
  • SimpleJWT / Django AbstractUser

Frontend

  • React.js
  • Axios (for API calls)
  • React Router
  • CSS

🚀 Getting Started

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/

⚙️ Configuration (.env)

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\


overview.mov