Work / danny.engineering

danny.engineering

My engineering notebook: articles, short answers, free CSS and front-end tools, case studies, and an AI engineering course in progress.

Role
Writing, design and engineering
Status
Live
Stack
Next.js, TypeScript, Prisma, MDX
The danny.engineering website

The problem

I wanted one place for writing, small developer tools and past work instead of spreading them across separate sites. Over time it also became the home for a paid course, which needs sign-in, payments and lesson progress on top of a content site.

What I did

  • •Eleven browser tools, including gradient, box-shadow, border-radius, transform and animation generators, a colour converter and Doggo Ipsum.
  • •Articles published from Notion through its API, an Answers section of step-by-step guides, and a showcase of case studies.
  • •Course enrolment with Supabase sign-in, Prisma models for courses, lessons and progress, Stripe Checkout and webhooks, and an admin editor.
  • •The AI Engineer, a 15-module course with TypeScript and Python labs that run against a local Ollama model, plus a checker for lesson structure.

How it works

A pnpm and Turborepo monorepo with one Next.js app and the course content alongside it. Lessons are written in Markdown, imported into Postgres through Prisma and rendered with MDX, with a preview paywall and progress tracking for enrolled students. Payment is a one-off Stripe Checkout session, and the webhook handles purchases, refunds and re-purchases.

Decisions and trade-offs

  • •Lessons live in the database rather than being rendered from files, so they can be edited in the admin, and the importer never overwrites those edits.
  • •Course labs use a local Ollama model, so students need no API key and pay nothing to run them.
  • •The enrolment stack mirrors practically.dev, so both products work the same way.

Where it stands

The tools, articles, answers and showcase are live, and the course is being finished ahead of launch.

Need this on your team?

I take contract roles as a senior product engineer. Tell me about the team and the work.