Parker Selbert talks about how he handles the licensing site for his Oban project using Phoenix and Elixir. It's hosted on Heroku.

In this episode of Running in Production, Parker Selbert talks about building
the licensing site for his Oban project using Phoenix and Elixir. It’s been up
and running since March 2019 on Heroku.

Parker talks about using Live View for the demo page, how access control is
handled with Hex’s private packages, a bunch of libraries he uses, hand rolling
his Stripe implementation, building a custom admin with custom analytics and
more.

Topics Include

4:48 – Motivation for using Phoenix and Elixir to build the licensing server
7:36 – Processing millions of background jobs a day with PostgreSQL as a queue back-end
11:55 – Live View powers the demo page and using prefixed jobs to keep things separate
16:43 – It’s almost always worth using a dedicated background tool even in Elixir
18:14 – Keeping Live View and Phoenix updated to their latest stable versions
22:26 – How licensing for the pro version works at the Hex package level
27:03 – Docker is being used in production but not development
31:38 – Challenges of getting Phoenix to reload files outside of the main code base
34:04 – A bunch of useful libraries that were used to help build the pro site
43:00 – Building out a custom admin to help manage customers, plus custom analytics
46:41 – About $100 a month to host everything on Heroku (2 Dynos + Postgres)
50:47 – The deployment process from development to production
56:21 – Backing up the database is handled very nicely by Heroku
1:00:03 – Best tips? Try to keep as much as you can open and contributable by others
1:00:34 – Check out Parker on Twitter and GitHub, his wife is on GitHub too

Links

📄 References

https://hex.pm/docs/private
https://asdf-vm.com/#/
https://hexdocs.pm/plug/Plug.BasicAuth.html

⚙️ Tech Stack









































































































































phoenix →









































































































































































































































































































































































































































































elixir →





























































































































































































































































































































































































































docker →

















































































































































































































































































































































































































































































































































































































































































































































































































































































































































github-actions →



































































































































































heroku →





















































































































































































































































































































































































































































































































































































































honeybadger →































































































































































































































































































































































































































































































































































































































postgres →















































































































































































































































































































































































































































sendgrid →







































































































































































































































































































































































































































































































stripe →









































































































































































































































































































































































tailwindcss →





















































































































































































































































🛠 Libraries Used

https://github.com/sorentwo/oban
https://github.com/phoenixframework/phoenix_live_view
https://github.com/elixirs/faker
https://github.com/falood/exsync
https://github.com/thoughtbot/bamboo
https://github.com/hexpm/hex_core
https://github.com/boydm/phoenix_markdown

Support the Show

This episode does not have a sponsor and this podcast is a labor of love. If
you want to support the show, the best way to do it is to purchase one of my
courses or suggest one to a friend.


Dive into Docker is a video course that takes you from not knowing what Docker is
to being able to confidently use Docker and Docker Compose for your own apps.
Long gone are the days of "but it works on my machine!". A bunch of follow
along labs are included.


Build a SAAS App with Flask is a video course where we build a real
world SAAS app that accepts payments, has a custom admin, includes high test
coverage and goes over how to implement and apply 50+ common web app features.
There's over 20+ hours of video.

Twitter Mentions