Dissecting Uju

Experienced Product Engineer with a diverse background spanning fintech, medtech, and corporate sectors. Proficient in Ruby, Ruby on Rails, JavaScript, Node.js, and TypeScript, HTML & CSS.
Passionate about leveraging technology to solve complex problems and create exceptional user experiences. Skilled in driving product development from ideation to launch and beyond, with a focus on delivering value and driving growth.
Uju is a Ruby on Rails app that incorporates popular features of any application like payments, mailing, background processing etc. It might be useful to dissect each of the pieces that make this app work, and then in other posts go into depth about how I built each part. Maybe each can be a series ๐คท๐พโโ๏ธ. At this point, I'm winging this blog. I don't know how it's going to shape up, but I know I need to start. Just like starting a project just needs you to start, along the way, a shape starts to take place. This has been true for Uju as well.
What is Uju? It is a customer retention platform that is designed to help businesses manage whatever business processes they want digitized, like payment collection, bookings, selling stuff and the like. It started as a rewards platform, and as it has evolved, it has incorporated all these other things, with rewards baked in as well. Everything has been an experiment in learning and some of those things became the patterns used in the app. I've been the sole developer for 2 years on this project, so anything that allows me to use less cognitive power is a plus.
App hosting/deployments
After Heroku made that announcement that the free tier was becoming paid, I decided I needed a change, even though I was already a paying customer in any case. I like railway because like Uju, they're figuring things out and It's been interesting to be part of their journey. I don't think I've ever been as interested in a changelog as much as this one. Most of the things they are releasing are problems I've faced, so watching and "feeling" the progress is fun.
Mail delivery
Postmark is popular in the rails world from what I can gather. It's very easy to use and integrate into your app. I made the decision that I would not have any of my mail templates in the main app. All the templates I use are ones I created in Postmark, and all I do is use the API to send the necessary data to the specific template for Postmark to handle and deliver. This is good for at least 2 reasons:
I don't have any complex mail templates in the app, because those get ugly, really fast.
Styling mailers is still a bit of a dog show and largely table-based. It's the way we used to develop websites in the early days. So passing that responsibility to a service that specializes in it lessens your load, and also ensures that all devices will receive an email that doesn't break i.e. is compatible with their device.
A bonus reason is, should I feel the need to use a new service, I could do a gradual migration. One email at a time, using both services in parallel.
UI
Woodstock UI ( named after my cat ) is ui kit I built (not specifically for this app) as part of general learning. Another decision I made was that I wouldn't have any css in the app, and rather have a separate app. Again it works for at least 2 reasons:
I'm not littering the main app with CSS.
A separate app for the UI kit makes it reusable across different projects.
I'm forced to make better decisions around the styles instead of having the freedom to quickly inline something.
CI/CD
GitHub Actions:
Using GH Actions allows me to keep my CI close to the code so I'm not having to switch apps to check the results of my CI.
GitHub Projects:
Using GH Projects is also a way to keep the issues close to the code. It's also lightweight as opposed to something like Jira. You can have your stories in iterations like sprints in Jira.
Social Media
Using the free tier of Buffer allows me to automate posts to 3 platforms. It's a very useful tool for a team with limited resources.
A super easy tool to create social media posts. I can't say more about how simple it is to create clean-looking posts for your social media.
By far the best tool I've used to create presentable mockups of the app. And it's free. An app like that won't stay free for long. If it does then wow. It's an amazing tool to have by your side.
Analytics
Umami
Umami is an open-source, privacy-focused alternative to Google Analytics. It is very easy to set up on Railway and makes sure that you're the only one who has the tracked user data. So you can guarantee that the information isn't being used by third parties because you own the database. If you care about user privacy, then this is a good tool to use.
Documentation
Gitbook seems to be the go-to for easy-to-manage documentation. There are templates for the various types of documentation you want to do. You can also sync it with your GitHub project, which again, keeps it close to the code.
At a high level, these are the pieces that make up Uju as a product and can be used by anyone to build any sort of product. You may not need all the tools, but these tools can help you build a well-rounded product for cheap.
