This project is crafted in Kotlin, leveraging the Spring Boot Framework, and using PostgreSQL as the primary database. Additionally, TimescaleDB is used for optimized time-series data management, facilitating efficient storage and querying of monthly statistics. The application also integrates Spring's scheduling capabilities for automated tasks such as periodic data updates and statistical aggregations.
- Endpoint:
POST /auth/register
- Description: Registers a new user.
- Request Body:
RegistrationRequest
- Response:
AuthenticationResponse
- HTTP Response Code: 201 (Created)
Example:
POST /auth/register
Content-Type: application/json
{
"name": "Renato",
"email": "renato@github.com",
"password": "password"
}
- Endpoint:
POST /auth/login
- Description: Authenticates a user.
- Request Body:
AuthenticationRequest
- Response:
AuthenticationResponse
- HTTP Response Code: 200 (OK)
Example:
POST /auth/login
Content-Type: application/json
{
"email": "renato@github.com",
"password": "password"
}
- Endpoint:
GET /budgets/remaining
- Description: Retrieves the remaining budget.
- Response:
RemainingBudgetDto
- HTTP Response Code: 200 (OK)
Example:
GET /budgets/remaining
- Endpoint:
GET /settings
- Description: Retrieves user settings.
- Response:
SettingsDtoOut
- HTTP Response Code: 200 (OK)
Example:
GET /settings
- Endpoint:
POST /settings
- Description: Adds new settings.
- Request Body:
CreatingSettingsDto
- Response:
SettingsDtoOut
- HTTP Response Code: 204 (No Content)
Example:
POST /settings
Content-Type: application/json
{
"monthlyBudgetValue": 5000
}
- Endpoint:
PUT /settings
- Description: Updates user settings.
- Request Body:
CreatingSettingsDto
- Response:
SettingsDtoOut
- HTTP Response Code: 200 (OK)
Example:
PUT /settings
Content-Type: application/json
{
"monthlyBudgetValue": 6000
}
- Endpoint:
GET /transactions
- Description: Retrieves a paginated list of all transactions.
- Parameters:
Pageable
(for pagination) - Response: Paginated list of
TransactionOutDto
- HTTP Response Code: 200 (OK)
Example:
GET /transactions?page=0&size=10
- Endpoint:
GET /transactions/{transactionId}
- Description: Retrieves a transaction by its ID.
- Path Variable:
transactionId
(Transaction ID) - Response:
TransactionOutDto
- HTTP Response Code: 200 (OK)
Example:
GET /transactions/<UUID>
- Endpoint:
POST /transactions
- Description: Creates a new transaction.
- Request Body:
TransactionInDto
- Response:
TransactionOutDto
- HTTP Response Code: 204 (No Content)
Example:
POST /transactions
Content-Type: application/json
{
"amount": -150.50,
"category": "ENTERTAINMENT",
"description": "Nintendo Switch Black Friday"
}
- Endpoint:
DELETE /transactions/{transactionId}
- Description: Deletes a transaction by its ID.
- Path Variable:
transactionId
(Transaction ID) - Response:
Void
- HTTP Response Code: 204 (No Content)
Example:
DELETE /transactions/<UUID>
- Endpoint:
GET /transactions/summary/monthly
- Description: Retrieves a monthly summary of transactions.
- Parameters:
category
(optional) - Response: List of
TransactionMonthlySummaryDto
- HTTP Response Code: 200 (OK)
Example:
GET /transactions/summary/monthly?category=FOOD