HACKER Q&A
📣 petecooper

Freelance website builders/maintainers, what's in your 2024 toolkit?


I am returning to freelance website work after the end of a lengthy contract in an unrelated field. I am completely disconnected from current best practices on platforms & tools to build and maintain websites.

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 Accepted Answer ✓
Depending on the clients' complexity and needs, I like to structure the work as:

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
This will sound like cheating but I argue for the time it saves me, both in creation and on-going maintenance, and delivering a quality finished project: Squarespace.

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.


👤 aosaigh
Some of the suggestions in this thread are completely nuts. If you are building a traditional marketing website for a client, you're doing your client a disservice if you don't use a CMS or hosted platform like Wordpress, Squarespace, Webflow, Shopify etc. You should be delivering something to them that it easy to maintain and document. If they need to get somebody in to help in 5 years, they shouldn't need to find a be full-stack web-app developer.

👤 p2hari
As you might know not one tool fits all, I still have strong preferences for the following. It helps me get going faster and get things done right first time and helps in ease of maintenance.

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.


👤 philip1209
The competition to coded websites is Webflow agencies. Webflow has made websites somewhat predictable to build, enabling agencies to offer flat-rate pricing.

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
For marketing sites: Wordpress with a custom theme,ACF, and some other plugins, with WP-Rocket, behind a WAF. Integrate it with whatever service the client uses.

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
I'm not a full-time freelancer, so I try to optimize the type of work I do. To that end, I'm sticking with Rails.

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
No one in here is going to agree with me because I'm not cool, but I don't care, "I've seen it all!!"

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...


👤 calvinmorrison
Laravel for any business type App. It's super easy to deploy, writing custom business logic is easy. There's RAD libraries like Orchid if you need basic UI for the users. There's baked in everything from SMS messages, Payment procesing, Oauth, 2FA, API endpoints and so much more.

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.


👤 ecmascript
Altough not freelance, but I operate almost 10 websites atm. I use Remix on pretty much all of them since the dx is great and goes fast to develop more complex things. I host every site on one dedicated server from Hetzner with the Caddy webserver as a reverse proxy in front. I have super fast load times and a cheap monthly bill. I could 10x the traffic and it wouldn't be near hitting the limit of the server and it's like €18/month.

👤 osler
How come I don't see anyone recommending ruby and ruby on rails? I am curious as I am going this route.

👤 brody_hamer
I use Django for basic sites and complex web-apps.

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)


👤 oooyay
Django Ninja and SvelteKit is my new go-to. I use Go for particularly data intensive applications and tooling. Skeleton UI and Flowbite-Svelte for UI components. Obviously Tailwind given the former. I tend to generate SDKs for my frontends using OpenAPI so generally I'm also using OpenAPI Generator CLI. If there's a need for desktop app I use Wails.io with most of the above stack.

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
I'm a big fan of Firebase. The local emulators make working with it really productive since you can iterate locally against the full stack very quickly. SSO and auth are easy to use; way easier than Cognito. For most clients, it will be virtually free to operate until they reach significant traffic. For your static front-ends, Firebase hosting is fully integrated into Google Cloud CDN with no extra setup. You can extend it to full Google Cloud if you need to (e.g. connect endpoints to Cloud Run if you have container workloads). The Firebase Functions integration is really, really nice and allows for strongly typed invocations if you are using TypeScript. Real time with Firestore is easy and, again, free for most small customers. You can use any FE engine with it - React, Vue, vanilla. The Web Frameworks integration with Functions lets you deploy dynamic backends as well into Cloud Functions.

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.


👤 OulaX
I'm really happy and productive with Django, DRF, React, React Router, and React Query.

Mostly I just use Django alone with nothing on top, not even a frontend framework.


👤 ksimon
Hi Pete,

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.


👤 tomwojcik
Slightly off topic. I have been working with Django for about 7 years now. Whenever I'm looking for a new contract, I first filter by Django, as it's just a pleasure to work with. Funny how many other ppl share similar exp in this discussion, yet today is the day of 'who's hiring' and Django is mentioned only twice so far.

👤 rglover

