Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yasserelgammal/expenses-tracker

Expenses Tracker, Data Transfer Object (DTO) & Service Layer - RestApi - Laravel Framework
https://github.com/yasserelgammal/expenses-tracker

dto-pattern expense-tracker financial-analysis fintech fintech-api laravel laravel-framework laravel11 money-manager moneytracker rest-api

Last synced: about 1 month ago
JSON representation

Expenses Tracker, Data Transfer Object (DTO) & Service Layer - RestApi - Laravel Framework

Awesome Lists containing this project

README

        

Laravel Logo

# Expenses Tracker

- The application allows users to add, edit, and delete their expenses and income as needed, making it easy to manage their finances in one place.
- The application also provides users with a clear view of their financial transactions, displaying a summary of their income and expenses for each month and year, in addition to that it's calculate saving amount, This feature allows users to quickly evaluate their financial performance and make informed decisions about their spending habits.

I've used:
- Laravel 10,
- Laravel Sanctum,
- Traits, Enums, Resources,
- Handle API versioning to enable scalability easily for the project in the future,
- DTO & Service Layer:
I utilized the Data Transfer Object (DTO) pattern in my implementation, helped me to separate my model from the controller layer and allowed me to pass data between my application's various components in a structured format.
Additionally, I implemented a Service Layer to encapsulate the business logic, which further enhanced the application's scalability and maintainability.

## Categories

## GET: index

GET /api/v1/categories

### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|items_per_page|query|string| no |Cutomize results for pagination|

## POST: store

POST /api/v1/categories

### Params

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|name|body|string| yes|none|
|description|body|string| yes|none|
|type|body|string| yes |income , expense|

## GET: show

GET /api/v1/categories/{id}

### Params

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|

## GET: show

GET /api/v1/categories/{id}

### Params

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|

## POST: update

POST /api/v1/categories/{id}

### Body Parameters

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|name|body|string| yes |none|
|description|body|string| yes |none|
|type|body|string| yes |income , expense|
|_method|body|string| yes |PUT|

## DELETE destroy

DELETE /api/v1/categories/{id}

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|

## Transactions

## GET: index

GET /api/v1/transactions

### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|items_per_page|query|string| no |none|

## POST: store

POST /api/v1/transactions

### Body Parameters

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|amount|body|string| yes |none|
|description|body|string| yes |none|
|category_id|body|string| yes|none|
|date|body|date| yes|format: Y-m-d|

## GET: show

GET /api/v1/transactions/{id}

### Params

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|

## GET: show

GET /api/v1/transactions/{id}

### Params

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|

## POST: update

POST /api/v1/transactions/{id}

### Body Parameters

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|amount|body|string| yes |none|
|description|body|string| yes |none|
|category_id|body|string| yes |none|
|date|body|date| yes |format: Y-m-d|
|_method|body|string| yes |PUT|

## DELETE destroy

DELETE /api/v1/transactions/{id}

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|

## GET statistics

GET /api/v1/transactions/statistics

### Params

|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|items_per_page|query|string| no |none|

## About Me

I am a Junior Backend Developer with 1+ year of experience, I specialize in PHP, Laravel, and front-end technologies like TailwindCSS and Livewire. I have expertise in developing REST APIs and working with MySQL databases, and I am familiar with software architecture patterns such as MVC and HMVC. I am committed to producing clean, well-documented code that is easily maintainable, and I enjoy sharing my knowledge through various channels. I am eager to take on new challenges and continue to develop my skills.

- [LinkedIn](https://www.linkedin.com/in/elgammal/).
- [Youtube](https://www.youtube.com/@yasser.elgammal).
- [Dev_to](https://dev.to/yasserelgammal).