DEV Community

J. A. Murray
J. A. Murray

Posted on

Building a Worldbuilding Tool with Flutter

Writing Tool

In my writing experience both as a Game Master and a short fiction author, I have found Worldbuilding to be the core of immersive storytelling — whether you're writing epic fantasy novels, designing tabletop RPGs, or crafting game lore.
I have found myself juggling everything between notebooks (seriously you should see my physical collection - and yes I have a problem as a notebook hoarder; and no I am not ashamed), digital .txt files and folded pieces of paper. Despite this, I still find that I am a very organized person, and everything has its place. But just as well, everything has its place.

I have used tons of tools like Obsidian, Trello and the like to manage certain things around this a little better, but they were very broad in their use. Meaning, they could be used for virtually anything and everything, which is great, but not quite as niche for what I need to better support things like Worldbuilding and Character building. These are simply things I do not want to create separate documentation for and do not want to risk losing the data. You could easily go down a seemingly endless metaphorical rabbit hole with worldbuilding alone and just imagine how many various files, folders, software you would use to get it done and "tied" together?

I wanted a dedicated tool to organize these fictional worlds more seamlessly. So, I decided to build one for myself — and document the journey along the way as I realize that others in a similar boat might also want to experience something like this to support their own projects, etc.

This post is the first in a series where I'll walk through creating my Worldbuilding Tool using Flutter.
My goal? The goal with this project is to create a mobile-first application where writers, worldbuilders, game devs, tabletop rpg enthusiasts, etc can craft, store, and explore their worlds and/or characters. This tool will begin as an MVP and then scale up later.

If you've ever wanted to follow a project from concept to completion — or even build something similar, then this might be for you.

So - why Flutter?

I chose Flutter because:

  • Cross-platform: It lets me target both mobile (Android & iOS) and desktop later.
  • Fast prototyping: Flutter's hot reload is a lifesaver during development. I want the MVP (Minimum Viable Product) developed relatively quickly to garner user feedback and explore options in its development.
  • Scalability: I can expand the app later without rewriting core logic which is an absolute godsend if you have ever experienced refactoring an entire codebase due to lack of support across its development cycle etc.

Setting Up the Project

If you want to follow along or contribute, here’s how.

Step 1: Set Up Flutter

Ensure Flutter is installed on your system:

# Check if Flutter is installed
flutter --version

# If not installed, follow official instructions:
https://docs.flutter.dev/get-started/install
Enter fullscreen mode Exit fullscreen mode

Step 2: Create a New Project

flutter create worldbuilding_tool
cd worldbuilding_tool
Enter fullscreen mode Exit fullscreen mode

Step 3: Clone My Repository

You can track my progress and contribute via the GitHub repository:

git clone <https://github.com/J-AlexandreMurray/Raevyn.git>
cd worldbuilding_tool
flutter pub get
Enter fullscreen mode Exit fullscreen mode

Designing the Core Structure

Here’s the basic initial structure for the Worldbuilding Tool, but read this with a grain of salt as it is fluid and might completely change based on how I see it progressing. This is purely a first look at its basic structure and not the entire thing:

lib/
├── main.dart                // Entry point
└── screens/
    ├── home_screen.dart      // Main menu
    ├── create_world_screen.dart // Form for creating worlds
    └── view_worlds_screen.dart   // Display saved worlds
Enter fullscreen mode Exit fullscreen mode

Main Features (Prototype Phase):

  1. Home Screen – Navigate between creating and viewing worlds.
  2. Create World Screen – Input world name and description.
  3. View Worlds Screen – Placeholder for listing stored worlds.

So, what’s Next?

In the next post of this series, I’ll share what it looks like so far and maybe break it down for general purpose knowledge:

The Journey

This project is a public solo project for my own learning and development, however your input, guidance, and feedback are very welcome nonetheless!

🔗 GitHub Repository: Worldbuilding Tool (https://github.com/J-AlexandreMurray/Raevyn)

💬 Help me develop it further beyond the MVP - What features would you like to see as someone that might use it? Drop a comment below!

Sentry mobile image

Improving mobile performance, from slow screens to app start time

Based on our experience working with thousands of mobile developer teams, we developed a mobile monitoring maturity curve.

Read more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay