I'm working on my first Indie Hack Journal-ease.com, and I think I have the fundamentals of my idea implemented.
I'm using Angular with Firebase, and I can't say enough about the utility of each.
However, I'm now working on the gritty details like user registration, password reset, credit card processing, data security, etc. These seem to be common capabilities that every project needs, yet, it still feels like this is too hard.
Any pointers on how to know what is necessary and where to find good examples, templates, or guidance?
What do you use?
As for guidance check auth0 blogs for all things related to authentication.
casbin is good for authorization and is available in multiple languages.
for email you can stick to smtp lib in your framework and get smtp relay from any of the service providers that way you don't have to deal with api of every individual email provider and you can defer that decision later.
For billing stick to stripe for now they have good documentation.
data security and billing both would depend on your business model and i can't recommend anything generic.
I have my own home grown framework i guess after few apps everyone has it.
Auth0 blogs have some good tips, but also a lot of FUD. They make it sound like building your own auth is as risky as building your own credit card payment gateway.
than they have succeded in their job :-) however we are only interested in their frontend flow and policies which we can copy actual implementation would be done by us in the backend which is not disclosed by them anyway.
Yeah, the "boilerplate" stuff might seem boring, but it is critical. These are the basic flows that users know and expect, and additionally most are also security-relevant, so better get them right.
My only recommendation is to not re-invent the wheel, but try to re-use established and very stable API/libraries/frameworks. This saves to much time and money in the long run.
Good point!
I'm using Angular, Material, Firebase and can build what I need. But, I don't feel like I know exactly what the workflows should be for each use case. Or all of the typical use cases. For example: email login has register, verify email, login, change password... am I missing anything?
Searching reveals the individual pieces, but not the concept as a whole and implementing feels like re-inventing for sure.
Are there any good resource describing these important workflows and the components for each?
Good point. I don't know of any resource that lists the best practice must-haves in one place. Maybe that's a potential indiehacker business?
Actually, that sounds like fun. Start a small business generating a complete web application template with common security pathways and best practices. Start with the most popular technologies, and platforms, then maybe get more esoteric as the library builds.
Based on what I know now, I'd pay hundress for that jumpstart.
I have many ideas for other projects in the future and will need to go through this again. In that case, I will start with my current project and pull out all the project-specific cruft to generate a template. I was considering making it open source; My thinking was to share with a community and get help honing the details.
There are already a few sites that can help with this, e.g. https://userflowhub.com/flows/search/ , which randomly showed up in my twitter feed today.
Interesting site, thanks for that, but not quite what I'm looking for. I'm looking for something like a workflow chart describing actual pages and user flow. I penciling one up right now.
Next time you build a SaaS, focus first on the nitty-gritty details, such as
Do all that stuff upfront to get you to the point where you’re iterating on your core product and you have the flexibility to launch the moment you feel the product is ready.
Thanks, this is an excellent yet scary list. I did come out of the gate with auth, brought in logging once there was enough meat in the project, and am working on billing now. I don't know what "transactional email" means, if that has to do with email validation and notifications etc., that is next on my backlog.
I started using GitHub Issues and Project which is kind of cool and plan to use ChangeMap to assist with building in public.
An aside: I noticed that adding each new capability forces some sort of reorganization. I'm trying to decide if this would have been better up front or if having the application implementation in place is revealing better structure.
Transactional email is simply the type of email that your SaaS back-end sends to its users individually. It’s not the same as marketing emails, which are typically blasted to a mailing list. I’m using Amazon SES.
Yes, the list is a bit daunting, but there’s no way around it, so you just have to do it and you might as well get it out the way early, because it’s your foundation and sets you up for success.
That's what I've done. Laravel + filament admin + Cashier + packages for (as you say), auth, logging, etc.
It took a while to get to the point I was happy, but then it took me 17 days (mainly evenings and lunchtimes snatched between the day job and family) to create https://sponsorshq.com
I'm now on a program of only building out SAAS projects that can be built and open for use in 2 weeks, and I can only do that because all that boilerplate stuff is done.
To make that feasible, what I've also done is build in a number of hooks for the boilerplate SAAS framework to call out to a PHP package which contains the site-specific stuff (eg render menu items and associated pages, run DB migration scripts, run specific background jobs etc - all of which is much easier with Laravel than some other frameworks I've used).
That way I can keep tweaking the framework, improving it with each app I produce. For example, for Sponsors HQ I added a media library which wasn't in the original framework, but is now there if I need it in future ready to use.
Next app will include push notifications from the server, again I'll put that in the framework for repeat use in future.
It's taken a bit of time to get that framework in place because I created it myself, but it's well worth it.
Yeah I know what you mean, it's ridiculous how long it can take to implement a simple feature like a "forgotten password flow". Personally I think you should just sit down and implement them.
It's annoying, but I don't think anything out there will just drop in and do it for you.
I am a developer by trade and still agree with your comment. However, I've struggled with this for years. I've started several project only to get caught up in the muck-and-mire of the common requirements only to lose interest before getting anywhere interesting. Tim Ferriss asks "What would this look like if it were easy?" My answer: Not this :\
It was the MVP concept that led me in the opposite direction of building the app first, then adding administration once things are working. The MVP concept works as prescribed; working on the cool stuff first allows proof of concept and the joy of building. The problem is, the last 10% takes 90% of the time :)
Lean into Firebase auth! And the Stripe SDK. Abstract all that stuff away from you.
Those core, low-level abstractions, while sometimes expensive at scale, allows devs to focus on creating business value instead of infrastructure.
Yes! Firebase is amazing and the key to me attempting a public facing project. Security and scaling are topics I have little experience or interest in deep exploration -- This is a side project I'm doing in my spare time.
Firebase abstracts these concepts perfectly; in such a way that promotes modern techniques and good coding habits. Working with it is a joy! Simple, but not easy.