Skip to content

BudgetBuddy - A personal transaction manager that helps users track their finances simply and effectively. ✨ Main Features: Transaction Creation (credits and debits) Account Summary for informed financial decisions Transaction Listing and Specific Transaction View Technologies Used: Node.js Fastify SQL

Notifications You must be signed in to change notification settings

rafaumeu/budgetbuddy

Repository files navigation

BudgetBuddy

GitHub package.json version Build Status GitHub issues GitHub pull requests License GitHub last commit Node.js Fastify SQLite Test Status

Welcome to BudgetBuddy, your personal transaction manager! With BudgetBuddy, you can easily track your finances, record your transactions, and get an overview of your account in the blink of an eye. Whether you're a casual user or a financial planner, BudgetBuddy is designed to meet your needs.

Features

Key Features:

  • Transaction Creation: Easily record new transactions, whether credit or debit.
  • Account Summary: Get a clear and concise summary of your account, helping you make informed financial decisions.
  • Transaction Listing: View all transactions you've made, organized conveniently.
  • Single Transaction View: See the details of a specific transaction whenever you need.

Business Requirements

  • 💰 Transaction Types: Transactions can be credit (which add to the total) or debit (which subtract from the total).
  • 👤 User Identification: The system ensures that each user can only view their own transactions, maintaining privacy and security.
  • 🔍 Full Control: You have total control over your transactions, able to view only those you've created.

Technologies Used

  • Node.js: For backend construction.
  • Fastify: A highly efficient web framework for Node.js.
  • Knex: A SQL query builder that facilitates database interaction.
  • SQLite3: A lightweight and reliable database to store your transactions.
  • Zod: For data validation, ensuring your inputs are always safe and consistent.

Getting Started

  1. Clone the repository:
git clone https://github.com/yourusername/budgetbuddy.git
  1. Install dependencies:
cd budgetbuddy
npm install
  1. Configure environment variables: Create a .env file in the project root with the following settings:
NODE_ENV=development
DATABASE_URL="./db/app.db"

For testing, you can create a .env.test file with:

NODE_ENV=test
DATABASE_URL="./db/test.db"
  1. Start the server:
npm run dev
  1. Access the application: Open your browser and go to http://localhost:3000.

Project Structure

  • src/: Source code directory
  • db/: Database files
  • tests/: Test files
  • .env: Environment configuration
  • package.json: Project dependencies and scripts

API Endpoints

  • POST /transactions: Create a new transaction
  • GET /transactions: List all transactions
  • GET /transactions/:id: Retrieve a specific transaction
  • GET /summary: Get account summary

Error Handling

The application uses comprehensive error handling to provide meaningful feedback:

  • Validation errors
  • Authentication errors
  • Database connection errors

Performance Considerations

  • Efficient database queries using Knex.js
  • Minimal overhead with Fastify
  • Lightweight SQLite database

Future Roadmap

  • Implement transaction categories
  • Add data visualization
  • Create mobile application
  • Integrate with bank APIs

Contributions

Contributions are always welcome! If you want to help improve BudgetBuddy, feel free to open an issue or send a pull request.

License

This project is licensed under the ISC License - see the LICENSE file for more details.

Feel free to explore, test, and most importantly, manage your finances effectively with BudgetBuddy! 💸

About

BudgetBuddy - A personal transaction manager that helps users track their finances simply and effectively. ✨ Main Features: Transaction Creation (credits and debits) Account Summary for informed financial decisions Transaction Listing and Specific Transaction View Technologies Used: Node.js Fastify SQL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published