Nidal Alhariri goes over building a CRM tool with Flask and Python. It's hosted on a few cloud providers such as AWS and Linode.

In this episode of Running in Production, Nidal Alhariri goes over building a
sales and CRM tool with Flask and Python. It’s hosted on a few cloud providers
such as AWS and Linode. It was created in mid-2019.

Nidal talks about using MongoDB, splitting tenants out with their own
individual servers, mixing in Vue where needed, using Ansible and he also drops
great advice around moving forward and shipping code without chasing perfection.

Topics Include

3:35 – Motivation for using Flask and Python
5:38 – Vue, MongoDB, Celery and other libraries / tools being used
8:28 – Dealing with a schemaless database
10:04 – It’s a monolithic app that uses Flask blueprints and dealing with permissions
14:58 – Each tenant / customer of the app gets their own virtual private server
17:24 – Vue is mixed in where needed, the app is not a dedicated API only back-end
22:29 – Parcel is being used to bundle assets and SASS is being used too
24:26 – Docker isn’t used yet but nginx + Let’s Encrypt and Ansible is being used
27:23 – Multiple hosting providers are used (AWS, Linode) with varied server specs
30:03 – uwsgi is being used mainly due to certain app features using websockets
32:39 – Ubuntu LTS is happily being used along with configuring the servers with Ansible
36:05 – The deploy process from development to production
41:16 – Environment variables for secrets and rate limiting with nginx
45:18 – Handling database backups for MongoDB
47:28 – Getting notified of system health issues with alarms and alerts
51:00 – Best tips? Keep moving forward because failure is always better than regret
53:50 – Nidal is on Twitter, GitHub and also has an agency at https://www.level09.com/

Links

📄 References

https://mitogen.networkgenomics.com/ansible_detailed.html

⚙️ Tech Stack











































































































































































flask →

















































































































































































































































































































































































python →









































































































































































































































































































































































































































































































































































































































vue →





























































































































































































































































































































































































ansible →











































































































































































































































































































































































































































aws →













































































































































































































































































































































































































































































































































cloudflare →











































































































































































































































































































































































































































































































































































































































































































lets-encrypt →









































































































































































































































































































































































































































































































































































































































































linode →











































mongodb →





























































































































































































































































































































































































































































































































































































































































































































































































































































nginx →















































































































































































































































































































































































































































































parcel →















































































































































































































































































































































































































































































































































































































redis →

































































































































systemd →











































































































































































































































































































































































































































































































































































































































































































































































































































































ubuntu →





















uptime-robot →





















































































































































































































































































































































































































































































































































































































































































































































































































































































































websockets →







































































🛠 Libraries Used

https://github.com/beautify-web/js-beautify
https://github.com/xhtml2pdf/xhtml2pdf
https://github.com/MongoEngine/mongoengine
https://github.com/celery/celery
https://github.com/sh4nks/flask-caching
https://github.com/unbit/uwsgi
https://github.com/zeekay/flask-uwsgi-websocket

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