Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/yasserelgammal/expenses-tracker
- Owner: YasserElgammal
- Created: 2023-07-30T13:11:06.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-03T12:53:54.000Z (7 months ago)
- Last Synced: 2024-04-03T13:56:53.465Z (7 months ago)
- Topics: dto-pattern, expense-tracker, financial-analysis, fintech, fintech-api, laravel, laravel-framework, laravel11, money-manager, moneytracker, rest-api
- Language: PHP
- Homepage:
- Size: 87.9 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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).