Notes

Short thoughts, experiments and work-in-progress from the community.

Write a note
Graeme FultonJan 6
Next.js Standalone Build: Build local, deploy to production (Coolify)

When building huge sites of up to 30k static blog posts for example, it can be really resource intensive, and not possible on smaller servers with limited CPU. For example for my site, I've got 8gb of RAM, and it still struggles to build a blog of 6000 pages.

Read note
Graeme FultonMay 22, 2025
SQLite in Production: 10 examples out in the wild

Sometimes the best option is the simplest, even when it comes to databases. While many developers reach for Postgres or MySQL by default, might it be better to take the more lightweight approach to get something shipped? That’s where SQLite comes in handy – a

Read note
Graeme FultonMay 21, 2025
Pitfalls of Vibe Coding: Build Fast, Break Faster

AI is great until it isn't. Tools like Cursor and Windsurf will confidently build whatever you ask for – but rarely do they question your choices, catch your mistakes (in what you ask), or warn you when you're heading towards trouble. I've been learning the da

Read note
Graeme FultonMay 7, 2025
AI Product Manager: FeedBagel

I've just 'vibe coded' an entire app in Cursor – check it out: FeedBagel.com . It looks fine and works great, but the whole process left me wondering if I should ever have bothered. I managed to ship this MVP, but I sometimes find the frustration of vibe codin

Read note
Graeme FultonApr 29, 2025
Vibe Coding: Cursor, Windsurf, and Developer Slot Machines

I've been a Cursor subscriber for over a year, and I find its performance can vary depending on the project. Sometimes it's amazing, sometimes it's frustrating, a bit like the Illusion of AI Productivity chart: Today I spent $10 trying out the recent Claude 3.

Read note
Graeme FultonApr 24, 2025
How to Cache the Strapi API: Setting Up Redis on Coolify with Strapi-Cache Plugin

This post will show you how to set up caching for GraphQL and Rest on Strapi 5, using the Strapi-Cache plugin and Redis. First, here's a bit of context and why I needed it: Even if your site is cached by Cloudflare or something different, you still may need ca

Read note
Graeme FultonApr 24, 2025
Draft & Publish in Strapi 5 CMS: Document Versioning Under the Hood

Prototypr is a publishing platform using Strapi for the CMS, and the site has an editor for users to draft and submit articles. This process relies on document versioning , and that didn't come with Strapi 4. Now versioning is available in Strapi 5 out the box

Read note
Graeme FultonApr 22, 2025
How to Install Discourse Plugins on Coolify/Docker

To get Discourse up and running on Coolify, I followed this guide by Cristian Buleandra : Running Discourse on Coolify Discourse does not officially provide a Docker image to run their forum software, which makes it harder to install on Coolify. Solution: Use

Read note
Graeme FultonJan 28, 2025
Coolify + Hetzner: Goodbye DigitalOcean and Serverless

Since I've cut my server costs down from ~$300/m to ~$25/m thanks to Coolify and Hetzner , this post shares my journey away from DigitalOcean and Serverless, and how and why you could do it too! For context, Coolify is an open-source, self-hostable platform th

Read note
Graeme FultonJan 27, 2025
How to Deploy Strapi on Coolify from a GitHub Repo

You can deploy Strapi on Coolify in 1 click from the projects dashboard – that's great for new projects, but what if you have an existing Strapi project in GitHub you want to deploy? This post will show you how! If you're deploying from GitHub, we deploy 2 thi

Read note
Graeme FultonJan 27, 2025
Configure Cloudflare Cloud Connector for AWS S3 SSL Fix

In a previous note, I wrote how to point a custom domain to your S3 bucket . It seemed to work, but when my Cloudflare domain was set to SSL full(strict) mode, I noticed some of the images had SSL invalid certificate errors. This can be solved with Cloudflare

Read note
Graeme FultonJan 27, 2025
How to move WordPress images to an AWS S3 Bucket

I had a WordPress site with images in the wp-content/uploads folder. That WordPress site was shut down, but all my articles on the new site now had broken image links. I therefore needed a way to host all the images from my old WordPress uploads folder, but ke

Read note
Graeme FultonOct 24, 2024
Activate RLS on all Supabase Tables in one SQL command

If you're using Supabase, and have created tables in the Postgres database from outside of Supabase (e.g. with something like Prisma or Strapi), RLS (Row Level Security) won't be active on them. This means anyone querying via the Supabase API will be able to r

Read note
Graeme FultonAug 29, 2024
How to center a div: the app (Claude Artifact)!

Here's a fun little app I made a while ago with Claude Artifacts. It lets you try all the different ways to centre a div with CSS (e.g. flexbox, grid, margins from a dropdown): There's also a ranking table of which method Claude recommends most: Seeing that Cl

Read note
Graeme FultonAug 26, 2024
Quickstart for building Adobe Express Add-ons in React.js

Adobe Express is a 'content creation' tool for things like social media scheduling, banners, and even TikTok videos! There's also a lot of generative AI features, so it's not only fun to explore as a creator, but also as a plugin developer. I was surprised how

Read note
Graeme FultonAug 26, 2024
Notes: Writing to think

Over the last few years, I've found myself writing less on the web. Post views, likes, and follower counts seem to encourage content produced primarily for engagement. AI tools then accelerate that same content type, so everything starts looking the same. Mayb

Read note