Make transitions explicit
The invoice lifecycle service checks allowed transitions and payment summaries before mutating status, then records audit and financial journal events.
LOADING
Opening the page…
Live / 2026 / Billing systems
Azaeron brings invoicing, quotations, payments, inventory, and customer records into one business workspace.
Invoice state, authorization, API and release checks

Azaeron is a merchant workspace for invoices, quotations, payments, inventory and customer records. Those tasks share financial state, so one screen cannot decide alone when an invoice is paid.
Billing software must stop invalid transitions and preserve a clear record when business state changes. A paid invoice cannot be inferred from a button click or a browser return value.
I worked across the React interface, Express API, business rules and release checks. The invoice lifecycle service checks allowed transitions and payment summaries before recording a change.
The invoice lifecycle service checks allowed transitions and payment summaries before mutating status, then records audit and financial journal events.
Permission mapping lives in API middleware; frontend visibility is not the security boundary.
The API verifies database indexes before listening and exposes a readiness route for deployment checks.
The browser presents merchant workflows. The API validates identity, tenant scope and permissions before changing records in MongoDB. Invoice transitions also write audit and financial journal events.
React + TypeScript/Vite interface for invoicing, POS, and merchant operations.
Express routes, validation, role permissions, lifecycle rules, and rate limits.
MongoDB/Mongoose models; invoices carry payment and lifecycle state.
GitHub Actions release checks; separate Vercel frontend and Render API configuration.
The code includes lifecycle rules, authorization middleware, database index checks at startup and a GitHub Actions release gate. The sign-in and documentation pages are available online.

The site and documentation are live. Payment flows inside an account, enabled integrations and usage have not been confirmed.