Ask HN: Freelance website builders/maintainers, what's in your 2024 toolkit?
118 points| petecooper | 2 years ago | reply
I have some local and national clients who have requested website overhauls, some from the ground up with a respectable budget (mostly national) and others under the single-page basic web presence umbrella with less money available (mostly local).
If you're a freelancer working with building & maintaining websites, I would like to know more about how you build and maintain them. What's in your toolkit? Server-side, front-side, desktop apps…anything goes.
Thank you.
[+] [-] emsalazar|2 years ago|reply
Tier 1 (just need a basic site): Use the built-in website builders from their domain provider or hosted static site generators, like GoDaddy, Github Pages, etc.
Tier 2 (need plugins or ecommerce): If they require some more functionality like email lists or selling products then use services like Wordpress, Squarespace, or Shopify to build their site.
Tier 3 (extra data complexity): For sites that have more structured data that is not satisfied with tier 2, then use something like Webflow or Framer. These allow you to add more data types and categories to build unique pages.
Tier 4 (custom app) If they are building something unique that is complicated to build with the previous tiers, then my preferred stack to use is Django, Django Rest Framework, HTMX, Tailwind. Django-cms or Wagtail are also proven CMS to help build their site.
You should also consider serverless apps like Google Cloud Run or AWS Fargate so you don't worry too much about the infrastructure unless it is absolutely necessary to roll your own.
Tier 5 (a little bit of everything): Combine tiers with subdomains. For example, build their blog or marketing site on webflow, but have a custom API or an authenticated interface with a Django/DRF backend.
Ultimately, you need to see what level of technology your client is comfortable with and how you want to leave the project as your contract ends. Don't try to build a overtly complicated system that will give you more headaches later when the client calls on you again.
[+] [-] bryanculver|2 years ago|reply
The clients are happy, if they get to the point where they want to manage the content themselves, and for less than $300/yr they get hosting, access to a payment processor if they need it, and domain renewal. It's been a no-brainer.
[+] [-] bdcravens|2 years ago|reply
[+] [-] debesyla|2 years ago|reply
[+] [-] aosaigh|2 years ago|reply
[+] [-] 6510|2 years ago|reply
https://wpengine.com/support/sync-new-post-and-pages/#Import...
I had to scroll up a bit to see the heading. They couldn't figure out how to jump to the #anchor apparently no one is actually looking at the new user experience. This wouldn't happen to me. It just wouldn't.
https://5help.squarespace.com/hc/en-us/articles/204965388-Im....
I would not make links like: 5help.squarespace.com/hc/en-us/articles/204965388-Importing-Blogger-or-WordPress-blog-posts#:~:text=Log%20into%20your%20Squarespace%205%20site.%20In%20the,URL%20that%20visitors%20use%20to%20visit%20that%20blog. but there it is. Ready for consumption.
https://webflow.com/updates/csv-import
Seems good enough if you can find the page.
https://help.shopify.com/en/manual/products/import-export/im...
Along with a long list of expensive plugins they will need if they want to keep the custom functionality. It will lack some thing but have other things that hopefully somewhat make up for it.
One should also have a new terms of service and user agreement ready in case of migration.
You see? If you prepare for it clients can downgrade whenever they like and everything becomes a nail.
[+] [-] p2hari|2 years ago|reply
Language: Typescript.
Frontend Framework: Astrojs [1] or qwik [2]
Frontend Library: React if it requires 3d and other frame-motion like animations, else will not use any frontend library or might throw solidjs if required for some state etc.
Backend: Cloudflare functions, google functions
Auth: Lucia-Auth [3] if required
IDE: VS code with neovim , once deployed to git, I might some time use code-spaces
CSS: DaisyUI [4] with tailwind or Bulma
CSS Library: TailwindUI [5] makes most of the components ready to use and comes from the makers
CMS: Astro content collections or Sanity [6]
Deployment: Cloudflare (Highly preferred) or linode/digitalocean/netlify
Database: turso [7] or neon postgres [8] with (drizzle orm) or cloudflare durable objects
1. https://github.com/withastro/astro
2. https://github.com/BuilderIO/qwik
3. https://github.com/lucia-auth/lucia
4. https://github.com/saadeghi/daisyui
5. https://tailwindui.com/
6. https://www.sanity.io/
7. https://turso.tech/
8. https://neon.tech/
Also huge fan of firebase and their emulators and whole eco-system.
[+] [-] kevinsync|2 years ago|reply
I appreciate seeing what stacks work for other people, and also very much appreciate the illustration of how NOT homogenous things actually are out there in the world (despite certain blogs and developer influencers trying to convince you otherwise)
[+] [-] moltar|2 years ago|reply
Want to throw in Remix into this list. It’s been a breath of fresh air compared to many convoluted systems these days.
[+] [-] Cheezmeister|2 years ago|reply
Do you mean VS code with a plugin that makes it look and feel like neovim, or is there a way to make both clients edit the same buffer at the same time?
[+] [-] spelunker|2 years ago|reply
I'm going to try out Astro!
[+] [-] philip1209|2 years ago|reply
I think a questions you should ask is "What are the client needs that no-code doesn't serve", and explore that. Or, "What are the technical needs for deploying an hybrid coded+low-code stack", e.g. setting up reverse proxies that combine multiple backends.
[+] [-] michelb|2 years ago|reply
Then hand it over or maintain it for them.
Lately I have been using Framer which is awesome.
Trying to stay away from any JS framework or build system for my sanity.
[+] [-] bdcravens|2 years ago|reply
[+] [-] dmje|2 years ago|reply
[+] [-] bdcravens|2 years ago|reply
For my personal workflow, I put all projects in their own Docker Compose files (with local containers and/or standard images as appropriate). As much as possible, I want every project set up in such a way that my (host) machine has very few dependencies and everything is separate.
I limit the freelance work I do to the engagement; I'm not interested in managed services like owning the Github or the hosting accounts. I want to remove myself from the deployment if possible, so I push them towards CI/CD when I have the influence. (Github Actions these days, but I've used many of the standard options)
I avoid any kind of locking-in the client to me.
[+] [-] pelagicAustral|2 years ago|reply
I have an employer, and we work with a particular stack, but if I was doing my own thing I would work native each an every time... If you work with apps, xcode and Swift, Android? Android Studio and Kotlin/Java, Windows desktop? Windows Forms and .NET %CURRENT_DOTNET_ITERATION%... Web? pick a solid framework with tons of support and libraries, django, rails, phoenix, et al. Minimize the use of JS libraries/frameworks or remove altogether, forget about fads that mix markup with javascript and logic, and even style (these days). Do not build stuff based on a web browser just so you can call it multi-platform, you will end up shipping a crappy abstraction with a poor UI and even worse performance, because remember, you are playing solo, cant afford the optimizations of large product teams, be pragmatic... deployments/CICD/devops DIY, don't trust services that advertise themselves as a panacea for deployments, remember Heroku f* everyone sideways... learn and use stuff like Dokku or Kamal...
[+] [-] yau8edq12i|2 years ago|reply
[+] [-] seafoamteal|2 years ago|reply
[+] [-] thih9|2 years ago|reply
In many cases this sounds better than shipping for only one platform - or not shipping at all.
[+] [-] robofanatic|2 years ago|reply
Can you elaborate please? I hosted an API on heroku recently. I have no problem so far. Should I be concerned?
[+] [-] karaterobot|2 years ago|reply
[+] [-] calvinmorrison|2 years ago|reply
Laravel has "Spark" which is a Saas specific starter kit you can utilize too.
PHP is easy to deploy, easy to host, and easy to sub-contract work out. It's really reliable, well understood, developers are low cost, very stable, etc.
[+] [-] icedchai|2 years ago|reply
[+] [-] ecmascript|2 years ago|reply
[+] [-] browningstreet|2 years ago|reply
Point is, for others — don’t automatically assume well reviewed premium ho$ting is what you need. It may, in fact, be a lot slower.
[+] [-] osler|2 years ago|reply
[+] [-] a_wild_dandan|2 years ago|reply
[+] [-] 16mb|2 years ago|reply
The TS/JS ecosystem is just much larger and that comes with newer libraries, tools and has better support. Getting setup with a basic CRUD rails app is quick, but the more advanced work; auth, deployments, scale, etc. can be frustrating for newcomers.
Not a fan of how they’re going all in on Hotwire. Although I haven’t been following those advancements much lately.
They really need to have some easy way to just roll their api only mode with a stand alone frontend, along with documentation on configuring that.
You just can’t beat the proficiency of using the same types on front and backend. I did enjoy trying out redwoodjs.
[+] [-] bdcravens|2 years ago|reply
[+] [-] whalesalad|2 years ago|reply
[+] [-] brody_hamer|2 years ago|reply
Some sites are dead simple, with an SQLite data store, and static content served directly. Some apps are running on AWS ECS, auto scaling up to hundreds of VMs in response to bursty workloads.
Generally though, I’m running docker compose for local development environments, and docker swarm in production. (Until autoscaling requires something like ECS)
Docker makes it easy to define everything in code. (A redis instance, worker instances vs web instances, db, etc)
[+] [-] cols|2 years ago|reply
[+] [-] oooyay|2 years ago|reply
The value that I sell for my products is that they focus on pragmatism and long term maintainability. Even if you don't use me for the next feature, this project will still be able to be worked on by anyone competent you hire.
[+] [-] CharlieDigital|2 years ago|reply
If I need SEO, I'll build using a framework like Nuxt.js or Astro.js and statically generate the output and host in Firebase Hosting. If I don't need SEO, I'll build regular SPAs using React or Vue.
The overall DX is really good compared to Amplify (closest alternative).
Supabase is also promising if you want to work with a relational DB.
[+] [-] wheelerwj|2 years ago|reply
Aren’t you having problems with clients wanting to update content on their own?
[+] [-] OulaX|2 years ago|reply
Mostly I just use Django alone with nothing on top, not even a frontend framework.
[+] [-] malux85|2 years ago|reply
I implemented a few custom authentication classes for things like group permissions on read / write for shared projects internally and just hooking this all up means I can write huge new modules that “just” slot in, in just a few hours. IMO they have the abstraction layers just right, it makes me really productive.
[+] [-] DividableMiddle|2 years ago|reply
[+] [-] ksimon|2 years ago|reply
For those of your clients who requested website overhauls, they'll probably prefer to keep their new websites on the same location, as their own hosting, usually it's a cPanel hosting account, like HostGator or GoDaddy, so WordPress is a first choice, if you (and they?) enjoy using it.
But as you mentioned they're local businesses, with limited budget and needs for basic web presence, they would probably love to manage their websites on their own and WordPress may look scary for most of the less technical users. You can try Kopage (https://kopage.com), similar to WordPress, it can be self-hosted, but it works in the cloud in the first place. And it's free.
A little disclaimer: Kopage is one of my projects, and this was the exact reason it was created in the first place, as a tool as user-friendly and intuitive as possible for our own clients, so they can manage their own websites and don't be afraid to break something.
There's a white-label plan if you'd like to offer it under your own brand.
[+] [-] replwoacause|2 years ago|reply
[+] [-] tomwojcik|2 years ago|reply
[+] [-] rglover|2 years ago|reply
[+] [-] replwoacause|2 years ago|reply
[+] [-] rambambram|2 years ago|reply
I cannot think of a simpler setup. I'm not even a minimalist, I just can't stand Windows and Apple. Annoying software, blegh. Or paying thousands of bucks for a more powerful computer that I don't need. The RPi4 just works. Quick enough. And then it gets out of the way.
[+] [-] nine_k|2 years ago|reply
[+] [-] toastal|2 years ago|reply