BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//pretalx//pretalx.coscup.org//coscup-2026//talk//TZCLYW
BEGIN:VTIMEZONE
TZID:CST
BEGIN:STANDARD
DTSTART:20000101T000000
RRULE:FREQ=YEARLY;BYMONTH=1
TZNAME:CST
TZOFFSETFROM:+0800
TZOFFSETTO:+0800
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:pretalx-coscup-2026-TZCLYW@pretalx.coscup.org
DTSTART;TZID=CST:20260809T133000
DTEND;TZID=CST:20260809T140000
DESCRIPTION:## Overview\n\nThis session shares our technical journey of bui
 lding a white-label Mastodon based mobile platform without forking Mastodo
 n and without manually rebuilding apps for each client. We cover both the 
 backend customisation layer and the mobile deployment pipeline\, including
  the tradeoffs and lessons learned along the way. The talk is for develope
 rs working with ActivityPub\, Mastodon\, or mobile platforms who face the 
 challenge to maintain custom features while keeping up with upstream chang
 es.\n\n## Backend Challenges\n\nForking Mastodon and modifying the code di
 rectly works at first but becomes very painful as new versions come out. K
 eeping a fork up to date while preserving custom changes is time consuming
 \, error prone\, and does not scale across multiple clients.\n\n### Soluti
 on\n\nInstead of forking\, we inject customisations through a purpose buil
 t Ruby Gem\, keeping all modified code completely separate from the Mastod
 on repository. When a new version comes out\, we update the gem instead of
  re-merging a fork.\n\n- Host a dedicated Mastodon instance for each clien
 t\n- Add or modify features through the Ruby Gem without touching core Mas
 todon code\n- Maintain separate gem versions for each Mastodon release\n\n
 We also built a web based Dashboard so instance operators can control feat
 ures without any code changes. Features shipped this way include Bluesky b
 ridging\, local only posts\, long form post support\, custom community fee
 ds\, and moderation tools.\n\n## Mobile Challenges\n\nWe manage multiple c
 lients who all need the same core functionality\, a Mastodon social feed w
 ith CMS news integration\, but with different branding and feature variati
 ons. Manually updating icons\, colours\, and splash screens for every clie
 nt did not scale. We needed to fully separate the core application from cl
 ient configuration.\n\n### Solution\n\nWe built our architecture around th
 ree parts.\n\n**Control Center:** A web based platform where clients uploa
 d icons\, choose colours\, provide instance and CMS URLs\, and configure f
 eatures with no developer involvement needed.\n\n**Core App:** A React Nat
 ive application with a scan to configure model. Scanning a QR code fetches
  a JSON configuration file and immediately rebrands the app at runtime wit
 hout recompilation.\n\n**Build Service:** For changes that cannot be handl
 ed at runtime such as bundle IDs\, app names\, and push notification certi
 ficates\, an automation pipeline manages custom builds and store deploymen
 t while keeping the no-code experience intact for the client.\n\n## Result
 s\n\nThis architecture powers the Newsmast Foundation Apps for Change prog
 ramme at newsmastfoundation.org\, enabling rapid rollout of native apps ac
 ross news outlets\, content creators\, professional networks\, and local c
 ommunities\, growing the Fediverse through new and diverse audiences.\n\n#
 # Key Takeaways\n\n- How combining Ruby Gems with a Dashboard lets you cus
 tomise and ship features across multiple Mastodon instances without the bu
 rden of forking\n- How runtime configuration through QR code and JSON remo
 ves most manual work in multi-client mobile development\n- How better tech
 nical architecture can directly support an ambitious growth programme expa
 nding the Fediverse globally
DTSTAMP:20260626T063349Z
LOCATION:TR411
SUMMARY:From One Codebase to Many Clients: How We Turn Mastodon Instances i
 nto No-Code Mobile Apps and help grow the Fediverse - Aung Kyaw Phyo\, Ye 
 Myat Thu
URL:https://pretalx.coscup.org/coscup-2026/talk/TZCLYW/
END:VEVENT
END:VCALENDAR