👤 rambambram
I work daily on a Raspberry Pi 4 with 8GB. I run Raspberry OS with a local Apache2 server. I use gedit (Gnome text editor, only syntax highlighting, line numbers and a little file browser) to program PHP, MySQL and a little Javascript. GIMP I use for editing photos and creating images (also for print). Kdenlive works for editing small to medium size videos. Firefox, Thunderbird, Filezilla, Rhythmbox and SuperTuxKart are also necessary for my workday.

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.


👤 toastal
If it’s static & can be edits to content that could easily render out as static (such as some reStructuredText files) I always reach for Soupault so I can create something super lightweight, bespoke for the job, but extendable with plugins & tools that don’t lock me into a specific system… it’s mostly just the composition of applications delivered by my package manager, piped thru stdin/stdout, & glued together with this tool. The last thing you need are tools that are complicated, inflexible, aren’t built to last a decade of low maintenance, & whose outputs or dependencies are hard to make something reproducible when just building a website.

👤 tommiegannert
My go-to right now is Typescript, Nuxt ("Next.js for VueJS"), PrimeVue and Supabase. I'm using Vuetify (Material Design toolkit) for an SPA, but PrimeVue is nice for general websites. Nuxt provides SSR/SSG and lets me use a single framework for both sides. All of the above naturally have quirks to get used to. ;)

If I write a backend, it's in Go. It has nice concurrency primitives that lets me structure code the way I want, and memory is managed safely. Using PostgreSQL to store things.

Hosting is with Firebase or on a Hetzner instance with Docker/Podman containers.

Edit: When on Hetzner: using Traefik as a reverse proxy to handle authentication and TLS.


👤 murshudoff
As a team we use - NextJS (AppRouter) for the UI, TailwindCSS + shadcn ui - Custom CMS built on top of Strapi for the backend - We use self-hosted GitLab and for every project we have CI/CD by default. - For every project (even simple landings) we use server from Contabo. It’s like 6$ for 6GB RAM and 400GB SSD - Everything is dockerized and gets deployed using gitlab-runner. - Traefik is used as reverse-proxy - Minio is used as a storage (with some tweaks for caching) - Postgres is DB of choice

Everything lives as scripts. Only Next UI is developed from scratch for each customer.


👤 svsaraf
I know you're asking about developer tools - the main ones I use include:

* Webflow (in case the client needs something relatively unsophisticated)

* Django / HTMX / AlpineJS / Django Ninja (in case the client needs a full CRUD application with more powerful capabilities).

I also want to shamelessly plug - if you are looking to do freelance or contract work, and you want an easy way to manage the contract, engagements, milestones, and invoices, consider using withpartly.com.

I'm the founder and CEO, and looking for freelancers / contractors to play around with the alpha product (for free).


