Video Hosting Kit — for course creators selling their own courses

Your course videos on YOUR Cloudflare — not inside a platform that taxes every sale

Teachable takes 7.5% of every sale on its cheapest plan. Thinkific caps video at 100–400 GB/month. Vimeo hard-stops at 2 TB. Meanwhile, the same course on Cloudflare R2 costs about $0.08 in a month when 100 students watch a 5 GB course — and delivery is free. This kit converts the mp4 files you already have into a branded course player with chapters, playlist, resume, and embed pages — running on infrastructure you own. One payment of $42 — then your hosting bill is cents, not a platform rent.

Get the kit — $42
One-time payment · ≈ ฿1,450 · free updates for v1.x · instant download
Instant download · 30-day refund, no questions · human reply within a day · secure checkout by Stripe
Every Zicula kit ships with its own key art — this one's yours.

What's inside the kit

One zip, no npm install, no database, no vendor login. A zero-dependency Node generator turns two JSON files into a complete, self-contained course player site — your brand on every pixel.

Course player

Single-file player, your brand

The generator builds one self-contained index.html: playlist, clickable chapters, resume-where-you-left progress, keyboard shortcuts, next-lesson autoplay. Inline CSS/JS only — no frameworks, no analytics, nothing phoning home.

R2 upload script

Your mp4s onto Cloudflare R2

A ready script uploads your files with the right content-type and cache headers, and skips anything already uploaded — re-run it after every recording session. Real cost tables (verified 2026-09-19) included.

Chapters & embeds

Timestamps + per-lesson embed pages

Write chapters as plain "0:00 Title" lines — the player turns them into clickable seek markers. Every lesson also gets a bare embed page you can iframe into blog posts and sales pages.

Expiring links

Optional signed-link Worker

A small Cloudflare Worker serves your videos only through expiring HMAC-signed links — a shared link stops working on its expiry date. Plus a one-line CLI to issue links per buyer. Honest scope: it stops casual resharing, not screen recording.

Pricing playbook

Sell access without the platform fee

Two honest gating models (static gated link, or per-buyer expiring links), price anchors against Teachable/Thinkific/Vimeo, and the exact list of things never to claim — so your copy stays true as you scale.

One creator

License + quickstart README

A single-creator commercial license: build and sell unlimited courses of your own. A short README takes you from unzip to a working demo player in about ten minutes.

Buyer quickstart, from zip to a demo player in about ten minutes
Buyer quickstart — zip to demo player in ten minutes
SETUP guide with the real R2 cost tables
The SETUP guide's real cost tables (R2 vs Stream vs Bunny)
The generated course player with playlist and chapters
The generated player: playlist, chapters, resume, embed links
The 14-day launch playbook
PLAYBOOK-14D — zip to a launched course in 14 days
Pitch and pricing guide with the honest-claims list
pitch-and-pricing — sell access without the platform fee

Real files from the zip, rendered as-is — no mockups.

Who's behind this?

Zicula is a one-person studio — hi, I'm Zic. Every kit here, including this one, is written, tested and shipped through documented process, and the support email is answered by me, not a helpdesk. This store's own build, QA and deploy pipeline runs on the same kind of SOPs and checklists we sell.

  • Free sample, instant download — no email required.
  • 30-day refund, processed in Stripe — no forms, no interrogation.
  • Free updates for v1.x — full history in the store changelog.
  • Real human support: [email protected]

The math that made creators leave platforms

Official prices, checked 2026-09-19 — re-check them before you quote them in your own launch copy.

Option What it costs you The catch
Teachable $29/mo (billed yearly) + 7.5% transaction fee on the cheapest plan Every $100 course sale loses $7.50 — forever
Thinkific $40–219/mo plans Video bandwidth capped at 100–400 GB/month by tier
Vimeo $12–65 per seat/mo 2 TB/month delivery hard stop
Your R2 bucket (this kit) $0.015/GB-month storage · delivery free · a 5 GB course ≈ $0.08/mo after the free tier You run checkout and access yourself — the playbook shows the simple way

How it works

Three steps from zip to a course player on your own domain.

Step 1

List your lessons

Put each video's URL, title, and chapter lines into videos.json. The demo entries use public sample videos, so the player works before you upload anything.

Step 2

Upload to R2, generate the site

Run the upload script once per recording session, then node generator/build_site.mjs. Out comes a single-file player plus one embed page per lesson — deterministic, rebuild any time.

Step 3

Publish and sell

Deploy the folder to any static host (Cloudflare Pages is free), gate the path your way, and keep 100% of every sale — the pricing playbook shows both gating models.

What this kit honestly does — and doesn't

Expiring signed links stop casual resharing. A buyer who posts their link somewhere finds it dead on the expiry date, and edited links fail the signature check. That is the honest protection level of this kit.

It is not DRM. Nothing stops a determined viewer from recording their screen — no mp4-based system can. The kit also does no transcoding: R2 serves your mp4 as-is, so export web-ready files. If you need adaptive HLS, SETUP.md compares Cloudflare Stream and Bunny Stream with real prices — everything else in the kit still applies.

You bring the accounts. You need a Cloudflare account (R2 has a free tier) and your own checkout. The kit ships the video layer: player, chapters, embeds, upload, links — not a hosted service.

Is this kit for you?

A straight answer before you buy — a mismatched purchase costs both of us more than a lost sale.

This is for you if…

  • You sell your own course videos and want them on your own domain, under your brand.
  • You can run one Node command and edit a JSON file — no coding beyond that.
  • You have web-ready mp4 files already, or can export them (H.264 + AAC).
  • You want delivery in cents — free egress, no per-student fee, your own Cloudflare account.

Not for you if…

  • You need DRM. No plain-mp4 setup can stop screen recording, and this kit does not pretend otherwise.
  • You want automatic quality switching (adaptive HLS) — R2 serves mp4 as-is; SETUP.md compares Stream/Bunny if you need it.
  • You expect a hosted platform with student accounts and built-in checkout — the kit ships files you run yourself.
  • You have never opened a terminal and don't want to start — the workflow is one command plus JSON edits.

One price. You own it.

No monthly plan, no per-student fee, no transaction cut on your course sales.

$42 one-time payment

≈ ฿1,450

  • Free updates for v1.x
  • Instant download after checkout
  • Single-creator commercial license — unlimited courses
  • Zero dependencies — your infra, no lock-in

Secure checkout via Stripe · card payments · taxes calculated at checkout

Instant download · 30-day refund, no questions · human reply within a day · secure checkout by Stripe

Not sure yet? Try a free sample

Three real files from the kit, trimmed to taste: the full R2 cost table with worked examples (100 students ≈ under $1/month), Days 1–5 of the 14-day launch playbook, and the range-request parser from the signed-link Worker. Instant download — no email needed.

Frequently asked questions

What exactly do I get, and what does it require?

A zip with a zero-dependency Node generator (course player + embed pages), the R2 upload script, the optional signed-link Worker and its CLI, cost tables, a customization guide, a pricing playbook, and a single-creator license. You need Node 18+, a Cloudflare account with R2 enabled (free tier covers a small course), and your own mp4 files that you have full rights to.

What can I do with the license?

One single-creator commercial license: build, host, and sell an unlimited number of your own video courses with everything in the kit, on your own infrastructure. The one line: you cannot redistribute or resell the kit files themselves. Full terms are in LICENSE.txt inside the zip.

Are updates free?

Yes — every v1.x release is a free re-download from your buyer download page, and each release is listed in the store changelog with what changed. No subscription, no update fee.

What does support look like?

You email the address on your receipt and the person who built the kit replies — usually within a day. Support covers using the kit: generator errors, R2 setup, signed links. It does not cover creating your course content or your checkout integration.

What format do my videos need to be?

Web-ready mp4: H.264 video + AAC audio. R2 serves your file as-is with no transcoding, so export before uploading — 1080p at roughly 8 Mbps is plenty for talking-head and screencast lessons. SETUP.md §1 explains when an adaptive-HLS service (Stream, Bunny) would suit you better.

What will hosting really cost me?

Cloudflare R2 official prices (checked 2026-09-19): $0.015 per GB-month of storage, Class B reads $0.36 per million, and egress — delivery to your viewers — is free. The free tier includes 10 GB-month storage and 10 million reads monthly. Worked example from the kit: 100 students fully watching a 5 GB course in a month ≈ $0.08. Cloudflare rounds usage up and prices can change — verify on the official R2 pricing page before you publish numbers of your own.

Does it stop people downloading my videos?

Honestly: it stops casual link-sharing, not downloads. The optional signed-link Worker makes links expire and rejects edited URLs, so a link pasted into a group chat dies on its expiry date. It is not DRM — a determined viewer can screen-record, and any mp4 system shares that limit. We would rather tell you this now than have you find out after buying.

I currently embed YouTube — why switch?

Free embeds are fine until you sell a course: the player shows ads and recommended videos next to your paid content, YouTube is blocked entirely in some countries (and face age-restriction waves elsewhere), EU visitors get a consent wall from third-party tracking, and you cannot make a video private to buyers. This kit puts the same file on your own domain with none of those layers — you own the player around it.

What is the refund policy?

If the kit doesn't fit how you work, email [email protected] within 30 days of purchase and we'll refund you in full — the zip is yours to keep or delete. One refund per purchase; we only ask for optional feedback.

Your next course sale could keep 100% of the price

$42 one-time · ≈ ฿1,450 · free updates v1.x · instant download

Get the Video Hosting Kit — $42

30-day refund, no questions — the zip is yours to keep either way.