Cyphraium, an effort of overengineering that came true

Written by Ulises Avila in general at 22 April 2022

Introduction

Have you ever had The Idea?

That idea that will grow into a big successful business? You meditate on it, and after some time you manage to control your excitement over it so you can think about the pros and cons.

Suddenly, you are ready to start your idea in motion. But that's the tricky part, an idea is just that, an idea. You still lack execution.

The idea is just a newsletter, a newsletter about crypto, after all, you like reading news about it, so you want to share them with a possible audience similar to you.

So, what are you going to do? There is Revue, you can just open it by linking your Twitter account.

But you do not want to link your small audience in your account to this exact topic.

There is also the idea of just giving away a Google Form to collect emails and send them manually to the newsletter. But that is too raw. And absolutely reject the idea of managing a newsletter that way.

Another option is using Email Delivery Services. The first names you remember are Sendgrid, Mailchimp, and Mailgun. And at this point, you remember that some of them offer email templating services and marketing automation so I can deal with my newsletter. But you still feel that you want a little bit of control in the lifecycle of creating and delivering the newsletter.

You start designing it. It is just a simple Rest API that schedules future newsletters, sends them at the right time, and triggers the building of a website if You decide to have it too.

You could build it in a matter of hours using your skills. A little bit of Nodejs, Sequelize for connecting to the database and the npm package of the chosen email service.

This is where things start to complicate, even though I can agree that things got more difficult the moment You decided to back this up with an Api.

In your defense. You want to have an organized place where You can store your newsletters. This points you to choose Sqlite for this purpose. You have a file where the data resides and if a problem arises You just need to move it around.

After this, comes the question. Is a front website needed? You decide that you want it, you could have a newsletter that only sends emails, but you like the idea of having a public reservoir for the newsletter.

So it is decided, and you choose Gatsby for it, many will question you as fast as a bullet asking you why you did not choose Next.js, but you know it, because, at least at the moment you met Next.js and you understood that it also can be used for generating Static Sites, there wasn't a simple way to deal with simple things like ordering content without hitting a server that does for you. And the most important thing is that you do not want to deal with the complexity of learning another tool that at this moment you do not know if this can satisfy your necessity.

Then, you start to look for the Api of Netlify to see how you can trigger a rebuild for the moment an issue goes live. This is because you know how heavy is to do it in a small server and then send it to the production place.

And it is easier than thought. Netlify has something called Build Hooks that are just private URLs that you just need to make a post request to and the build will trigger.

But now comes the hardest part. What server tech are you going to choose? One of the purposes of managing the content with a self-made Rest Api, is just to practice the process of building it, and you also want to start to use Elixir, so it is settled. The backend is done in Phoenix framework.

You choose Mailchimp because it feels like the perfect compromise between all the researched options.

And then the server is done, with some problems of course, after all, everything that you can do in a Javascript environment is not something that you know right away in Elixir. But the learnings are welcome. Now you can do almost everything you know about Rest Apis in Elixir. The server publishes the newsletter, triggers a rebuild of a frontend, and even it has Xml feeds. You can even schedule content to be published on future dates.

You feel great, this is where the adventure of growing starts.

If you liked this reading you are free to check the resulting website at https://cyphraium.com/newsletter, and if you also like crypto as much as I like, I invite you to subscribe to it.