what it is
In 2024 I founded a non-profit life drawing community in Hackney. We meet weekly to practise and improve the fundamentally human skill of life drawing — attention, concentration, and admiration of the figure. In an age of AI-generated imagery, deliberately nurturing the slow, embodied, human skill of observational drawing feels important.
The community is the business. It has real logistics: venues, models, ticketing, payment processing, customer support, marketing, attendance tracking, a growing social following, and a mailing list. It is not a toy — it runs in production, it has real users, and things breaking has real consequences.
That's exactly the point. lifedrawing.art is a deliberate strategy to force continuous learning under production conditions, without commercial risk to an employer.
the technology angle
Every architectural decision is chosen to explore something. The platform is highly decoupled — no monolith, no CMS with a built-in everything — just purpose-fit services wired together with clean interfaces. This creates natural seams where things can be swapped, upgraded, or replaced individually.
The stack is intentionally diverse and evolving. What follows is what it looks like today.
architecture & integrations
Hosting & delivery
- Netlify — static site hosting with continuous deployment from Git. The site is a JAMstack build (Eleventy) — fast, cacheable, no server to manage.
- Netlify Edge Functions — serverless logic at the CDN edge: personalisation, request routing, and lightweight API proxying without a cold-start penalty.
- Imgix CDN — image delivery and transformation pipeline. All photography is served through Imgix, which handles resizing, format conversion (WebP/AVIF), and responsive srcsets on demand. No manual image processing.
Media & self-hosted infrastructure
- Immich — self-hosted photo management server running on local hardware. Stores and organises the session photography library. Exposed securely to the public internet via Cloudflare Tunnel — no open ports, no VPN.
- Cloudflare Tunnel — provides secure, authenticated service tunnels for both the Immich media server and the self-hosted N8N node. Traffic is proxied through Cloudflare's network with zero-trust access rules, keeping sensitive services completely off the public internet while remaining reachable by automation workflows.
- Self-hosted N8N — the automation and orchestration core (see below). Runs on local hardware, accessible via its own Cloudflare Tunnel.
Ticketing & payments
- Stripe — payment processing for direct ticket sales and membership. Webhooks feed into the N8N automation layer to trigger downstream actions on purchase confirmation.
- Eventbrite — public event listings and ticket sales for session discovery. Eventbrite's API is polled by N8N to sync attendance data downstream.
- Ticketailor — additional ticketing channel integrated into the same automation pipeline.
Operations & performance management
- Google Sheets API — used for two distinct purposes: calendar management (session planning, venue scheduling, model bookings) and performance management (attendance trends, revenue by session, marketing channel attribution). Sheets acts as a lightweight operational database that non-technical collaborators can also read and write.
AI & automation (N8N)
- AI customer chatbot — N8N workflow using a Gemini chat agent to handle FAQ-style inbound messages. The bot resolves routine queries autonomously and escalates non-trivial or ambiguous messages to a human, rather than attempting to answer everything. This distinction matters — a bot that confidently answers wrongly is worse than one that knows its limits.
- Instagram automation — N8N manages the full Instagram posting pipeline: content scheduling, caption generation, hashtag strategy, and posting via the API. This automation has produced measurable micro-viral engagement on targeted posts — an unexpected discovery that changed how I think about timing and frequency.
- Newsletter automation — email newsletter production and dispatch is automated via N8N, triggered by event milestones (new session published, attendance threshold reached, etc.).
- JIT marketing — event marketing across Eventbrite, Ticketailor and the newsletter fires automatically based on event lifecycle triggers, not manual reminders. Just-in-time, not just-in-case.
SEO & discoverability
- JSON-LD structured data — every event page includes JSON-LD markup for Google's Event schema, enabling rich search results (event cards, dates, ticket links) directly in Google Search. This is hand-rolled into the Eleventy templates, not delegated to a plugin — which means complete control over the schema shape and the ability to validate against the spec directly.
what it has taught me
Running a real business — even a small, after-hours one — makes you encounter problems that tutorial projects never surface. Some examples:
- Reliability matters differently when real people are trying to buy tickets for a real event and the webhook fails at 7pm on a Thursday.
- AI agent hygiene became a practical concern, not a theoretical one, when the chatbot started confabulating session details it hadn't been given.
- Automation debt is real — when N8N workflows grow organically they become hard to audit. I now design workflows with explicit logging, clear node naming, and error branches from the start.
- Token cost awareness — running Gemini calls at scale for Instagram caption generation revealed that naive prompts are expensive. Prompt compression and caching patterns came from real invoices, not benchmarks.
the underlying motivation
The availability of AI tooling, edge computing, and cheap self-hosting has made it genuinely possible for one person to run infrastructure that previously required a small team. lifedrawing.art is my ongoing experiment in what that actually means in practice — not in a sandbox, but against real user expectations, real payments, and a real community that shows up every week.
The answers are usually more interesting than the questions I started with.