May 8, 2019

Ask IH: What are the best resources for learning to build fully-fledged SaaS applications?

Colin Bethea @colinjbethea

Hey guys, Colin here. I'm proficient in HTML/CSS and Javascript/ES6 but am struggling with putting it all together in an entrepreneurial context. What are some solid resources for learning how to build fully-fledged web applications (with a focus on SaaS/business)?
Thanks in advance :)

  1. 7

    That is a bit of a broad question, but a very understandable one. I remember back when I was in college trying to build my first web app and startup. I had the same question. I think a lot of people do.

    One comment that comes to mind is that there are a lot of moving pieces in a real world web app, so there are a lot of things you'll have to learn.

    Another is that it will depend on the app you're building.

    • If you want your users to be able to save anything, you'll have to learn about databases and server side development.
    • If you want to have user accounts and auth, there's a lot of things you'll have to get right if you want passable security, and it's hard.
    • If you want to have real time updates without the user having to refresh (eg. sport scores or stock prices), you'll have to learn about web sockets.

    Knowing HTML, CSS and JS is great, but it is just the beginning. Here's an analogy that might make sense. Imagine that you learn the english language. That's great - you can express yourself - but can you write a novel? You have the foundation for writing a novel, but you still have to learn about what to write, and how to structure it.

    As for the focus on SaaS/business, the only thing that comes to mind as being particularly unique to that context is setting up billing and paywalling stuff.

    As for resources, one thing I'd recommend is learning a web framework (eg. Ruby on Rails, Django, Express, React, Vue, Angular, etc.). Web frameworks do a lot of the heavy lifting for you and provide you with a good foundation. I'd recommend starting off with ExpressJS coupled with a templating engine. I think server side rendering is a good place for a beginner to start as opposed to a front end framework like React. And as for server side frameworks, I think Express is good because you already know JavaScript. I don't like Rails for a beginner because there is so much magic going on and I think that it can make things very confusing.

    Anyway, one thing to do if you want resources is to google for ExpressJS tutorials, guides, and example apps. Learn how the framework works, and follow along some sample apps to get an idea of how it is used in practice.

    Another thing you could do is follow a more structured curriculum. There are lots of them out there, and they range from free (The Odin Project) to cheap (Udacity) to expensive (coding bootcamps). My take on this is that it is essential to have personal attention. You're going to get stuck a lot. If you have a person there to help you, your time spent being stuck will be more minutes/hours than hours/days/weeks, and that is insanely valuable. Paying for something like a bootcamp is one way to get that personal attention, but it's expensive and you don't actually get that much personal attention. The best thing is if you have a friend or family member who's really willing to be there for you. I wish I could recommend other approaches, but I don't really know of any. I think it's a huge unsolved problem. (Hm, maybe I'll attempt to solve it some time.)

    One thing I want to note is that it may be a better idea to invest a year or two in your skills before diving in to really building a startup. Personally, I wish I did back when I was getting started. Different people will have different opinions on this, but I think that holding off is probably a good idea. But if you are going to go for it, just know that there will be a lot of stumbling around for your first year or two (and beyond!). It happens to everyone. It will make building a business hard because you won't be able to iterate nearly as quickly. How much harder will depend on the complexity of the app you're building. But I know that my first app + startup was super simple, and I stumbled around a tremendous amount.

    Hopefully that is helpful. Let me know if you have any follow up questions :)

    1. 1

      Thanks for the advice, Adam - I especially like the novel analogy. I'll make sure to check out the resources you recommended!

  2. 2

    fullstackpython.com has helped me a lot in the same situation. It contains clear and concise descriptions of almost all the central concepts relevant to development, deployment and operation of applications. Of course, as the name suggests, it is partial to the python programming language, but even if that is not part of your stack it has a lot of valuable information still. Check out the "all topics" overview and I'm sure you will find something of interest.

    1. 1

      Awesome, I'll be sure to check it out! Thanks :)

  3. 2

    I am in the same boat as you are...i started with some knowledge of html and css. I started learning different frameworks and languages. My advice would be to start with an idea. Browse GitHub for something similar. If you find something close to what you are trying to implement. go ahead and learn that technology.

    For example, I wanted to build an app for a hackathon that required authentication.Upon searching google I found the hackathon-starter repository on Github. Read through the documentation and found out about Node.js and Express. I started learning about it from youtube. Upon further investigation found out about a package called passport that allows for oauth authentication. So basically I learned by building and exploring.

    1. 1

      This is a great idea - my current idea definitely has some similarities functionally to other existing applications so I'll be sure to scour GitHub.

  4. 2

    Hey Colin,

    Great question, albeit as others have said, quite broad. I had this burning question too, for many years. What I have come to realise through trying to build successful SaaS products is that you (i.e. yourself) is the greatest resource for learning how to do build a SaaS business.

    I am by no means an accomplished SaaS business(er?) as none of my SaaSs have really 'taken off' - but I can build them; fully featured too. I would also bet any amount of money on this statement to be true: "Build it, and they will not come" - in relation to SaaS of course. I would probably put building the actual SaaS app as around 10% of the effort, and the remaining 90% is getting people to use it.

    What is funny is that that 10% effort required to building it is difficult to do; but by no means impossible. If I can do it, anyone can. It just takes time.

    You need to know the ins and outs of basically everything if you want to build it yourself.

    Firstly, and most importantly, you will need to learn how to handle the back end side of things (back end and database that is). The backend is actually the heart of your SaaS, because when it comes down to it, all SaaS apps are basically CRUD applications with a bit of logic or analysis thrown in.

    SaaS apps need a number of things almost all by default, no matter what kind of SaaS you are trying to build:

    1. Hosting, such as Vultr (cheapest I've come across), Digital Ocean, AWS etc.
    2. Some proficiency in linux to manage your server ^
    3. Server software (e.g. Apache, Ngix, Node/Express) - and the ability to configure too!
    4. A Database (e.g. MariaDB) - can be on the same server to start, but might want to isolate if you see large growth
    5. Authentication (you should build this, keep it in house... and read up on best practices regarding security and storage - don't be a dingus)
    6. Back end layer (may also have an API segment here too)
    7. Of course your front end

    You may also want to look into GIT and code hosting (I use bitbucket personally, find it perfect). You can also look into CI/CD tools for automated deployment. The list goes on and on. Use email services such as mailgun for transactional email, this will almost guarantee email delivery.

    Anyway; your backend / API will drive your front end. It's up to you if you want to use front end / templating frameworks; or you could just roll your own too. You can literally do whatever you want. You don't have to use X or Y, just because they are popular. They may not fit the needs of your app.

    TL;DR: You have to actually just learn everything individually step by step. It's a long process. The best resource is you, and the best place to start is to just build something. I'd recommend to build something that already exists currently.

    It takes a long time to learn everything, but the best time to plant a tree was 30 years ago. The next best time is right now.

    1. 2

      Thanks for the advice Shane - I especially think seeing all of the basic components of a full application (ie: Auth + Backend) in one succint list is helpful for me! I also like the saying at the end :)

      1. 1

        No worries, happy to help. You can reach out any time if you have questions.

        I'd recommend just trying to build something like a Reddit board style thing. That way you can learn about the authentication side of things, email verification too, session management, as well as object ownership (like only the owner of a post can delete it), and comments too.

  5. 2

    I would caution you on trying to learn the many different technologies before actually building your SaaS business - there are so many different layers in a technology stack and each layer is constantly being updated. You will never run out of things to learn!

    What I would suggest is for you to first decide what your SaaS business is really about - what specific problem/pain point it is trying to solve and who your target market is. Ensure first that you have a solid business idea and a market with growth potential. *Only then do you decide on the technology stack you are going to pursue. Your technology stack should serve the needs of your business, not because it's "the best" programming language. There is no such thing.

    @adamzerner has done a good job of outlining the different layers of the technology stack you need to consider. And as he has also pointed out, there are many, many resources to learn about them - from books to online courses and even boot camps. Again, you will never run out of things to learn :)

    Having the technical skills of a developer is great. You feel like you can build and do anything. While it is exhilarating to be able to code something to life, you must always keep in mind that you are an Indie Hacker/Business Person first, and a developer second (or even third). You need to put something out there and tell people about it as quickly as possible so you can learn more about your target market's needs and refine your SaaS application accordingly. If you focus more on the technology rather than the value your business is delivering to your customers, you will get lost in the rabbit holes, learning about the different technologies.

    Your HTML/CSS and Javascript skills should be enough to create a front-end prototype of whatever application your SaaS business is about - unless your business is an API :) Build something that you can show your potential customers and get feedback. That's where I suggest you start ;) Learn only what you need as you need it. Everyone is learning as they go ;)

    Good luck!

    1. 2

      Thanks Tristan - I think you're right, I just need to focus on iterating an MVP and refining the business side of things as well as focusing on learning while I go :)

  6. 1

    I was in the same boat a few years ago. I discovered Ruby on Rails and was instantly hooked. It's a convention driven framework but one that allows you to build full-featured web apps insanely fast.

    Shameless plug: I'm creating a course called Hello Rails where I teach you how to build an app from scratch. https://hellorails.io is the URL if you're interested. I'm a few weeks out to launch at the time of writing this.

    1. 2

      Thanks Andy - bookmarked it. I'm definitely a visual learner too (and I dislike WordPress of course) so I'm excited to check it out!

      1. 1

        I was stuck on WordPress for a number of years. I know what you mean by disliking it!

  7. 1

    Hi Colin,

    As some of the other posters have already commented you are asking a really broad question so lets try to break it down:

    What's your end goal?
    In this specific case it seems that what you really want is to launch a tech based business using coding.

    In that case what many here will advice is to forget about coding and go validate your idea first. But that implies that you already have an idea and want to test it to see if it works.

    If you still don't have anything in mind then what you really want to recognize is that it might be that you want to learn to code because all of these IH interviews and real businesses inspire you to create something similar which is really tech based (automating systems, bots, plugins, API's, scripts, etc).

    If that's the case then you have along way to go if you really want to build something like that because there are a lot of moving parts which I'm gonna try to briefly cover next:

    1. Coding language: Learn a popular coding language and don't go with the hype. If you have a friend that knows how to do it and is willing to help go for the language that she/he's recommending.

    2. Database: Once you got the fundamentals of the language down learn about Databases. These will help you store and retrieve your web app and customer data while also helping you analyze it.

    3. API's: Learn how API's work. Build a couple projects using popular free API's and understand what's happening when you use them.

    4. Scrapping: Learn how to scrape information as needed so that you can grow your Web App or build more sources of data to make your app work.

    5. Design: Learn how to build your app using responsive design frameworks like Bootstrap so that you can launch really fast.

    Hope you got a better idea, if you want to chat about it I'd love to help you have a better idea on what to pursue next according to your goals, you can send me a message at [email protected] or check my last post on IH where I ask if someone wants me to help them learn to code here: https://www.indiehackers.com/post/b53e3537a9

    1. 1

      I realized after posting the question that it was a bit broad (facepalm), but I appreciate your response! I think you're right - I think I should take a step back and be focusing on using JS/ES6 in conjunction with databases and APIs (respective to whatever project I'm working on at that given time). I think it's useful for me to have all of the moving parts laid out in a list :)

  8. 1

    Hey Colin, just curious, what does "entrepreneurial context" actually mean? Building a business with code?

    1. 1

      Hey Vin - got your email and responded. I think for me, entrepreneurial context means putting all of these moving parts (ie: auth, session management, object ownership) into a cohesive product that is safe/secure and provides a monetizable value proposition to users.

  9. 5

    This comment was deleted 9 months ago.

    1. 2

      ^ 100% this.

    2. 1

      I think I need to flesh out my idea first anyways so I'll take this approach to iteration as well - thanks for the advice!