Ascension Services · Enterprise software · Procurement / ERP
Ascension
Turning complex procurement processes into enterprise software.
- My role
- Full-stack software engineer
- Status
- In production · 2025 – present
- Areas
- Software & Product Engineering, Enterprise Solutions, Mobile & Web Applications
- Stack
- Python · FastAPI · Next.js · TypeScript · PostgreSQL

The problem
Procurement involves many people, approvals, records and business rules. Run on email and spreadsheets, it is slow, hard to audit and error-prone.
Context
Ascension is built by a small team. I work across frontend and backend and own my work end to end: features, APIs, background jobs, deployment and CI/CD.
The solution
A web platform that turns procurement into trackable digital workflows, organised into modules for users and permissions, procurement (suppliers, RFQs, purchase orders), stores and inventory (items, assets, stock movements) and payments (invoices and payment processing).
Architecture
- 01
Next.js frontend
React · TypeScript
- 02
FastAPI backend
Versioned REST API · JWT · role-based permissions
- 03
PostgreSQL
SQLAlchemy · Alembic migrations
- 04
Celery + Redis
Background and scheduled tasks
- 05
Docker · Nginx
Containerised deployment
What I did
Procurement workflows
- Built purchase-order amendments and cancellations with recorded reasons, approval forwarding and approver prompts.
- Hardened quote visibility, supplier filtering and quote/case integrity checks.
- Worked on the procurement "transit ladder" (the timeline of procurement events) and printable procurement documents and templates.
Platform & integrations
- Added trial and subscription-expiry handling with staged reminder emails, and branded transactional emails.
- Moved supplier inquiry emails onto Celery background queues instead of sending them in-request.
- Fixed realtime websocket notifications, S3 attachment handling, image compression and Alembic migration conflicts.
Delivery
- Worked across the FastAPI backend and Next.js/TypeScript frontend, from requirements to deployment.
- Collaborated with other developers through Jira; supported Docker-based deployment, CI/CD and documentation.
Engineering decisions
- Background work off the request path
- Emails and time-based jobs, such as moving bidding windows forward and closing stale cases, run on Celery workers and a scheduler, so user-facing requests stay fast.
- Permissions and audit built in
- Role-based permissions and audit trails are part of the core, because procurement is about accountability as much as data entry.
Challenges
- Modelling real business processes
- Procurement rules vary by organisation and change over time. Turning them into software means careful requirements work and schema migrations that keep existing data intact.
Outcomes
- More than 700 commits across the backend and frontend since May 2025, spanning procurement workflows, subscriptions and notifications.
- Live at ascensionservices.net.
Technologies
- Python
- FastAPI
- Next.js
- TypeScript
- PostgreSQL
- SQLAlchemy
- Alembic
- Redis
- Celery
- Docker
- Nginx
What I took away
Business software works when it follows how people actually work. Understanding the requirements is half the engineering.