Skip to content

Repository files navigation


Expense Tracker

Personal finance, with room to breathe. Record your transactions, organize your spending, and understand your financial position through a focused React interface and a layered ASP.NET Core API.

Explore features  ·  Technology  ·  Architecture  ·  Quick start  ·  API reference  ·  Meet Leo


Record transactions, organize your finances, and review financial summaries.


01 / A place for every transaction

↗ Income & expenses

Create, review, edit, and delete transactions. Keep your daily financial activity organized in one place.

⌕ Find what matters

Search and filter by transaction type, category, and date range. Sort and paginate results on the server.

◉ A clearer overview

See income, expenses, balance, category summaries, monthly trends, and recent transactions.

◇ Your personal space

JWT authentication, BCrypt password hashing, request validation, and per-user ownership checks.

Eight categories, ready from the start

Food · Transport · Shopping · Bills · Entertainment · Health · Salary · Other

02 / Built on a focused stack

Layer Foundation Supporting tools
API ASP.NET Core 8 FluentValidation · Swagger / OpenAPI
Persistence Entity Framework Core 8 SQL Server · Fixed-precision money values
Interface React + Vite Tailwind CSS · React Router
Authentication JWT BCrypt · Ownership checks

03 / Clear responsibilities at every layer

flowchart LR
    A[React client] -->|HTTP / JSON| B[Controllers]
    B --> C[Application services]
    C --> D[EF Core]
    D --> E[(SQL Server)]
    B -.-> V[Validation]
    C -.-> O[Ownership rules]
    classDef client fill:#E5F4D8,stroke:#548369,color:#17382B;
    classDef server fill:#E5F1EC,stroke:#548369,color:#17382B;
    class A client;
    class B,C,D,E,V,O server;
Loading

Controllers handle HTTP requests, services apply business rules, and Entity Framework Core manages persistence. DTOs separate API contracts from database entities.

04 / From source to running locally

Prerequisites: .NET 8 SDK, Node.js with npm, SQL Server, and Git.

Get the source

git clone https://github.com/here-is-leo/expense-tracker.git
cd expense-tracker

Configure the API

Set the database connection and JWT values using .NET user secrets, environment variables, or local development settings. Example variable names:

ConnectionStrings__DefaultConnection=your-sql-server-connection-string
Jwt__Key=your-long-random-development-secret
Jwt__Issuer=ExpenseTracker.Api
Jwt__Audience=ExpenseTracker.Client

Start the backend

cd backend/ExpenseTracker.Api
dotnet restore
dotnet ef database update
dotnet run

Start the frontend

Open a second terminal at the repository root:

cd frontend
npm install
npm run dev

Set VITE_API_BASE_URL if required by your frontend configuration. Use the actual API address and ports shown by your local setup. Keep production credentials outside version control.

05 / A small, practical API

Method Endpoint Purpose
POST /api/auth/register Create an account
POST /api/auth/login Authenticate and receive a JWT
GET /api/transactions Search, filter, sort, and paginate
POST /api/transactions Create a transaction
GET /api/transactions/{id} Retrieve an owned transaction
PUT /api/transactions/{id} Update an owned transaction
DELETE /api/transactions/{id} Delete an owned transaction
GET /api/categories List global categories
GET /api/dashboard Retrieve financial summaries

Use the API's development /swagger route for exact schemas and configured endpoints.

Security, release scope & verification

Protected operations require JWT authentication. BCrypt hashes passwords, server-side checks enforce ownership, and FluentValidation validates incoming requests. Centralized exception handling provides consistent errors.

The documented core release is presented as 100% complete. This scope covers the capabilities above. The supplied description reports manual verification of authentication, validation, ownership, transaction CRUD, filtering, pagination, sorting, and dashboard calculations.

Automated xUnit tests, Recharts visualizations, Docker, and GitHub Actions were listed as future work in the source description. They are outside this core release scope.


06 / The developer behind the project

Ilia Farahani (Leo) — Senior Developer — @here-is-leo

Ilia Farahani (Leo) · ایلیا فاراهانی (لئو)
Senior Developer · برنامه‌نویس ارشد پروژه

