<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Cubevlmu</title>
    <description>The latest articles on Forem by Cubevlmu (@cubevlmu).</description>
    <link>https://forem.com/cubevlmu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3826939%2F968b2080-057d-493b-b531-10bc9c1bc1a5.png</url>
      <title>Forem: Cubevlmu</title>
      <link>https://forem.com/cubevlmu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cubevlmu"/>
    <language>en</language>
    <item>
      <title>Building an open-source Flutter client for Flarum (StarForum)</title>
      <dc:creator>Cubevlmu</dc:creator>
      <pubDate>Mon, 16 Mar 2026 10:20:26 +0000</pubDate>
      <link>https://forem.com/cubevlmu/building-an-open-source-flutter-client-for-flarum-starforum-5ake</link>
      <guid>https://forem.com/cubevlmu/building-an-open-source-flutter-client-for-flarum-starforum-5ake</guid>
      <description>&lt;p&gt;Open-source forums are great — but the client experience often isn't.&lt;/p&gt;

&lt;p&gt;A while ago, a friend of mine deployed a forum using Flarum and wanted a dedicated mobile client for it. Our first attempt was simple: wrapping the forum website inside a WebView.&lt;/p&gt;

&lt;p&gt;It quickly became clear that a native client would provide a much better experience.&lt;br&gt;
So I started building one.That’s how StarForum began.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is StarForum&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;StarForum is an open-source Flarum client built with Flutter.&lt;br&gt;
The goal of the project is straightforward: Provide a fast, modern, and extensible client for Flarum forums.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository&lt;/strong&gt;：&lt;a href="https://github.com/cubevlmu/StarForum" rel="noopener noreferrer"&gt;cubevlmu/StarForum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike many forum applications that are tied to a single community, StarForum is designed to be generic and reusable. Any Flarum instance can be connected, making it useful for multiple communities instead of just one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Flutter&lt;/strong&gt;&lt;br&gt;
Flutter turned out to be a very good fit for this type of project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cross-platform development
Flutter allows the same codebase to run on multiple platforms:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;iOS&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For an open-source project maintained by a small team (or even a single developer), this significantly reduces maintenance effort.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Smooth UI performance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Forum applications typically contain a lot of dynamic content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;discussion lists&lt;/li&gt;
&lt;li&gt;nested replies&lt;/li&gt;
&lt;li&gt;notification feeds&lt;/li&gt;
&lt;li&gt;user profiles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flutter’s rendering system makes it easier to maintain smooth scrolling and responsive interactions, even with complex UI layouts.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Flexible UI design&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I didn’t want to simply replicate the web interface.&lt;br&gt;
Instead, the goal was to design a mobile-first experience with a modern UI. Flutter makes it easy to implement:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;adaptive layouts&lt;/li&gt;
&lt;li&gt;animated transitions&lt;/li&gt;
&lt;li&gt;responsive components&lt;/li&gt;
&lt;li&gt;platform-friendly interactions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Current features&lt;/strong&gt;&lt;br&gt;
The project is still under active development, but several core pieces are already implemented.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forum browsing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users can browse discussions and open discussion pages with rendered post content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basic account functionality is already working, including login, user profile pages, and avatar support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interface follows a Material 3 style design, with responsive layouts that adapt to different screen sizes. Larger screens can use a split-view layout for better navigation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance considerations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some optimizations are already in place, including caching strategies, optimized list rendering, and reduced widget rebuild overhead.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj1dau0fk1snmaundjbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj1dau0fk1snmaundjbb.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project design goals&lt;/strong&gt;&lt;br&gt;
Several principles guide the architecture of the project.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clean architecture
The project separates different responsibilities into clear layers:&lt;/li&gt;
&lt;li&gt;API layer&lt;/li&gt;
&lt;li&gt;repository layer&lt;/li&gt;
&lt;li&gt;UI layer&lt;/li&gt;
&lt;li&gt;&lt;p&gt;state management&lt;br&gt;
This structure helps keep the codebase maintainable and easier for new contributors to understand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modular components&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Many parts of the UI are designed as reusable modules, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;discussion widgets&lt;/li&gt;
&lt;li&gt;user components&lt;/li&gt;
&lt;li&gt;settings modules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This modular design allows new features to be added without introducing unnecessary complexity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extensibility&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since Flarum itself is highly extensible through plugins, the client should also remain flexible enough to support additional features in the future.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k5y8kr8bxjzxujafr90.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k5y8kr8bxjzxujafr90.jpg" alt=" " width="800" height="1736"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why open source&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Originally this was just a small personal project created for a single forum.&lt;br&gt;
However, as the architecture became more general and reusable, open-sourcing the project felt like the natural next step.&lt;/p&gt;

&lt;p&gt;By making StarForum open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;other Flarum communities can use it&lt;/li&gt;
&lt;li&gt;developers can experiment with new ideas&lt;/li&gt;
&lt;li&gt;contributors can help improve the client together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Looking for contributors&lt;/strong&gt;&lt;br&gt;
The project is still evolving, and contributors are very welcome.&lt;br&gt;
There are many areas where help would be valuable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI and UX improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;polishing layouts&lt;br&gt;
improving animations&lt;br&gt;
accessibility improvements&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feature development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;notification system&lt;br&gt;
richer post editor support&lt;br&gt;
compatibility with Flarum plugins&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;smarter caching strategies&lt;br&gt;
API request handling&lt;br&gt;
large list rendering&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Platform support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;improving desktop experience&lt;br&gt;
deeper platform integrations&lt;/p&gt;

&lt;p&gt;Even small contributions — bug fixes, documentation improvements, or issue reports — can help move the project forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to get involved&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the project sounds interesting to you, feel free to join in.&lt;br&gt;
You can:&lt;/p&gt;

&lt;p&gt;⭐ Star the repository&lt;br&gt;
🐛 Report issues&lt;br&gt;
🔧 Submit pull requests&lt;br&gt;
💬 Participate in discussions&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/cubevlmu/StarForum" rel="noopener noreferrer"&gt;cubevlmu/StarForum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final thoughts&lt;/strong&gt;&lt;br&gt;
Open-source projects grow through collaboration.&lt;br&gt;
StarForum is still at an early stage, but the goal is to build a high-quality open-source client for the Flarum ecosystem.&lt;/p&gt;

&lt;p&gt;If you're interested in the idea or want to contribute, you're very welcome to join the project.&lt;/p&gt;

&lt;p&gt;Thanks for reading ❤️&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>mobile</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
