Library | Complexity | Community | Example | Init command |
---|---|---|---|---|
Svelte | Low | Small | To-do list | npm create svelte@latest my-app |
Vue.js | Medium | Medium | To-do list | npm init vue@latest |
React.js | High | Large | To-do list | npx create-react-app my-app |
React is painful to learn, but it's good to know for client projects. The Vue.js learning curve is less steep, and I'm using it for my own projects. I'm now experimenting with Svelte—both as a library to teach to beginners and for my own projects.
Framework | Complexity | Features |
---|---|---|
Pico.css | Low | Good looking forms, light/dark mode. |
Bootstrap | Medium | Grid layout. Basic UI components. |
Tailwind | High | Grid layout. Quickly design new components. |
If you're prototyping fast, I'd first try to see if everything can be done frontend. You'd be surprised what's possible these days with no backend.
For example:
- Instead of building a data backend, → you can use Airtable or Supabase.
- Instead of implementing authentication in the backend → you can use Supabase or Netlify Identity.
Example: Web app using REST API and magic link authentication using Vue.js+Supabase
That being said, as soon as you require more functionality than these platforms provide, you'll have to switch over or build a backend. Also, if you render a lot of content dynamically with no backend, your SEO will be 💩.
This one I don't know. There are popular backend frameworks out there to go with all the frontend libraries, so if you've started with a frontend library, it's easy to continue this way:
- Svelte → SvelteKit
- Vue.js → Nuxt.js
- React.js → Next.js
But keep in mind, it gets complicated fast on the backend, with server-side-rendering, database integrations, authentication integrations, choosing a host, etc. I haven't tried enough to have a strong opinion. But if you're going to go big might also go all the way with...
If you'll have at least 1-2 full-time devs, use RedwoodJS. It's mainly an organized framework and code generation tool for building apps with React+GraphQL+Prisma. This is what I'm using now for professional projects that need to grow and outlast myself.