As a non-web developer who needed to learn a framework that "just works" for a hobby project, I suggest Svelte.
It was very easy to set up (I had previously had yelling and cursing matches with Angular).
Typescript integration is one little script away (and that script is included with the skeleton project every tutorial tells you to use).
Making a UI that "just works" is stupid simple. It's intuitive- easy to throw stuff together, but also easy to make things that scale and compose nicely. Svelte has been the most bullshit-free experience I've ever had in any of my web frontend escapades.
Frontend deployment? scp the build folder onto an EC2 instance running nginx. Done.
For styles? KISS. Use mvp.css. to use it, slap a single line of HTML into the top of index.svelte. Boom, everything is pretty enough that the average user will notice nothing out of the ordinary.
The stack I've settled on for my web projects is this:
- Svelte for the UI/UX.
- mvp.css for all of my styling needs.
- For the database/backend API/etc, Rails with postgres.
- Infrastructure? An ec2 instance. Nginx. Certbot, assuming that counts as infrastructure. Maybe some docker containers if I'm feeling fancy.
With this stack, a single person with very little web experience can have a fully-functioning MVP for a fairly sophisticated service deployed in a couple of weeks. It's unsophisticated, and it probably doesn't scale to a million billion users, but setup is easy, deployment is easy, maintenance is easy, and all of the necessary structure is there to let you scale up to a more sophisticated architecture later.
Typescript is already supported when you set it up using the documented "npm create svelte@next".
It has cool routing, backend etc but even if you don't care about any of it, you get free hot reloads. And with the new version, you can create it as if it was your average svelte app, just avoiding + in file names and using +page.svelte as your main entry point.
For styles, if you care about styling a bit more than default styles (mvp.css or bulma/bootstrap/similar), I'd recommend using tailwind's better clone windicss, which has great svelte integration (including editor extensions for autocomplete and highlight), and writing styles is quicker than using normal css.
You can also use scss/sass/similar in style blocks, you only need to install node-sass and set "scss"/"sass" as the lang of the style block.
I love Svelte and SvelteKit but if you're just interested in building your app, please pick something else for now. It's still constantly changing and while it's good it's being developed rapidly, it's definitely not something you want to spend your limited time on migrating while you could just be productive with say React.
Okay sure, they have had big breaking changes in-between major versions as well, but before SvelteKit hits v1.0 you're better off using something more stable. Later you can certainly choose to migrate as the core logic probably is not that complex. If you're using rich-text editing capabilities however, React is more supported.
This is definitely worth noting. SveleteKit is probably close to 1.0, but the current versioning strategy is incrementing one number, and those changes are always expected to be breaking (even if they aren’t frequently breaking).
That said, if you start working on a given pre-release and only upgrade to 1.0, the migration shouldn’t be too painful.
SvelteKit 1.0.0 has a release candidate since Friday. There have been many breaking changes leading up to that, but we’re past those now so this is an excellent time to start using it.
SvelteKit has indeed undergone a bunch of changes (and like others mentioned is now in the RC phase), but I just wanted to mention that Svelte itself has been very stable since v3 came out a few years ago.
It was very easy to set up (I had previously had yelling and cursing matches with Angular).
Typescript integration is one little script away (and that script is included with the skeleton project every tutorial tells you to use).
Making a UI that "just works" is stupid simple. It's intuitive- easy to throw stuff together, but also easy to make things that scale and compose nicely. Svelte has been the most bullshit-free experience I've ever had in any of my web frontend escapades.
Frontend deployment? scp the build folder onto an EC2 instance running nginx. Done.
For styles? KISS. Use mvp.css. to use it, slap a single line of HTML into the top of index.svelte. Boom, everything is pretty enough that the average user will notice nothing out of the ordinary.
The stack I've settled on for my web projects is this:
- Svelte for the UI/UX.
- mvp.css for all of my styling needs.
- For the database/backend API/etc, Rails with postgres.
- Infrastructure? An ec2 instance. Nginx. Certbot, assuming that counts as infrastructure. Maybe some docker containers if I'm feeling fancy.
With this stack, a single person with very little web experience can have a fully-functioning MVP for a fairly sophisticated service deployed in a couple of weeks. It's unsophisticated, and it probably doesn't scale to a million billion users, but setup is easy, deployment is easy, maintenance is easy, and all of the necessary structure is there to let you scale up to a more sophisticated architecture later.