A gateway to what I am building.
This page is an honest snapshot: live links, current focus, and where to see a fuller picture of shipped work.
On the expense tracker, focus is on expense splitting so people can share and split costs fairly. On the Java ETL service, focus is a categorization engine for consumed transactions before they are handed off to the app. Keycloak still anchors authentication and authorization across services.
This week
Shipping shared expense splits in the tracker while the Java ETL path gains a real categorization engine for statement lines—so imports land with sensible categories before the expense app pulls them in. Keycloak continues to line up roles and tokens as both surfaces grow.
Expense tracker
In active development Expense splitting
expenses.antwi.co.za
Right now: expense splitting—so users can share expenses, define who owes what, and keep shared costs transparent alongside the rest of the product.
Import & ETL
In active development Java service
Statements → categorize → expense app
The Java service consumes transaction statements, runs validation and cleanup, then drives a categorization engine so each line gets a sensible category. Categorized transactions are staged for the expense tracker to import when the app is ready—same reliability story: retries, idempotency, and clear failures.
- Sources — bank exports and statement files you already have.
- Categorization — engine assigns categories to each consumed transaction line before hand-off.
- Hand-off — prepared data is imported later by the expense tracker app, not silently coupled.
Identity & access
Keycloak OIDC / OAuth2
Centralizing authorization and authentication so APIs and apps share one source of truth for users, roles, and clients—less bespoke auth glue as the stack grows.
- Realms — boundary for users, sessions, and admin separation.
- Clients — each app or service registers for tokens and callbacks.
- Roles — least-privilege access mapped into APIs and UIs.
Achievements & shipped work
The portfolio site is the place for projects, outcomes, and depth. This gateway stays lightweight on purpose.
Browse portfolio.antwi.co.za
On the roadmap
Concrete next steps tied to the work above
-
Finish splitting flows: edge cases for partial shares, permissions, and history people can trust.
-
Tighten Keycloak integration—realm layout, client scopes, and least-privilege roles per service.
-
ETL: evolve the categorization engine—accuracy, overrides, and audit trails before bulk import into the app.
-
Keep this gateway honest: update links and blurbs as milestones land.
Elsewhere
Verified fronts and a static reference co-deployed with this page.