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
|
Create, review, edit, and delete transactions. Keep your daily financial activity organized in one place. |
Search and filter by transaction type, category, and date range. Sort and paginate results on the server. |
|
See income, expenses, balance, category summaries, monthly trends, and recent transactions. |
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
| 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 |
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;
Controllers handle HTTP requests, services apply business rules, and Entity Framework Core manages persistence. DTOs separate API contracts from database entities.
Prerequisites: .NET 8 SDK, Node.js with npm, SQL Server, and Git.
git clone https://github.com/here-is-leo/expense-tracker.git
cd expense-trackerSet 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.Clientcd backend/ExpenseTracker.Api
dotnet restore
dotnet ef database update
dotnet runOpen a second terminal at the repository root:
cd frontend
npm install
npm run devSet 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.
| 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.
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 / بازگشت به بالا