The Direction I Am Going With Fe

fe
devlog
My plans and ideas for my project fe — for the rest of the year hopefully.
Published

August 22, 2025

If you live under a rock, or somehow found this without knowing my project fe first: Fe is a CLI tool I am making for gamedev that allows you to do things like create packed textures, init new projects (for things like raylib, SFML, and so on), and transcode audio files from something like mp4 to ogg.

I started the project to learn about CLI tools, and to help aid in exporting projects to platforms like Itch.io. Fe stands for Flush’s Exporter after all. I want to talk about where I am going with it, and my idea behind my madness.


Ideas


The Init Command

One of the main things I want to work on is the init command. The idea is making it easier to init game projects for frameworks like raylib, SFML, and so on. I love creating new projects, but I often jump around with languages, and trying to find templates for raylib bindings is like dry eye — a pain in the a-.

I thought a lot about how to do this, and I wanted to make sure I didn’t have to push updates to be able to go from raylib 5 to 5.5 or something. So I created a repo that will hold all the project template files, and the top level will be the template the command finds and returns what is created and what is not. In the long term I was going to add the ability to pull in more template repos from others who may have a different way of setting up their projects.

In the submod project repo, the idea is to have folders like cpp-raylib5-cmake that hold the C++ Raylib-5 CMake template. This is basically how the react-app init command works. I like the idea a lot, and to me it’s a way to keep file size down within the app. File size is important because I want to make sure build minutes aren’t wasted on a bunch of bytes that you’re not going to use. You won’t be initializing a project in a GitHub action, so including all of these templates would be a waste of disk space, time, and money.

I was thinking about adding the option for caching templates for people without stable access to the internet. This is important for people in areas like Africa, and lesser developed areas of the world (including places in the US). This would allow them to pre-cache the templates so that if the connection fails they wouldn’t have a half-complete project or worse. This would be something I would have to learn, since it would be different on Linux, macOS, and Windows. Maybe I would store them in the same directory as the tool itself and check that directory before pulling from the list.

Right now the submod is just a repo with a license and an empty readme. That will change in the future. I am probably going to start with c and cpp project templates, then move on from that.


Go Tests

I have fought with the idea of just removing them from the project, since most of my time is being spent on writing tests that catch errors and check for things like incorrect command formatting and so on. This is 100% a skill issue as the kids would say. I have never fully learned testing or testing frameworks. So I am having to learn now. Gemini has been a big help in writing and helping me update my Go tests, but it does fall short sometimes (it removes the test and adds a print statement).

For now Go tests are safe and are run during every push, merge, and PR.


Updater

I do plan on adding something that checks on run for newer versions of the CLI tool, and auto downloads and installs them for you.

That will probably be randomly added in something like 0.5 or 0.6.


Adding Docker and GitHub Actions Images

I have been in the works of adding these, as well as to Linux package managers, Homebrew, and winget/choco. I just want to make sure it fits into the GitHub Actions and autobuilds.


The TUI And What It Will Do

The TUI (Terminal User Interface) is going to add to the setup of the config, and aid in more help information formatting among other things. I think this choice will help the tool reach a larger userbase, and add a ton of value. I have Dyslexia, and if something is poorly formatted it makes it almost impossible to read or understand. While I can’t control the environment it’s displayed in, I can control how my program reacts to that environment. Bubble Tea from Charm is almost the standard TUI library in the Go ecosystem. It uses the ELM model, and I really enjoy that fact!

It will have things like displaying the fe.yaml file in the project, more interactive commands, and more.


What’s The Direction I Am Going With?

Right now I am working on getting a working TUI up and running with Bubble Tea and other Charm parts, and working on getting templates into the submod on my free time. Other than that I am not really doing anything more on the project. If you have something to add just email me, start an issue in the repo, or reach out to me on Discord.

I will probably add Docker, GitHub Actions images, the updater, and package managers all in one go — since I want them to all be on the same version and update at the same time.

So yea, thanks for reading my small little update, and I hope you enjoy my CLI tool or other projects!