Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏦 SmartMoney

A full-stack personal finance management application built with ASP.NET Core and React TypeScript.

Built by Ioannis Kontogiannis · Wingman: Claude 🤖


✨ Features

👤 User Management

  • JWT Authentication with BCrypt password hashing
  • Role-based access control (Admin / User)
  • User registration and login
  • Profile editing
  • Account self-deactivation (soft delete — data preserved)
  • Session timer with token refresh

💳 Accounts

  • Create and manage financial accounts
  • Co-ownership — invite up to 4 members per account
  • Real-time balance tracking
  • Account summary with total balance

🏷️ Categories & Subcategories

  • Income / Expense categorization
  • Subcategories for detailed tracking
  • Cascading soft-delete (transactions become "Uncategorized")

📊 Transactions

  • Full CRUD with automatic sign based on category type
  • Filter by account
  • Track who created each transaction (co-ownership support)
  • Scrollable transaction history sorted by date
  • Date picker with dd/MM/yyyy format

📈 Overview / Stats

  • Summary cards (Total Balance, Income, Expenses, Transaction Count)
  • Monthly Income vs Expenses bar chart
  • Spending by Category pie chart
  • Filter by account and custom date range
  • Debounced loading for smooth UX

🛡️ Admin Dashboard

  • Platform-wide statistics
  • User management (view, deactivate, reactivate)
  • View any user's accounts, categories and transactions

🛠️ Tech Stack

Backend

Technology Purpose
ASP.NET Core Web API (.NET 10) REST API
Entity Framework Core 10 ORM & Migrations
SQL Server Database
JWT Bearer Authentication Auth tokens
BCrypt.Net Password hashing
Swagger API documentation

Frontend

Technology Purpose
React 19 + TypeScript UI Framework
Vite Build tool
Tailwind CSS v4 Styling
Recharts Charts
React DatePicker Date inputs
Zod Form validation

🏗️ Architecture

smartmoney/
├── smartmoney-back/          # ASP.NET Core Web API
│   ├── Controllers/          # HTTP endpoints (thin layer)
│   ├── Services/             # Business logic
│   │   └── Interfaces/
│   ├── Repositories/         # Data access layer
│   │   └── Interfaces/
│   ├── Models/               # Domain models
│   ├── DTOs/                 # Data transfer objects
│   ├── Data/                 # AppDbContext.cs
│   └── Migrations/           # EF Core migrations
│
└── smartmoney-front/         # React TypeScript SPA
    └── src/
        ├── features/         # Feature-based components
        │   ├── Accounts/
        │   ├── Categories/
        │   ├── Transactions/
        │   ├── Stats/
        │   ├── Admin/
        │   └── Auth/
        ├── components/       # Shared UI components
        │   └── Layout/
        │       ├── Header.tsx
        │       ├── Layout.tsx
        │       ├── SessionTimer.tsx
        │       ├── Sidebar.tsx
        │       └── ThemeToggle.tsx
        ├── api/              # API functions
        ├── types/            # TypeScript interfaces
        ├── context/          # React context (theme)
        └── utils/            # Utility functions
        

🚀 Getting Started

Prerequisites

  • Docker Desktop

Docker Setup (Recommended)

# Clone the repository
git clone https://github.com/Kontgiannis/Smart-Money.git
cd smartmoney

# Copy the example env file and configure it
cp .env.example .env

# Update .env with your values:
# - DB_PASSWORD: choose a strong password
# - JWT_KEY: random string minimum 32 characters

# Start everything
docker-compose up --build

Then navigate to http://localhost:3000 🚀

First Run

  1. Navigate to http://localhost:3000
  2. Register a new account
  3. To create an Admin user, connect to the database and run:
UPDATE Users SET Role = 'Admin' WHERE Username = 'yourusername'

Accessing the Database

To inspect the database directly, connect via SSMS or Azure Data Studio:

  • Server: localhost,1433
  • Authentication: SQL Server Authentication
  • Username: sa
  • Password: value of DB_PASSWORD from your .env file

Manual Setup Prerequisites

  • .NET 10 SDK
  • Node.js 18+
  • SQL Server
  • Visual Studio 2026 or VS Code

Manual Setup (Without Docker)

Backend

cd smartmoney-back
cp appsettings.example.json appsettings.json
# Update connection string and JWT key in appsettings.json
dotnet ef database update
dotnet run

Frontend

cd smartmoney-front
npm install
npm run dev

📸 Screenshots

Login

Login Page

Accounts

Accounts Icarus's accounts with co-ownership member list

Transactions

Transactions Transaction history with account filter and running balance

Overview / Stats

Overview Monthly income vs expenses and spending by category

Admin Dashboard

Admin Dashboard Maverick's admin view with platform stats and user management


📝 License

This project was developed as a final project for the Coding Factory program at Athens University of Economics and Business (AUEB).

About

Full-stack personal finance management app built with ASP.NET Core Web API and React TypeScript

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages