Skip to content

Expense Tracker RESTful web service built with Spring Boot and MySQL for the database

Notifications You must be signed in to change notification settings

gangulwar/Expense-Tracker-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Expense Tracker API

Overview

RESTful web service built with Spring Boot, using MySQL for the database and provides endpoints for creating, updating, and retrieving expense records.

Table of Contents

  1. Database Structure
  2. Endpoints

Database Structure

The primary structure involves two main tables:

  1. users
  2. expense_base
  1. users Table

The users table serves as the repository for user information. Whenever a new user is created, their details, are stored in this table.

Table Structure

`users` (
  `user_id` varchar(255) NOT NULL,
  `email_id` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `username` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
)
  1. expense_base Table

The expense_base table acts as a foundational template for individual user expense tables. When a new user is added to the system, a corresponding table is dynamically created with the user's username as the table name.

Table Structure

`expense_base` (
  `transaction_id` int NOT NULL AUTO_INCREMENT,
  `amount` decimal(10,2) NOT NULL,
  `isCredited` tinyint(1) NOT NULL,
  `category` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  `transaction_date` datetime NOT NULL,
  PRIMARY KEY (`transaction_id`)
)

Endpoints

  1. Creating a new user

    POST /user/new

Request Body

{
    "password": "[password]",
    "username": "[username]",
    "emailId": "[email id]"
}

Success Response

{
    "status": "success",
    "message": "User created successfully",
    "data": {
        "userId": "[userid]", //generated
        "username": "[username]",
        "password": "[password]",
        "emailId": "[email id]"
    }
}

Failure Response

{
    "status": "failure",
    "message": "User already exists",
    "data": {
        "userId": null,
        "username": "[username]",
        "password": "[password]",
        "emailId": "[email id]"
    }
}

  1. Authentication of a user

    POST /user/auth

Request Body

{
    "username":"[username]" ,
    "password": "[password]"
}

Success Response

{
    "status": "successful",
    "message": "Authenticated Successfully",
    "token": "[JWT TOKEN]"
}

Failure Response

{
    "status": "failure",
    "message": "Unauthorized: Authentication unsuccessful.",
    "data": null
}
  1. Add a expense

    POST /expense/add/{username}

Header

Authorization: Bearer [JWT Token]

Request Body

{
    "amount": "[amount]",
    "isCredit": [true/false],
    "category": "[category]",
    "description": "[description]",
    "dateTime": "[dateTime]"
}

Response

{
    "status": "success",
    "message": "Expense Added Successfully",
    "data": {
        "id": null,
        "dateTime": "[dateTime]",
        "amount": "[amount]",
        "description": "[description]",
        "category": "[category]",
        "credit": [true/false]
    }
}
  1. Get all expenses

    GET /expense/get/all/{username}

Header

Authorization: Bearer [JWT Token]

Response

[
    {
        "id": 1,
        "dateTime": "[DateTime 1]",
        "amount": "[Amount 1]",
        "description": "[Description 1]",
        "category": "[Category 1]",
        "credit": false
    },
    {
        "id": 2,
        "dateTime": "[DateTime 2]",
        "amount": "[Amount 2]",
        "description": "[Description 2]",
        "category": "[Category 2]",
        "credit": false
    },
    {
        "id": 3,
        "dateTime": "[DateTime 3]",
        "amount": "[Amount 3]",
        "description": "[Description 3]",
        "category": "[Category 3]",
        "credit": false
    }
]

  1. Update a expense

    PUT /expense/update/{username}/{id}

Header

Authorization: Bearer [JWT Token]

Request Body

{
   "dateTime": "[updated date time]",
    "amount": [updated amount],
    "description": "[updated description]",
    "category": "[updated category]",
    "isCredit": [updated boolean]
}

Response

{
    "status": "success",
    "message": "Expense Updated Successfully",
    "data": {
        "id": 3,
        "dateTime": "[updated date time]",
        "amount": [updated amount],
        "description": "[updated description]",
        "category": "[updated category]",
        "credit": [updated boolean]
    }
}
  1. Delete a expense

    /expense/delete/{username}/{id}

Header

Authorization: Bearer [JWT Token]

Response

{
    "status": "success",
    "message": "Expense Deleted Successfully",
    "data": null
}

About

Expense Tracker RESTful web service built with Spring Boot and MySQL for the database

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages