“It’s somewhere in the chat.”
Three years of commissions and the finished pieces live in Telegram threads, Drive folders, and DMs you’d have to scroll for an hour to find. Sona gets them out, onto a site you own, with every piece credited and linked to the artist who made it.

sparky.ink · 140+ works · 90+ artists credited · 170+ stickers mirrored
Credit is the whole point
Upload a piece and the first question is who made it. Commissioned art, fursuit photos, mirrored sticker packs, con history: every tile links back to the artist. Credit is part of the upload flow, not a setting.
There’s no feed, no follower count, no visitor accounts. You’re the only login. It’s a website, the old kind.
One artist directory, shared between sites
Everyone commissions from a lot of the same artists, so Sona sites share a moderated registry: search it while crediting a piece and pull the artist in, or submit a new one back for everybody. Names, avatars, and handles get entered once and stay right everywhere. Opt-in, and never in your site’s page-load path.
For collectors, not artists
If you’ve spent a few years paying artists to draw your character, you have pieces spread across chats and folders everywhere. Sona is the collector’s side of the transaction: one place for the work, with the artists’ names attached.
Artists already have their side
FurAffinity, Weasyl, portfolio sites: that’s the artist’s half, and Sona doesn’t try to be it. What artists get here is quieter. Every Sona site showing their work links back to them, with handles the registry keeps current.
Set up in an evening, mostly from your browser
Sona is a template repo, not a service. Fork it into your own GitHub account and paste four commands into a terminal; the setup script provisions Pages, D1, and R2 on your own Cloudflare account. That part takes about five minutes, and it’s safe to re-run.
Everything after happens in your browser. The first-run wizard walks you through your password, site name, and theme, and updates arrive later through GitHub’s fork sync with migrations applied exactly once. Never touched a terminal? The setup guide assumes nothing and shows every command.
# the 5-minute prelude: $ npm run setup ✓ Pages · D1 · R2 provisioned on your account → SETUP_TOKEN printed (use once at /admin/setup)
Seven sites run it today
Seven personalities, one template: sparky.ink · akito.dog · taro.surf · sheeb.net · deer.parts · yuja.ink · rechner.solutions
Sponsors
The $75/mo GitHub Sponsors tier includes your name, handle, and a link right here and in the repo.
Only public sponsorships are listed, and only by choice. On request, sponsors can appear under a different name, without a link, or not at all. Email hello@sona.fast.
See the sponsor tiersPricing
Open source under Apache-2.0, every feature. Runs on Cloudflare’s free tier; a personal gallery won’t come near the limits. You pay for your domain and nothing else.
We’re seriously considering running hosted Sonas: no terminal, no Cloudflare account, we host and update yours. The waitlist tells us how many people want it, and you’ll hear first if it happens.
Managed-hosting waitlist
Leave your email and you’ll hear first if managed hosting happens.
FAQ
Do I need to know how to code?
No, but you need to be comfortable pasting four commands into a terminal. The setup script does the provisioning and the first-run wizard does the configuration in your browser. If you’ve ever set up a Minecraft server, this is easier.
What does it cost to run?
Your domain (~$10/year) and that’s usually it. Cloudflare’s free tier covers Pages, the D1 database, and R2 image storage well past what a personal gallery uses.
What about NSFW work?
Mark a piece NSFW and the public site gates it behind a confirmation. And yes, hosting it is allowed: Cloudflare’s hosting policy only removes illegal material, and serving images from R2 is exactly the setup Cloudflare points media sites at. Legal adult art on your own account is fine. Keeping it legal and gated is on you.
What if something goes wrong during setup?
The setup script is safe to re-run; it skips anything that already exists. If a deploy fails, your fork’s Actions tab shows exactly which step went red, and re-running the job picks up from there. Still stuck? hello@sona.fast or the Telegram bot; a human answers.
What happens if Sona the project disappears?
Your site keeps running. It’s your fork, on your GitHub, deployed to your Cloudflare; there’s no central server to go down. You’d stop getting updates, and that’s the whole blast radius. The shared registry is opt-in and never in your page-load path.
How do updates work?
Your site is a fork of the main repo, so updating is one click: GitHub shows a “Sync fork” button when something new ships, and pressing it redeploys your site with the latest code. Database changes apply themselves during the deploy. Your art, settings, and content live separately from the code, so updates never touch them.
I’m an artist. Should I run one?
For your own portfolio, probably not; FurAffinity, Weasyl, or a portfolio site fits better. But if you also collect art of your own character, sure. Either way the registry helps you: it keeps your name and handles correct on every site that shows your work.
Stop scrolling for it.
Fork the repo tonight, be live before you go to bed. sheeb.net did.