ARCHITECTURE PROJECT

InvoiceArchive

An event-driven invoice pipeline across document, relational, and messaging systems.

01 / PRODUCT

Invoices enter through MongoDB, move through scheduled processing into a SQL archive, and publish updates and notifications through messaging and email workflows.

The project explores service boundaries, eventual consistency, CQRS, background processing, and observability in a workflow where each stage has a distinct responsibility.

02 / CAPABILITIES

  • Invoice ingestion
  • Scheduled archival
  • Message-driven updates
  • Email notifications and structured logs

03 / TECHNOLOGIES

C#.NET 8MongoDBSQLHangfireRabbitMQMassTransitCQRSElasticsearchSerilogDocker

04 / HOW IT WORKS

From the first request to the final result.

  1. 01New invoices are ingested and held in MongoDB.
  2. 02Hangfire starts archival work in the background.
  3. 03CQRS handlers validate and move archival data into SQL.
  4. 04MassTransit publishes events through RabbitMQ.
  5. 05Consumers update downstream state, send email, and write searchable logs.

05 / TECHNOLOGY ROLES

MongoDB

Acts as the flexible intake store for incoming invoice documents.

SQL

Provides the structured, durable archive.

Hangfire

Runs archival work reliably outside the request cycle.

RabbitMQ + MassTransit

Move domain events between independently responsible consumers.

Elasticsearch + Serilog

Make the distributed workflow observable and searchable.

All projectsView on GitHub