How I built Phoenix 🔥

As you may already know, Phoenix is a web application that enables you to send a last message to the people you love, when you die.

Read more about Phoenix here.

Phoenix is the first startup/product of my Fucking Launch challenge.

Let’s examine the Phoenix architecture.

Phoenix architecture

Backend

For the backend, I use Ruby on Rails.

RoR is my favourite web framework for creating applications, I love it, it’s pretty awesome and I can start coding in just a few minutes. I’m a big fan of Rails and the community is amazing.

Frontend

I almost never use frontend frameworks, I’m kind of js framework agnostic (same as DHH) when it comes to developing web apps that I need to just get done fast, since adding a js frontend framework may be somewhat complex and it’s not really needed depending on the application you are building, in my case, Phoenix.

In some of my upcoming products I’m going to use React, mainly because of three things:

  1. I want to learn React/React Native.
  2. I need a SPA (Single Page Application).
  3. React is relatively small compared to other solutions since it is a library nor a full framework like Angular or Ember, and I just care about the user interface, nothing else.

Phoenix is fast because I’m using Turbolinks, but I really want to dive into React and React Native, I think they’re going to be a very demanding technology in the following years and I need to stay updated and keep growing my coding skill-set.

Server

I use Heroku on almost everything I build, I don’t want to mess around with devOps stuff, I want to get shit done, fast, and Heroku does that and handles all for me.

I run some dynos on my Phoenix Heroku server, as well as a Postgresql database.

I also have a worker dyno that works with Redis and Sidekiq for background processing such as email/sms sending and tracking info.

For my awesome and powerful robots I built I use the heroku-scheduler add-on, since heroku can’t connect directly with cron jobs in Rails I need the Heroku Scheduler add-on.

Here is part of my robots code, which I call them, my reapers.

My reaper bots are in charge of marking dead users (check who’s dead or alive) and fire the correspondent letters for those users, as well as checking who’s dying and send them sms/email reminders for them to check-in on time, and much more background stuff.

Analytics

For analytics and marketing strategies I use Mixpanel and Google Analytics.

Mixpanel is incredibly useful for tracking custom events on my app such as user actions and info based on their behaviour.

Mixpanel User Activity Feed

My favourite features of Mixpanel are segmentation, user activity and funnels. Give it a try!

Google Analytics is essential as well, it helped me a lot when I launched to Product Hunt!

Google Analytics Real Time Overview

Thanks to Google Analytics I know from where are my visitors coming (UTM tracking) and from which part of the world are they accessing Phoenix.

Monitoring

For monitoring my app performance I use Skylight.

Skylight is a monitoring tool for Rails apps, the design and the weekly reports are pretty damn good. I highly recommend it.

Emails/SMS

Sending emails is the most important thing for Phoenix, since that’s the core of Phoenix (sending messages to the people you love when you die) I needed the best solution out there, and then I found Postmark.

https://postmarkapp.com/

Postmark is incredibly powerful at sending emails, the best email delivery provider I’ve found so far, I’ve tried Sendgrid, Mandrill, Mailgun and SparkPost and none of them can beat Postmark.

What really makes Postmark so good is that they only focuses on transactional email, zero marketing, and that increases their deliverability rate almost to a perfect score, thus the value of Postmark, so I know I’ll never miss even a single email! Read more about that here.

It is the most expensive service out there though, but I really want the best for my users, because I want to deliver all the messages they write and get them into their people’s inbox at the speed of light!

For SMS reminders and number verifications I use Nexmo, it is an alternative to Twilio, and so far it’s very good!

Payments and security

For payments I use Conekta, an very good alternative to Stripe.

Conekta has been a joy to work with, the best alternative to Stripe I’ve found so far, and the people behind Conekta are very open and friendly. They got an excellent API documentation as well, so it is a no brainer to get up and running in a matter of minutes.

Conekta is secure and realiable, it uses the best security and encryption standards out there, SSL by default on all the payments, and Phoenix uses another SSL layer on its own, so super duper secure in there. ;)

Fonts and other stuff

The fonts I use are Proxima Nova, Proxima Nova Soft and Industry.

I use Typekit. Fonts.com are really good as well, more expensive but it got many more fonts compared to Typekit.

For my privacy policies I always use Iubenda.

For fancy animations I use and love AnimateCSS.

I buy all my domains at Namecheap.

Github is my favourite code versioning and source code management tool.

For customer support I use Twitter along with the awesome Respond new Buffer’s product.

I code on my Macbook Pro and MacVim, the best text editor out there!

Sketches and brainstorming

It all started with this:

Phoenix sketches

Final product

And resulted as:

Phoenix Dashboard (Mm… There’s a bug I need to catch 😎)
Phoenix Letters (Sending the love 💕)
Phoenix Check-In (48 weeks for my next check-in! ⏳)

Liked the story?

Recommend it! 💖

Follow my adventures at Fucking Launch 🔥

Follow me on Twitter and Facebook 😀

Get to know me 👋🏼

Like what you read? Give Enrique Benitez 🎩 a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.