Skip to main content

Introduction to Your Finance App

Your Finance App is a professional personal finance management application built with modern web technologies. This project serves as both a functional finance tracker and an educational resource for learning full-stack development with TypeScript.

What is Your Finance App?

Your Finance App is a backend API application that allows users to:
  • Track Income and Expenses - Record all financial transactions with detailed information
  • Categorize Transactions - Organize your finances with flexible categorization
  • Multi-Currency Support - Handle transactions in ARS, USD, and EUR
  • Automatic Balance Calculation - View your financial status in real-time
  • Advanced Filtering - Filter transactions by date, type, category, and more
  • Secure Authentication - JWT-based authentication system
  • Data History - Soft delete pattern maintains complete transaction history
This is an educational project designed to teach professional backend development patterns and best practices.

Who is This For?

Ideal for You If:

  • You’re learning web development and want to see real-world patterns
  • You know JavaScript/TypeScript basics and want to level up
  • You want to understand how modern backend applications are structured
  • You’re looking for well-documented, production-ready code examples
  • You’re interested in learning NestJS, Prisma, or PostgreSQL

No Prior Experience Needed With:

  • NestJS - You’ll learn it through this project
  • Prisma - Everything is explained step by step
  • PostgreSQL - We start from the basics
  • Design Patterns - They’re demonstrated in the codebase

Key Features

Financial Management

  • Complete CRUD operations for transactions
  • Real-time balance calculation across multiple currencies
  • Soft delete for maintaining audit trails
  • Date-based filtering and reporting
  • Category-based transaction organization

Authentication & Security

  • JWT-based authentication
  • Password hashing with bcrypt
  • Protected routes with guards
  • User-specific data isolation
  • Input validation with DTOs

Developer Experience

  • Type-safe database queries with Prisma
  • Automatic API documentation with Swagger
  • Hot reload in development mode
  • ESLint and Prettier for code quality
  • Modular architecture for scalability

Technology Stack

Backend Framework

  • NestJS - Progressive Node.js framework with TypeScript
  • TypeScript - Type safety throughout the application
  • Node.js - JavaScript runtime (v18+)

Database & ORM

  • PostgreSQL - Robust relational database
  • Prisma - Modern ORM with excellent TypeScript support
  • Supabase - Hosted PostgreSQL with free tier

Authentication

Development Tools

  • pnpm - Fast, disk space efficient package manager
  • ESLint - Code linting
  • Prettier - Code formatting

What You’ll Learn

1

Backend Architecture

Learn modular architecture with NestJS, dependency injection, guards, decorators, and exception handling.
2

Database Design

Master relational schema design, Prisma migrations, model relationships, indexes for performance, and the soft delete pattern.
3

Security Best Practices

Implement JWT authentication, password hashing, route protection, user authorization, and input validation.
4

TypeScript Patterns

Use advanced TypeScript with strict types, interfaces and DTOs, generics, decorators, and end-to-end type safety.

Project Structure

The application follows a monorepo structure:
your-finance-app/
├── apps/
│   └── backend/              # NestJS application
│       ├── prisma/           # Database schema and migrations
│       ├── src/
│       │   ├── auth/         # Authentication module
│       │   ├── transactions/ # Transactions module
│       │   └── prisma/       # Prisma service module
│       └── test/             # Test files
├── docs/                     # Complete documentation
├── pnpm-workspace.yaml       # Monorepo configuration
└── package.json              # Root scripts

API Capabilities

Authentication Endpoints

POST   /auth/register      # Create new user account
POST   /auth/login         # Authenticate and get JWT token
GET    /auth/profile       # Get current user profile (protected)

Transaction Endpoints

POST   /transactions           # Create new transaction
GET    /transactions           # List transactions with filters
GET    /transactions/balance   # Get current balance
GET    /transactions/:id       # Get transaction details
PATCH  /transactions/:id       # Update transaction
DELETE /transactions/:id       # Soft delete transaction

Educational Goals

This project was specifically designed to teach:

Clean Architecture

Modular design with clear separation of concerns

Type Safety

End-to-end TypeScript for reliable code

Best Practices

Industry-standard patterns and conventions

Real-World Patterns

Production-ready code organization

Next Steps

Ready to get started? Follow our quickstart guide to get the application running on your local machine.

Quickstart Guide

Get Your Finance App running in under 10 minutes

Getting Help

If you encounter any issues or have questions:
  • Check the detailed documentation in the /docs folder
  • Review the source code comments and examples
  • Open an issue on GitHub
  • Experiment with the code - that’s the best way to learn!
This is an educational project. For production use, you should add comprehensive testing, monitoring, rate limiting, and additional security measures.

Build docs developers (and LLMs) love