All Projects
Confidential context: Business finance prototypeWeb systemLive

Invoicing Application

Invoice creation, clients, PDFs, email delivery, dashboard metrics, and AI queries came together in one prototype platform.

Invoicing Application cover screenshot

How the project is put together

Architecture map

6 layers / 5 directed links

100%

feedsfeedsfeedsfeedsfeeds
  1. 01
    Interface

    Dashboard, clients, invoices, statuses, PDF actions, email flow, and AI query UI.

    Angular 17 / PrimeNG / Tailwind / Dark mode
  2. 02
    Application

    Client and invoice screens coordinate API actions, status changes, exports, and dashboard metrics.

    Angular services / ASP.NET controllers / DTOs
  3. 03
    Services/API

    Invoice, client, dashboard, auth, PDF, email, and AI assistant services.

    .NET 9 / EF Core / QuestPDF / SendGrid / OpenAI
  4. 04
    Data

    Clients, invoices, statuses, totals, payments, and dashboard query data.

    PostgreSQL / Npgsql / EF repositories
  5. 05
    Auth/Permissions

    Frontend auth guard and login exist; backend authorization needs hardening.

    JWT / Route guard / Admin login
  6. 06
    Runtime

    Local Angular/API/Postgres development with deployment configuration still to be completed.

    Angular CLI / .NET API / Swagger / Supabase expected

From broken workflow to operating system

Invoice work needed separate tools for clients, PDF output, email delivery, and status tracking.

Angular, .NET, PostgreSQL, SendGrid, and OpenAI support the core invoicing workflow, with hardening still pending.

The workflow constraint

The client needed a comprehensive invoicing tool that handles the full lifecycle — from creating invoices and managing clients to exporting PDFs, sending emails, and tracking payment status — with AI-powered querying for quick data access.

What changed

Full invoicing lifecycle: create → PDF → email → track
AI-powered natural language queries on invoice data
Multi-currency support with tax configuration
Automated overdue detection with visual indicators

Decisions and trade-offs

.NET + Angular over full JavaScript stack

The project requirements included strong typing, enterprise patterns, and reliable PDF generation.

Decision: Chose .NET 7 for robust backend with C# type safety, and Angular for structured frontend architecture with TypeScript.

Trade-off: Higher complexity than a Node.js/React stack, but stronger typing guarantees and better fit for business logic patterns.

OpenAI for natural language invoice queries

Users wanted to query invoice data without learning SQL or complex filter UIs.

Decision: Integrated OpenAI to parse natural language questions and convert them to database queries against the invoice data.

Trade-off: Added API cost and latency for queries, but dramatically improved data accessibility for non-technical users.

Supabase PostgreSQL over self-hosted database

Needed managed PostgreSQL with connection pooling and easy setup.

Decision: Used Supabase for managed PostgreSQL with session pooler, reducing infrastructure management overhead.

Trade-off: Vendor dependency and free tier limits, but zero database administration and built-in connection pooling.

Constraints, architecture, and proof

ASP.NET Core 7 Web API (C#) with RESTful endpoints, Angular frontend with TypeScript and Tailwind CSS, Supabase PostgreSQL for data persistence, OpenAI API for natural language queries, SendGrid for transactional email, JWT for authentication.

PDF output must match professional invoice formatting standards
Support for multiple currencies and tax configurations
AI query integration must be fast and produce accurate results
Email delivery with reliable delivery via SendGrid
JWT-based authentication for admin access

Deployment, security, and maintenance

JWT authentication with admin login, input validation on all invoice fields, auto-calculated totals preventing manual errors, overdue detection runs automatically, SendGrid for reliable email delivery.

Honest edges and next improvements

Prototype/in-progress: CSV endpoints, backend authorization, tests, and deployment config need hardening.

What I would improve next

Add recurring invoices with automated scheduling
Implement payment tracking and audit log
Add user roles and permissions beyond admin
Improve UI/UX polish and add more responsive breakpoints