YTAX: A Tax-Ticketing System for Markets and Municipalities
mobile, Android, Laravel, Vue.js, Blade, Java, vue, govtech
YTAX: A Tax-Ticketing System for Markets and Municipalities

YTAX: A Tax-Ticketing System for Markets and Municipalities

## Outcome Built and shipped YTAX, a tax-ticketing system for municipal and market-tax collection, used by field collectors and controllers across regions, towns, and places. ## Context YTAX is live at yelenafrique.org. Over roughly four years, I led the web and mobile implementation from data model to field experience, working with YTAX stakeholders who supplied the collection-domain requirements, using Laravel, Vue.js, Blade, and Java for Android. ## Problem Collectors needed to register places and issue tickets in the field, while controllers needed dependable visibility into activity and reference data across the collection system. ## Constraints Tax-ticket records must be trustworthy and auditable. Field work cannot depend on a desk-bound workflow, and public financial, adoption, and operational metrics are not available. ## Decisions and trade-offs The domain uses a strict role model: controllers manage reference data, while collectors register places and issue tickets. Tickets are immutable once created and printed; records are soft-deleted rather than removed. This append-only approach favors auditability over post-issuance editing. ## Implementation I built a Laravel back end with Vue and Blade web interfaces and a Java Android app for field collectors, guided by the operating needs of YTAX's collection stakeholders. The Android app issues tickets against the same API as the web dashboard, allowing controllers to see field activity without a separate reconciliation path. ## Results YTAX was shipped and is live at yelenafrique.org. The system provides its collection stakeholders with one shared record of municipal and market-tax ticket activity, with immutable issued tickets and a complete audit trail by design. ## Takeaways For collection systems, protecting the integrity of an issued record is more valuable than making it convenient to edit; role boundaries and a shared API keep field activity accountable.