A Next-Generation Financial Management Platform with a Microservices Architecture
FinTrack is a comprehensive Software as a Service (SaaS) platform designed to empower users with full control over their financial lives. Built on a modern **microservices architecture**, the system features a core .NET 8 API for business logic, a Python/FastAPI service for AI operations, and a complete DevOps stack for monitoring and deployment. It offers a secure, scalable, and feature-rich foundation for next-generation financial applications.
# User Authentication (OTP & JWT)
POST /UserAuth/initiate-registration
POST /UserAuth/verify-otp-and-register
POST /UserAuth/login
# User Profile Data Hub
GET /User
# Core Financial Management
GET /Accounts
POST /Transactions
GET /Budgets
# Secure Debt System (GBS)
POST /Debt/create-debt-offer
POST /Debt/respond-to-offer/{debtId}
POST /Videos/user-upload-video
GET /Videos/video-metadata-stream/{videoId}?key=...
# AI Chat Service (Proxy to Python)
POST /Chat/send
# Reporting & Subscriptions
POST /Reports/generate
POST /Membership/create-checkout-session
POST /api/stripe/webhook
-- Simplified schema using PostgreSQL syntax
-- NOTE: The system uses a dual-database strategy:
-- 1. MainDB: For application data.
-- 2. LogDB: For auditing all data modifications.
CREATE TABLE "AppUser" (
"Id" TEXT PRIMARY KEY,
"UserName" TEXT,
"Email" TEXT
);
CREATE TABLE "Accounts" (
"Id" SERIAL PRIMARY KEY,
"UserId" TEXT REFERENCES "AppUser"("Id"),
"AccountName" TEXT NOT NULL,
"Balance" DECIMAL(18,2) DEFAULT 0.0,
"Currency" TEXT NOT NULL
);
CREATE TABLE "Transactions" (
"Id" SERIAL PRIMARY KEY,
"AccountId" INT REFERENCES "Accounts"("Id"),
"Amount" DECIMAL(18,2) NOT NULL,
"TransactionDateUtc" TIMESTAMPTZ NOT NULL
);
CREATE TABLE "Debts" (
"Id" SERIAL PRIMARY KEY,
"LenderId" TEXT REFERENCES "AppUser"("Id"),
"BorrowerId" TEXT REFERENCES "AppUser"("Id"),
"Amount" DECIMAL(18,2) NOT NULL,
"Status" TEXT NOT NULL,
"DueDateUtc" TIMESTAMPTZ NOT NULL
);
CREATE TABLE "VideoMetadatas" (
"Id" SERIAL PRIMARY KEY,
"DebtId" INT REFERENCES "Debts"("Id"),
"EncryptedFilePath" TEXT,
"EncryptionKeyHash" TEXT, -- Key is never stored, only its hash
"Status" TEXT NOT NULL
);