Welcome to the weekly update about my project, Booklet! It’s not ready for use yet. But, here I’m documenting the journey of building the application.
What's Booklet?
Booklet is a better Google Groups. It’s made for communities of people to have long-form, asynchronous discussions with each other. It’s inspired by Google Groups, Facebook Groups, and Whatsapp groups. The app sends a daily email summary about each group and has a forum and member directory.
What have I accomplished this week?
You can add and verify email addresses to your account. I chose Postmark as my email sending service because, in addition to outbound email-sending tools, it offers inbound email management. So, this would let me implement a feature such as “Email hq@bookl.et to create a new post.”
I set up a content delivery network. This replicates static files (such as images) around the world so that the website loads much faster. So, if you live in NYC - dynamic content like login will still travel all the way to Oregon, where the server and database live. But, things that don’t change - like the images on the homepage - will get served by a service in New York instead. (The inventor of the Content Delivery Network had a short, fascinating life - he was a commando turned computer scientist who became a billionaire then died fighting terrorists on 9/11).
I added the concept of “admin” permissions to our user model. Admin functionality is part of pretty much every software that you use. It’s how companies manage basic customer support tasks - such as changing email addresses, blocking spammers, and analyzing usage. So, I added a way to keep track of who’s an admin and who is not!
I added an admin panel. This software lets admins carry out those customer support tasks - such as searching, adding, or removing users. I built this using Administrate. As the app grows, I’ll add more admin-specific functionality here - such as being able to rename groups or issue refunds.
I added visitor analytics. “How did people find my website” and “how many people are using my website” are pretty basic questions an application should be able to answer. I implemented basic tracking using Ahoy. With Booklet, I’m trying to avoid using unnecessary external tools - because I don’t like sending people’s private data to third parties. Ahoy is nice because it keeps all of the data in my database (versus, for instance, Google Analytics - which sends all of your data to Google).
I added a business intelligence tool that lets admins run queries or build graphs of data- such as “how many people signed up each day”. I did this using Blazer, another self-hosted tool.
So - this week was a lot of plumbing that doesn’t improve the user experience too drastically.
What's next?
I still have a little bit of plumbing to do. Specifically, I’m setting up asynchronous jobs using the database Redis. This will allow the application to handle tasks such as email sending using a queue. The framework I’m using (Rails) has this built-in - I just need to set up some configurations.
Next, I’m adding the ability to create a new community. You’ll specify its name, pick its address (such as bookl.et/puppies or bookl.et/hq), and whether it should be public or private. I’m looking at a tool called Wicked to see if it can help here.
If there’s time, I’d like to investigate Hotwire. This is a software package that introduces lots of little enhancements to the user experience that make it feel smoother. It also allows some real-time capabilities without needing to reload the page.
How you can help ⬇️
Take a look at the website so far (bookl.et) and let me know what feedback you have! All you can do is sign up, confirm a phone, and confirm an email address right now.
Thanks 🙏