- Overview
- Architecture
- Installation
- Usage
- Supported Banks for PDF Import
- Code Structure
- Testing
- Contributing
- License
Koala is a comprehensive solution for managing your expenses. It provides a Command Line Interface (CLI) for creating and importing expenses. The application is built using Python and follows the Clean Architecture principles.
The application is structured based on the Clean Architecture pattern. It is divided into the following layers:
- Entities: Contains the business objects of the application.
- Use Cases: Contains application-specific business rules.
- Interfaces: Contains interface definitions for the adapters.
- Adapters: Contains the code to connect the application to external concerns.
- Entrypoints: Contains the entry points to the application (CLI in this case).
To install the application, follow these steps:
-
Clone the repository:
git clone https://github.com/AlexandreSenpai/koala.git
-
Navigate to the project directory:
cd koala
-
Install the required packages:
pip install -r requirements.txt
To create an expense, run the following command:
python main.py create-expense
Follow the prompts to enter the expense details.
To import expenses from a PDF, run the following command:
python main.py import-expenses
Follow the prompts to select the PDF and confirm the expenses to be imported.
The application currently supports importing expenses from credit card statements in PDF format from the following banks:
- Nubank
- C6 Bank
application/
: Contains use cases and parsers.domain/
: Contains domain entities and business logic.infra/
: Contains all the adapters like database and CLI.main.py
: Entry point for the CLI.
To run tests, execute the following command:
pytest
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.
The project is licensed under the MIT license. See LICENSE for details.
Feel free to copy and use it for your project!
For more details, please refer to the code documentation and comments. Feel free to raise an issue for any clarifications.