I've been having a few ideas for small applications lately and I think the barrier to actually building them is the initial scaffolding and boilerplate needed for user accounts. It's been a while since I started a new project from scratch.
I think the bare minimum is getting a web app up and running with a landing page and then user authentication. So let's take a todo app as an example where a user can authenticate (sign up, confirm, forgot password, etc) and login to see just their own todos.
What tools/stack would you use and how would you host it? Preferably for free to prove out mvp's. Thanks!
I would heavily recommend checking out Netlify, Firebase, and Hugo (or Jekyll).
Once you have a domain name, Netlify will handle FOR FREE(with a tiny bit of configuration):
Firebase replaces a backend for most simple applications (basically for free unless you get a bunch of users) I'm sure it would work fine for your TODO app. It handles (all from the frontend):
If you want to build a landing page separately from the web app, then I would recommend using Hugo or Jekyll and an existing theme.
I used these for my existing SaaS solution and I think they are the way to go right now. If you're curious, I wrote about these tools in more detail (and I also covered a few more tools) here: https://www.zakmiller.com/posts/micropreneur-toolkit/.
I agree with every point of this. My stack for all my projects:
I also believe that this is going to be a killer combo going forward so I would suggest to invest in this right now.
I built my own boilerplate (https://usegravity.app) in React/Node, then ended up commercialising it after talking to a few people who had the same problem.
For my own products, I usually start with a basic landing page template for validation (I haven't found a good service that suits my needs yet) then move to development with the boilerplate.
Hosting is always on Heroku because it's so easy to set up and maintain, ain't got time for fiddling around with AWS for days.
Great boilerplate and +1 for Heroku.
I am currently using AWS Cognito to handle the auth and so far it's been fairly painless, at least as painless as AWS can be I suppose.
You get 50k users for free per month so there's no cost really for MVPs.
To get started quickly they provide a ready-made & hosted UI for signup/login/forgot-password screens. The pages are somewhat customizable in look'n'feel but still kinda 'meh' looking, in the end I coded up my own using React and MaterialUI and now I plan to just copy/paste this for all my future projects.
Cognito handles the account validation via an email or SMS. You can enable social logins as well as email, mobile-number or username based logins and/or MFA.
I have my backend REST API proxied through AWS ApiGateway which validates all calls against Cognito before forwarding on the request.
I like to keep my options open in regard to flexibility and prefer to invest a bit more time initially. So my default is Python/Django (backend), Vue/Vuex (frontend) and NativeScript-Vue (iOS+Android) running on Heroku (PaaS).
Netlify, as others have outlined, is awesome!
I use sheet2site.com for testing MVP ideas like job boards.
I'm pretty new to setting up new web apps so this might be a stupid question, but why is nobody recommending WordPress? I mean, that's free even if your web site should grow larger and its very easy and quick to set up. There are tons of free themes and apps to support you with all the thing you need.
I quickly looked at Netlify and Firebase, and they both seem free for very small (hobbyist level they both state) sites, but as soon as things start to grow the costs also seem to grow very rapidly.
What advantages do they have compared to something like WordPress?
WordPress is fine for mostly static content. When you need to provide dynamic content, which also depends on the user's subscription level, you will quickly run into limitations and not to mention performance issues when you grow. WordPress doesn't scale well in this scenario.
OK that's clear TangoKilo. Thanks for your reply.
GitHub Pages can get you surprisingly far if you don't need a bespoke back-end. It allows you to spin up JavaScript web apps and landing pages, all on your own domain (using CNAME) and with HTTPS.
For the landing page I'd use a Bootstrap template.
Create React App (front end),
Netlify Functions (backend),
Netlify Identity (authentication),
Netlify Hosting (server)
If you have a Netlify account, you can check out my setup by deploying it here https://app.netlify.com/start/deploy?repository=https://github.com/parkeragee/jabba
More info on it here: https://blog.parkeragee.com/post/-jabba-the-netlify-starter-app/
I'm not familiar with Netlify Identity. How does that work exactly? Does it return a JWT or something? How do you leverage that if you wanted to have auth for specific entries in the database or something similar.
Yes, Identity works via JWT tokens. You drop in a link to the Identity script like so: https://github.com/parkeragee/jabba/blob/master/public/index.html#L22
And add a div element to your html like this https://github.com/parkeragee/jabba/blob/master/public/index.html#L57
And once you enable Netlify Identity from your Netlify dashboard, it should just work.
In order to create users in your database and relate them to the user created by Netlify Identity, you would just use one of Netlify’s lifecycle functions. When you utilize Netlify Functions, you can name one of the functions
identity-signup.jsand it will automatically run whenever there is a new user sign up via the Netlify Identity widget. You can handle creating a new user in your database within this function and assign the unique ID assigned via Identity to the new user record in your database.Wow this was such a thorough and clear example. I guess I'm gonna be using Netlify Identity in my project soon because of this.
Currently I'm working on a project, where I've built a landing page and a possibility for users to create an account. I'm using Meteor, React and Bootstrap for this project. And I've built this page really quick.
You can checkout the tutorial on their page https://www.meteor.com/, they're building a todo app 😉.
I'm working on something that will help lower this barrier. I'm planning to release it as an open source command line tool in the next month or so. Of the options currently available, I think Firebase is the safest bet.
I'd love to tell you more about what I'm building, and to hear more about your use case. Email me at [email protected] if you're interested.
Anyone else who is interested is welcome to email me as well :)
Same as a couple of others here, I typically copy an existing project (Python/Flask, SCSS + Webpack frontend) and rip out the project-specific stuff. I'm in the process of extracting this out into a boilerplate repo I can clone that gets me up and running with a basic app (a la Spark from Laravel).
I'm also working on putting together a better system for registering a domain, setting up hosting, DNS records, a mailbox, DKIM/DMARC and outbound sending, and automated git deployments but that's more of a pipe dream right now.
I come from a heavy tech background and tend to do most of the scaffolding myself just through habit, my experience and previous work.
I've found that there are a lot of good barebones MVC applications with essential functionality (user registration, search etc) for most major languages. However in addition to using a template on GitHub, I try to re-use my side-project code for other projects.
I just duplicate existing projects, gut them, then work from that. Anything re-used more than once I try to roll into a package to re-use across projects. Once project is gutted to just a barebones TODO app, turn it into a VM / container then duplicate. However you need to spend some time refactoring your projects to not inherit technical debt.
IThat way you're not throwing away your previous work/time and you get to learn from older mistakes and correct them.
My favorite solution here:
... be up and running in < 1 hr. Cheers!
I don’t quickly spin up projects, I do projects that are challenging, allows me to explore new technologies and topics and that supports my career. Usually are not “quick”
I wrote my own authentication system supporting passwordless in Go, exposing GraphQL API. I host it on Heroku or AWS directly, it's light and adapted to my needs every time.
Yeah, I used to have something like this for Rails but it got stale in between the spurts of inspiration.
Free template hosted on Netlify also free :)
https://github.com/pydanny/cookiecutter-django all hosted on a new AWS account for free ec2/s3/rds
Only thing I would pay for is a gmail account. If it does grow gmail has so many apps for it that not having it is a disadvantage.
If you're working on it is a side hustle, I would spend money over wasting time.
That would mean using a page builder to create a landing page quickly and using a PaaS to host so you don't have to worry about deployments etc.
I also think there is value in hiring experts for 30 minutes to an hour. I plan on doing that in 2020.
This comment was deleted 3 years ago.
This comment was deleted 6 years ago.