👤 marpstar
My most recent project launched in January. NextJS 14 client integrated with PayloadCMS (http://payloadcms.com) for the back-end. I love both technologies in theory, but they're both going through a renaissance period and "bleeding edge" doesn't even begin to describe it.

If I'm just building a client app, create-react-app is still my go to.

Before now, I'd been building on WordPress for 10+ years for anything client-administered. Planning on using Payload from here on out.


👤 volkandkaya
If this is for landing pages and marketing sites going to shill my own product Versoly.com

- Leverages web dev best practices (Tailwind, mobile first, tiny open source packages for extra features)

- Bootstrapped and profitable (I won't randomly increase prices, if anything with more customers would like to lower or add more features)

- Features built for freelancers/agencies such as saving components that can be reused across client projects

- Flexible CMS based on Vue syntax (one of the easiest ways to extend HTML)


👤 constantinum
Elementor on wordpress https://elementor.com/

👤 sleepingreset
anybody got resource recommendations to get started on freelancing? Never done it before, but considering starting

👤 thedangler
I use Sytescope.com for all my clients. We build all their pages in a fraction of the time and if they feel like taking the wheel for updates, they are more than welcome to.

99% of the time there isn't this service can't do.


👤 pentagrama
For informational sites (no login/special features) I recommend WordPress.

You can give your clients credentials to update the site (blogposts, page content) without access to major changes that may broke the site. The block based editor is easy to use.

----

Domains

https://www.namecheap.com is pretty good.

----

Hosting

https://www.dreamhost.com a shared server for $10/month and you can have unlimited WordPress websites witj low/mid traffic and the installation is a breeze.

----

Design

You will be limited on look and feel adjustments, be careful with buying commercial themes that comes bloated with plugins and subscription based stuff. Here some free and high quality themes https://andersnoren.se/teman/

----

You may like this plugins:

----

SEO

For basic SEO stuff. You can disable the constant nagging to go pro. https://wordpress.org/plugins/wordpress-seo/

----

Extra blocks

If the native blocks of the editor are not enough this is a good expansion. https://wordpress.org/plugins/coblocks/

----

Inject code

If you need to add some code snippet like Google Analytics https://wordpress.org/plugins/insert-headers-and-footers/

----

Analytics

A basic analytics tool that is hosted locally without calling a third party https://wordpress.org/plugins/koko-analytics/

----

Multilingual

If you need a site on multiple languages https://wordpress.org/plugins/polylang/

----

Forms

If you need to add some forms to the site https://wordpress.org/plugins/wpforms-lite/

----

Hope can help!


👤 gr4vityWall
Frontend: Preact, Tailwind CSS, Vite Backend: Node.js, MongoDB/Mongoose, Express

Works well for my needs. I add tRPC sometimes. If I have the option to, I'll use TypeScript instead of JavaScript.


👤 davedx
React and TailwindCSS for everything now. I'm fed up of churn, fed up of the constant stream of new UI toolkits and static site this and Next that and Svelte the other.

I spent my "new technology budget" on upgrading most of my projects to vite, which already kind of annoyed me, but it does seem a tad faster than Webpack and keeps my projects from bitrotting away so, eh.

I actually increased my use of React in the last year or so by using it to render to HTML/PDF on the back-end now as well, combining it with weasyprint or puppeteer to pump out the final PDF's.

To be clear: I currently try to build everything web related (websites, static pages, webapps, PDF's, electron apps) with React now.


👤 lakomen
TBH I'm having a very hard time finding freelance work in Germany.

Back when I started, in 2002, all the local companies were Microsoft goons. Asp.net blah.

And I was the idealistic Linux PHP MySQL guy, version 3 back then. Life was simple and good.

I had work from local people and I got introduced to a local dipl. graphic design studio of 3 people. I created a guest book in PHP with design in 4 hours. I didn't know that the visit to that company was a test, because I went wherever with my friend, the singer/DJ. I also did tour posters for him or rather the band, because it was fun and he asked me to.

One poster in particular created a lot of drama or let's say attention, when they were on an Africa tour. I put the heads of the groups members on a known image of religious statues, replaced the statues' faces. Well the religious folk didn't take it too well but the youth liked it and the concerts were full.

Anyhow I digress. I got the job and created quite a few projects. I ran my own hosting company.

Then I got involved with a girl who cheated on me and that changed my life. I didn't work for others anymore. The designer company split up and I was out of sources for projects.

With the same friend I partnered to create a site which generated enough ad revenue to live a good life. I wanted more, that is, to expand, because I knew this wouldn't last. We could've signed young musicians and created a record label, but he was content with working in a factory and have his side gig, where he's the star and blah. Eventually the disagreement got too big and the project ended.

I did PHP until 2013 then moved to Go because the stupidity in PHP and the wrong type of dogma just became too much, and Go was great. It took a lot of burden away vs the PHP craze, the OO fetishism, fucking dogma of stupidity.

But Go's ecosystem was barren. I wanted years on writing routers and libraries. I got into AngularJS, because the Google+ hype was real. Then moved to Angular but oh well. And finally Vue as my go to choice of frontend framework, with Quasar. On the backend I use Go with ent and either postgres or mysql, but also mongodb.

Nowadays all the companies in the area are PHP joints or C# or react frontends.

I can't get in touch with them, they're stuck in their beliefs, are too arrogant to even consider someone with 20 years of hands on experience knows better.

So I just work for myself, and check jobs, which are ridiculous in their requirements. I love building stuff, but I hate the whole IT industry. The stupidity, the dogma, the hype and the arrogance.

It's like, the PHP jobs are 90% shopware e-commerce and have literally no big requirements, but I hate PHP. As soon as you cross over to Go land, it's all cloud, microservices, broker, grpc or similar and of course Docker and Kubernetes. Because they all read the hype about k8s and cloud on their golf courses. I'm sick of it.


👤 atlantic
MS Visual Studio.

👤 StinkyTechBros
SAP and JIRA.