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.
Phoenix is the first startup/product of my Fucking Launch challenge.
Let’s examine the Phoenix architecture.
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.
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:
- I want to learn React/React Native.
- I need a SPA (Single Page Application).
- 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.
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.
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.
Mixpanel is incredibly useful for tracking custom events on my app such as user actions and info based on their behaviour.
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!
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.
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.
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.
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.
I code on my Macbook Pro and MacVim, the best text editor out there!
Sketches and brainstorming
It all started with this:
And resulted as: