Wikifiction.ai Case Study - Pt 3
Enhancing the stability of wikifiction.ai and exploring new product lines.
Table of Contents:
Introduction:
As the closed alpha phase began, my concern over users gaining access to the site grew. In addition, I felt compelled to diversify the platform’s offerings after reflecting on user feedback, including the lack of adoption. ?This feedback sparked the development of a children’s book generator, which brought with it another heavy dose of learning. Inspired by the new capabilities unlocked by building the children’s book generator, I initiated the development of a short story generator as well. These new offerings opened the door to potential new audiences but also spread me even thinner as a solo developer.
Challenges:
Continuing to develop the site without interrupting user activity was at the front of my mind going into this phase. I needed to separate dev and prod environments to minimize outages during development. I also needed to lower the barrier to entry, as users had to register for an account with an invitation code before accessing the site.
For the new offerings, I needed a way to output text and image content as PDFs as well as video files. These were both very enjoyable challenges as they were focused on new content being created as opposed to the month of building user accounts, logging, frontend, and legal concerns I’d just gone through.
Decisions:
There were only a couple decisions I needed to make during this phase. To lower the entry barrier for new users, I added a demo mode, allowing users to create a single-section article anonymously without registering for an account.
For the new offerings I needed to determine a way to build PDFs and output videos. Since I was using Python in my backend, I opted to use Python Imaging Library (PIL, aka Pillow) to manipulate and output PDFs, and FFMPEG to create and output video files.
Solutions:
The first major issue I needed to take care of was separating a development environment that I could use for testing without worrying about breaking my production environment. This required creating separate dev and prod environments for both the backend and the frontend. The implementation was slightly different for each, but essentially it boiled down to deploying duplicate environments to the frontend and to each backend script, and having variables set in these scripts that determine whether it is dev or prod. Any interactions between scripts or the frontend and backend get modified based on this variable. With this solution I am able to modify the same file for both dev and prod environments. I simply need to update the environment variable when deploying and deploy accurately to the intended environment. I don’t know how close or far from best practices this is, but it worked for me and was a simple implementation.
Next up was addressing the essentially non-existent adoption rate. I needed a way for users to at least try the site without registering for an account, so I used the same tactic as separating the dev and prod environments to build an alpha environment as well that did not require any user token. This environment bypassed checks for login and instead updated a DynamoDB table with the request’s IP address, disabling further creations from that IP address for 24 hours to prevent overuse. This demo mode was deployed to a separate subdomain.?
领英推荐
By this point the LLC was finalized and I was ready to work on some fun things after being bombarded by so many behind-the-scenes tasks. The first thing I wanted to do was start posting some social media content starting with Facebook and TikTok. The first post on Facebook (embedded below) was made on February 12th, and the first post on TikTok was made on February 13th.
This would eventually become a daily task that I’d need to better automate. As far as user feedback, one actionable suggestion I received was the idea to build children’s books using the same AI generation concept. I thought this was interesting and had a more direct path towards monetization, so I happily jumped over to start building a children’s book generator. After cleaning up some of my spaghetti code and learning to work with images and create PDF content, it took a little over a week to get a basic version of the children’s book up and running. ?A broken frontend that was just functional enough for testing was implemented a few days later. There were (and still are) many issues with it that prevent it from being released to the public, but primarily the issues were consistency in character appearance in the images. To start down the path of fixing this issue I added Stable Diffusion as an alternative image generator model which helped somewhat with preventing text from appearing in the images, but still left a lot to be desired.
While exploring this new offering I realized how easy it would be to generate short stories in a TikTok format, so I started down that path as well. This time, instead of building PDFs I needed a solution to build and output videos. With ChatGPT’s help I was able to get FFMPEG working?with Lambda and built a functioning 4-part video series based on a prompt. Creating a video for a story meant I needed to include a few additional elements, namely a background video, background music, and text-to-speech. I found a website that offered royalty-free attribution-free music that I matched up with the emotional theme of the story. For background video, I opted to follow some trends I’d seen recently by recording my own Minecraft videos to give the user something to watch while listening. Capturing text-to-speech is done via AWS Polly, Amazon’s cloud offering for text-to-speech. The first of these series was posted to TikTok on March 25th (Part 1 Part 2 Part 3 Part 4).
New Tools Used:
Reflections:
Looking back on the project, I should have identified the concern regarding the separate dev and prod environments before the closed alpha release. This didn’t end up making a difference due to the low user engagement, but if I had to do it again, I certainly would have implemented that before ever releasing it to anyone beyond a close friend or family member to test.
During this phase I needed to bring back some enjoyment in the development cycle by working on new fun things. The previous month had been difficult with a focus on areas that were not particularly enjoyable. While shifting focus to less critical but morale-improving work is much easier in a solo endeavor like wikifiction.ai, I can see this applying to dev teams on corporate scales as well in a limited fashion to prevent burn-out. The renewed energy I had from working on these fun aspects, and the new technology in my toolkit after having built the children’s book generator and the short story generator, really opened a lot of doors for future possibilities.
Conclusion:
By the end of March 2024, the site was not only much more stable with the ability to develop without interrupting the production environment, but also expanded its product offerings. As with the previous phases, this period was marked by significant learning, and I was rested and ready to tackle the less enjoyable tasks that had been looming for a long time.
Next Article: wikifiction.ai case study - Part 4: Focus on Quality