My next side project requires that I learn how to properly manage a user database and Stripe subscriptions. As a front-end dev, I’ve found ways to work around my ignorance so far, but I have no experience with any of the back-end concepts (firebase, node, webhooks, etc) that crop up when I’m googling about how to do this.
My question is: where would you direct someone that needs to learn just enough back-end skills to build an MVP with paid subscriptions?
hey Nathan. I'm the lead back-end dev for a company which uses a subscription based model.
I have been dealing with Stripe's API and Webhooks since 1.5 years now: Subscriptions and plans, Cancellations, Refunds, Credit Card management, Discount Coupons, taxation, etc.
If you want, you can shoot me an email at gabolecointere21@gmail.com and I can advise you for free through email or phone calls. I'm always willing to know and help people working on cool stuff.
Seems like you will need a back end framework of choice. as a front end dev you must be confortable with javascript. Although, getting started with node.js and its most popular framework: express.js is a pain for all the different packages you need to install and configure. That's why I suggest Adonis.js https://adonisjs.com/ it's an MVC Framework for node, similar to Laravel in PHP and Rails for Ruby, which takes care of all the set up for us and allows us to get up and running quickly.
Cheers, Gabriel Lecontere
Thanks, that's very generous!
Nathan,
There are a plethora of tutorials available on the web, however the majority of these deal with older versions of the Stripe API, making them obsolete.
I highly reccommend simply diving in, creating a rails app locally, then making test API calls to Stripe to get a feel for things.
The Stripe docs are very helpful, as is the API reference.
https://stripe.com/docs/development
Another resource you might check out is GoRails. http://gorails.com
Try not to get wrapped up in firebase, node, react, vue, or any of those things that over-complicate an MVP.
Good luck
Thanks for your advice. I've never really looked into Rails before. From my point of view already immersed in front-end libraries, that feels more intimidating, but I'll look into it.
One thing I can say is that after 3 years of working with Node, and 3 weeks of going through the Rails Tutorial and messing around, I was already more productive with Rails than Node/Express.
IMO, a lot of companies moved from Ruby to Node five years ago for scaling reasons but scaling is the last thing an indie should sacrifice productivity for.
If you have time its always best to just read documentation and slowly chug along. In my experience you will learn the most by hitting pain points along the process. Or you can pick up a class on udemy for 9 bucks and just code your project while they are coding the instructional project.
Thanks for your advice. That's how I've made it this far, but trying to learn a little back-end code feels so much more obtuse for me.
IMO, back-end documentation feels like it's written for people already familiar with the topic at hand and just need to learn the differences to implement a particular library/framework/service.
I'd separate the two concerns.
Figure out the backend choices. The Stripe subscription functionality is easy to add on afterward.
Email me and let's video chat. I'll show you exactly how it looks so you have a clear picture of exactly how simple Stripe Billing is to add onto a website.
In my case, I'm using Django as my framework of choice and while there are old packages for Stripe, I couldn't find any good ones for the newer Stripe Billing (the subscriptions functionality).
In the end, I realized that I don't need the bells and whistles, just the start and stop functionality. For example, I configured Stripe to email the customer their invoice and receipt every month, so that I don't have to have the typical "Invoices" screen right from the start. I'll add it at some point, just not now.
I quickly created a few simple pages to implement those two actions. Anything else can be done manually for now, and that's the key. For example, customer wants to change plans? No one has asked yet, but I'll handle it manually the first time or two. After a few times, I'll bake it into the software.
Some of these Stripe packages try to sync Stripe data to your own database, which creates a whole lot of complication. Skip that.
I learned how to use stripe by following the wes bos advanced react course. It shows you what you need but the final app is not completely production ready. I will be implementing stripe into my site doing what he does.
thanks for the tip. I bought his beginner's course, but then I started doing a lot more vue.js since then.
You actually don't need to know any backend to complete this. Depending on your knowledge of frontend, you may do everything with React/Angular/Vue/your library of choice, or just use static HTML pages with JS for API calls to firebase. Firebase, as other google products, has very extensive documentation on everything. For example, authentication in Firebase can be done in 10 lines of code (here's a link for example https://firebase.google.com/docs/auth/web/password-auth). Just dive in an create a test app. You'll fail first couple of times, and realise what you could have done better each time. Trial and error. Stop reading tutorials without doing it yourself.
Thanks this is probably the kick in the pants I needed.
Hey Nathan! Im also going through a similar process. I don't have any expert advice, but I thought I'd share my process so far.
I wanted to learn the important parts to launch a product, not jump into a new coding language. I decided to only worry about node.js because I'm comfortable with javascript.
There are tons of resources for node, this series was a good starting point for me https://www.youtube.com/watch?v=w-7RQ46RgxU
I've avoided GraphQL for now even though I really like the idea, learning to build simple REST APIs is more important. I'm trying to only use a few npm packages and really know what's going on. Every time I've tried to use a more sophisticated package or set of tools it has been a waste of time.
Coming from front end I decided on mongoDB (using Atlas ) because it's easy to get started with and the notation is similar to javascript. Again, I wanted to reduce context switching.
With a node.js app and a database, you can use stripe as just another well-documented API. The stripe docs are really well written, integrating payments may end up being the easy part.
Thanks for the advice.
If you are familiar with python, Flask is a very simple mini framework that can get you up and running very quickly. It is also a good way to learn basic backend concepts. Flask-SQLalchemy is a good ORM for setting up and managing your DB. Flask-wtforms is a good framework for taking user input and handling CSRF. You can deploy this on heroku quite easily and stripe integration is also very easy. The docs for all these are also pretty good
At the simplest level, you:
Out of curiosity...how does Flask compare to Django?
The most astute comment I read about that recently was that Flask starts off well but as you go about building your website/webapp, you'll need more and more functionality and you'll put together a messy patchwork, whereas Django would have given you all that functionality out of the box and in a clean way.
You'll add it in or just code it yourself (cause why research existing packages, right?) and you'll create a nice big mess little by little. Everything that you'll be randomly patching onto the original nugget, Django gives you out of the box.
While you're semi-randomly glueing all the pieces together, lots of people spent a lot of time to carefully make those choices for the designing of Django.
From a marketing point of view, compare the main message from their landing pages:
Django: "Django makes it easier to build better Web apps more quickly and with less code."
Flask: "Flask is a Python web development framework based on the Werkzeug, Jinja, MarkupSafe and itsdangerous pallets libraries." ... "Flask is fun ... And easy to set up."
For a bonus chuckle, their other website says, "Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions."
Can you specify which language/framework you are interested in?
If it happens to be Python, welcome to our SaaS base app! It's the open source project with paid features but all the code is available free on Github https://github.com/CaravelKit/saas-base.
You can study it and see how we implemented many backend features including database and Stripe (btw if you decide to use our platform you don't need to think much about them :)
I'm not really familar with python, but that looks cool!
Exactly what BudiBase is for. Check it out.
Looks interesting!
This comment was deleted 7 years ago
I'm really looking forward to this. Saw a comment from you on another post too. Wish IH had a way to bookmark comments.
This comment was deleted 7 years ago
Thanks, I'll keep an eye out for that. For a community that's all about profitable businesses, I'm surprised I'm not tripping over explainer for building your own paid membership site from sctracth.
This comment was deleted 7 years ago