Asento
Signed, trackable loans between people you trust.
Asento is a cross-platform app that lets friends and family record and track informal loans with digitally signed agreements — replacing IOUs and WhatsApp notes. I designed, built and deployed all of it solo: the mobile UI, a NestJS/PostgreSQL API, push & email notifications, and a production AWS deployment with CI/CD and error monitoring.
The challenge
Informal loans between friends and family are everywhere, and almost always tracked badly — an IOU on paper, a note in WhatsApp, a half-remembered promise. There's no shared record of what was agreed, no signatures, and no reminders when a repayment is due.
Asento turns those informal arrangements into digitally signed, two-party agreements with a clear repayment plan, an auditable activity trail, and automatic reminders — money handled with the rigour of a real financial product, in an app friendly enough for family to use.
What I built
I owned every layer — product, mobile, backend, cloud and CI/CD — and used Claude Code to move fast while keeping tight control of architecture and money-accuracy decisions.
smartphoneProduct & mobile
- Cross-platform iOS / Android / web app in Expo, React Native & TypeScript (strict)
- Material Design 3 UI (React Native Paper) from Figma, with light & dark themes
- Auth0 Universal Login (RS256 JWT), just-in-time provisioning & first-run onboarding
- Full loan lifecycle: pending → active → defaulting → settled, with two-party signing
- Four repayment plans (monthly, weekly, one-off, ad hoc) and a per-loan activity timeline
dnsBackend & data
- Modular NestJS REST API with Prisma & PostgreSQL, documented with OpenAPI
- Money stored as fixed-point decimals; balances computed from payment history, not stored
- Gapless loan references (AS0001) from a PostgreSQL sequence
- Notifications: 11 push types (Expo/FCM), transactional email via AWS SES, cron for due/overdue/defaulting & invite expiry
- Admin analytics behind RBAC, with pool-safe sequential queries and transaction-scoped timeouts
cloudCloud, DevOps & quality
- AWS deploy in eu-west-2: App Runner, private RDS PostgreSQL, VPC connector, NAT, ECR
- Moved off ECS Fargate + ALB to App Runner — cut hosting ~$40/month
- GitHub Actions CI/CD: test → Docker build → ECR → auto deploy, with migrations on container start
- Sentry error monitoring on backend & mobile, tagged with git-SHA releases
- Integration tests against a real PostgreSQL database that caught bugs mocks missed
smart_toyDevelopment approach
- Used Claude Code throughout for pair programming, debugging, tests and infra scripting
- Owned the architecture and reviewed all generated code
- Kept project context files (CLAUDE.md, design notes) so AI output matched the codebase's conventions
- Human judgement on the money-accuracy calls; tooling on the volume
Highlights
Need a product shipped end-to-end?
From mobile to API to cloud — I take money-critical products from idea to production. Let's talk about yours.