Status — Shipped and live on both stores
Platforms — iOS — App Store · Android — Google Play
Stack — Flutter, Dart, XenForo API, Firebase Cloud Messaging
Site — thenextvoz.htknguyen.dev
Why#
VOZ is Vietnam’s largest tech forum and it had no decent mobile experience. Reading it on a phone meant a browser, pinch-zoom and a lot of regret. So I built the client I wanted.
What it does#
- Mobile-optimised reading with full BBCode rendering, code highlighting and inline media
- Post, reply, react, quote, spoiler tags, image attachments
- Private messaging
- Push notifications for quotes, reactions and mentions
- Advanced search — by thread, user and date range
- Bookmarks, dark mode, adjustable typography, Vietnamese and English UI
- Pro tier: multi-account switching, compact mode, draft saving, RSS feed
Engineering notes#
The genuinely hard parts were not the UI:
- XenForo integration — session and CSRF handling against a forum with no official public API, staying strictly within the forum’s stated rules on request patterns
- Push notification bridge — building a VAPID/Web Push to FCM bridge so forum events could reach native devices
- BBCode rendering — a full parser and Flutter widget tree, because the forum’s dialect includes custom tags no off-the-shelf package handles
- Rate discipline — one user tap equals one server request, no prefetching or page-merging, per the forum’s explicit rules for third-party clients
Constraint I chose to respect#
The forum administrators published rules for third-party app developers: no server abuse, no advertising, mandatory disclosure that the app is unofficial, and a required support thread. I followed all of them, negotiated directly with the admins on features that touched request volume, and built the monetisation model around a paid tier rather than ads. Shipping something that survives contact with the community it serves matters more than shipping fast.