GitHub / @here-is-leo ↗



ردیاب هزینه

تصویری روشن‌تر از پول شما. تراکنش‌ها را ثبت کنید، مخارج را سامان دهید و وضعیت مالی خود را در یک جا ببینید. رابط React و API لایه‌بندی‌شدهٔ ASP.NET Core، پایهٔ این تجربه هستند.

قابلیت‌ها · فناوری‌ها · راه‌اندازی · مستندات API · برنامه‌نویس ارشد

۰۱ / هر تراکنش، در جای خودش

↗ درآمد و هزینه

ایجاد، مشاهده، ویرایش و حذف تراکنش‌ها برای سامان‌دهی فعالیت‌های مالی روزانه.

⌕ جست‌وجوی دقیق

فیلتر نوع، دسته و بازهٔ زمانی، همراه با جست‌وجو، مرتب‌سازی و صفحه‌بندی سمت سرور.

◉ نمای روشن مالی

درآمد، هزینه، موجودی، خلاصهٔ دسته‌ها، روند ماهانه و تراکنش‌های اخیر.

◇ فضای شخصی شما

احراز هویت JWT، هش گذرواژه با BCrypt، اعتبارسنجی درخواست و کنترل مالکیت اطلاعات.

هشت دستهٔ آماده: خوراک · حمل‌ونقل · خرید · قبوض · سرگرمی · سلامت · حقوق · سایر

۰۲ / فناوری‌ها و معماری

لایهفناوری‌ها
بک‌اندASP.NET Core 8 · EF Core 8 · FluentValidation · Swagger
فرانت‌اندReact · Vite · Tailwind CSS · React Router
داده و امنیتSQL Server · JWT · BCrypt

کنترلرها درخواست‌های HTTP را دریافت می‌کنند؛ سرویس‌ها قواعد برنامه و مالکیت داده را بررسی می‌کنند؛ و Entity Framework Core داده‌ها را در SQL Server نگه می‌دارد. مشاهدهٔ نمودار معماری ↑

۰۳ / راه‌اندازی محلی

به .NET 8 SDK، Node.js و npm و SQL Server نیاز دارید. پس از دریافت مخزن، رشتهٔ اتصال و تنظیمات JWT را طبق راهنمای راه‌اندازی تنظیم کنید و از ریشهٔ پروژه بک‌اند را اجرا کنید:

cd backend/ExpenseTracker.Api
dotnet restore
dotnet ef database update
dotnet run

در ترمینالی دیگر، از ریشهٔ پروژه فرانت‌اند را اجرا کنید:

cd frontend
npm install
npm run dev

در صورت نیاز، VITE_API_BASE_URL را برابر نشانی API قرار دهید. پورت‌ها را از خروجی اجرای برنامه بگیرید و کلیدهای محیط عملیاتی را در مخزن ذخیره نکنید.

۰۴ / مستندات و وضعیت نسخه

مسیرهای ثبت‌نام، ورود، تراکنش‌ها، دسته‌بندی‌ها و داشبورد در جدول API فهرست شده‌اند. Swagger در محیط توسعه جزئیات درخواست‌ها و پاسخ‌ها را نشان می‌دهد.

وضعیت تکمیل و بررسی‌های پروژه

محدودهٔ نسخهٔ اصلی مستندشده: ۱۰۰٪ تکمیل. طبق متن اولیه، احراز هویت، اعتبارسنجی، مالکیت داده، عملیات تراکنش، فیلتر، صفحه‌بندی، مرتب‌سازی و محاسبات داشبورد به‌صورت دستی بررسی شده‌اند.

آزمون خودکار xUnit، نمودارهای Recharts، Docker و GitHub Actions در متن اولیه جزو کارهای آینده آمده‌اند و خارج از محدودهٔ این نسخه هستند.

۰۵ / برنامه‌نویس ارشد پروژه

ایلیا فاراهانی (لئو)
برنامه‌نویس ارشد پروژه

Ilia Farahani · @here-is-leo



EXPENSE TRACKER
Every penny. In perspective.

↑ Back to top / بازگشت به بالا

Releases

Packages

Contributors

Languages