b social network

I want to spend some time experimenting with Opus 4.5, while building an Android application (Kotlin, Material Design 3) that acts as a frontend for an existing small social networking service.

Opus 4.5 turns out to be significantly better than all previous engines. After I provided the service URL, it quickly analyzed the existing HTML endpoints, inferred how they could be used as an API, generated a full API map, ran tests, and produced clean, well-structured API documentation. That moment felt a bit like hearing a familiar album remastered properly for the first time — same material, but suddenly everything is clearer and better separated.

Based on that, it implemented an Android application covering most of the core functionality of the service. This all happened within a few hours, which is still slightly unsettling in a good way. Somewhere in the background I was listening to slow jazz, which turned out to be a bad choice, because the pace of work was closer to fast electronic music than anything relaxed.

From my side, the work mostly involved making a few architectural decisions and occasionally redirecting the model when it went in a less optimal direction. Still, the overall experience felt very fluid — more like playing in a well-rehearsed band than issuing instructions to a tool. You give a hint, it picks up the rhythm, and you just keep going.

Overall, it was a genuine pleasure to work with something that fast, responsive, and surprisingly enjoyable — a bit like accidentally discovering an entirely new instrument, one you didn’t know you had access to, and realizing it can already play in tune with the rest of the band.

Update:
After a few days of work (well… mostly nights), we now have a fully-fledged application being prepared for release on the Google Play Store. Around 30k lines of code, five language versions (probably unnecessary, but still). Lots of fun along the way.

#ScreenDescription
1Splash ScreenInitial loading screen with app logo
2Login ScreenUser authentication (username/password)
3Home ScreenMain timeline with posts feed
4Compose ScreenCreate new post or reply
5Post Detail ScreenSingle post view with comments
6Profile ScreenUser profile with posts and info
7Following ScreenList of followed/following users
8Tag ScreenPosts filtered by hashtag
9Blablog ScreenUser’s blog posts (blablog)
10Photostream ScreenUser’s photos gallery
11Secretary ScreenNotifications (messages, mentions, replies)
12Scheduled Posts ScreenManage scheduled posts
13Settings ScreenApp preferences and configuration
14About ScreenApp info, author, privacy policy, links

Key Features

🔐 Authentication & Accounts

  • Multi-account support – Switch between multiple Blabler profiles without re-logging
  • Secure credential storage – Passwords and tokens encrypted with AES-256-GCM (Android Keystore)
  • Session persistence – Stay logged in across app restarts

🔔 Notifications

  • Background notification polling – Secretary checks for new messages periodically (WorkManager)
  • App icon badge – Shows unread notification count on launcher icon
  • Notification types – Mentions, likes, direct messages, private messages
  • Survives device reboot – Notification worker restarts after device restart

🌐 Fediverse Integration

  • Cross-post to Mastodon – Optionally publish posts to your Mastodon account
  • OAuth authentication – Secure login to Fediverse servers
  • Per-user preference – Cross-posting setting saved separately for each Blabler account

📝 Composing

  • Draft auto-save – Unfinished posts are preserved between sessions
  • Image attachments – Attach photos to posts
  • Reply & quote – Respond to or quote other users’ posts
  • Scheduled posts – Schedule posts for future publishing
  • Hashtag insertion – Quick hashtag appending from tag screen

🖼️ Media

  • Pinch-to-zoom images – Full-screen zoom overlay with gesture support
  • Long-press to save – Save images directly to device gallery
  • Efficient image caching – 600MB disk cache with Coil

🎨 Personalization

  • Light & Dark themes – Follows system preference automatically
  • 5 language support – Polish, English, German, French, Japanese
  • Customizable default feed – Choose between Dashboard (followed) or Public timeline
  • Per-profile settings – Each account can have different preferences

⚡ Performance & Offline

  • Profile caching – User profiles stored locally (Room database)
  • Rate limiting – Respects 5 req/s limit to avoid server overload
  • Efficient HTML parsing – Web scraping with Jsoup (no REST API available)

📱 Platform Integration

  • Deep links – Handle blabler:// URLs for OAuth callbacks
  • Material Design 3 – Modern Android UI with proper theming
  • Android 5.0 to 15 support – Broad device compatibility (SDK 21-35)

Leave a Reply

Scroll to Top

Discover more from architectureofvibes

Subscribe now to keep reading and get access to the full archive.

Continue reading