Part of my push to get Flight of the Scions published, I had to rewrite my website because the landing page couldn't get any commerical links or be updated. That meant I had two options before me, either to figure out the Gatsby errors that caused me to stop adding new content years ago or move forward and migrate the site to Nitride.
Since moving forward with Nitride would benefit me in the long wrong (I could add new content) but would also set me back (not everything moved along), I decided Nitride was the best approach. So, in the middle of everything going on, I sat down and migrated the website.
I went with a much different look for the site, mostly based on the CSS theme for https://d.moonfire.us/, but with the “standard” green theme I use for Fedran. I also knew I would be eventually hosting it on Gemini so much of the complex layouts and multiple columns were taken away in favor of CSS Grids and linear lists. This also let me create a “dark” and “light” mode since the original Fedran site predated my evolving preference for dark mode (and the CSS to support it). As a bonus, I went through and made sure everything passed Firefox's accessibility page for AA contrast.
This did make the site a bit more “generic looking” but that is also where my preferences are leading too. Complex sites are pretty to use but I wanted something easier to navigate and less confusing (a frequent complaint). It also meant I got rid of those fancy buttons with the identifiers on the left and the various keywords on the right in favor of something like:
- Flight of the Scions (0047-00) → Kanéko • Novel (129k)
- Sand and Ash (0100-01) → Rutejìmo • Novel (78k)
- Sand and Blood (0100-00) → Rutejìmo • Novel (69k)
- Sand and Bone (0100-02) → Rutejìmo • Novel (82k)
On the other hand, as I integrate genres and other information, the bullet list version will scale much easier and I won't struggle to layout it out in neat columns. (You can also see I integrated word counts into the listings, which is new).
The migration went surprisingly easy. I was originally planning on holding off fedran.com until the end, because it is my “flagship” and most complicated site, but the various styles and concepts that I was working with were too different as long as I didn't try to integrate the custom calendar or build up the time line (two features that were removed but will come back eventually). The idea for multiple category lists came from the MediaWiki version of the site. I change the format how plugins were listed on the page, but that was just to work around MarkDig's and Zio's functionality. The only big problem with my wiki links which I originally had a Markdown links with no paths such as
[Rutejìmo]() but eventually wrote a proper MarkDig extension so I could say
[[Rutejìmo]] instead and fit with better conventions.
The biggest thing was the 80+ Git repositories. I had already decided to move the retrieval out of the Nitride process (as opposed to Gatsby trying to do everything), so I had those prepared in a shell script called before building. And I had already tried out some ideas when integrating my garden where a Nitride pipeline looped through the projects and called a builder on each one before gathering all the results into a single pipeline.
var entities = this.fileSystem .EnumerateItems("/fedran/sources", SearchOption.TopDirectoryOnly) .OrderBy(a => a.Path.ToString()) .SelectMany(this.CreateProject) .ToList();
Being able to set the “/” of a project to the input files is a great feature of Zio and I use it for most projects that need to view a directory structure without worrying about where that directory is located.
Overall, it took two weeks.
There are two really cool features that I'm proud of. The first is that dead links (e.g., pages I haven't written) are not automatically turned into spans with a class. That means if a link is there, it will go to a page as opposed to having so many be missing. I think this will improve the experience a lot while still giving me the hooks to fill in the pages and eventually aim for a 100% coverage of pages.
The other related to the Fedran's POV coloring scheme. Every character has a different color associated with them. The entire idea was that you could identify the series by the primary colors in the cover. Well, as part of the rewrite, I switched from SASS variables to CSS variables which meant I could inject a POV-specific stylesheet on the pages so now the POV charcters pages have the same color scheme as their covers, such as Sand and Blood, Rutejìmo, Flight of the Scions, and Allegro.
It's a little touch but I love how the colors change based on the page. And it covers both the POV charcter's entry and all of their sources.
One of the other reasons I wanted to migrate to Nitride was because I wanted to also generate Gemtext pages and create a Gemini pod. This is a bit of a “silly” project since I know most readers aren't going to ever be on Gemini, but the “small network” is nice and I like sticking my work out where outliers might find it.
Because I wrote Nitride with Gemini in mind and had already done this site, it ended up only being a few days to create something I thought was pleasing and to push it out as a pod. It was nice as things I've been working on for over a year just fell into place.
There are a lot of next steps when it comes to that site. I still seem to be struggling to write and programming is a nice distraction, but I really want to get my time line back, which requires me to port my custom calendar (MfGames Culture) code to C# and get the “what is every chapter or scene where this character participated in or was referenced from”.
Then, start to fill out the pages since I really should write up Flight of the Scions in the site.