Back to projects

In plain English

A simple, locked-down Canva for small organizations with no designer. An admin sets the brand colours and logos once, then anyone on the team can arrange text and images on a page and export a clean PDF without breaking the look.

End-to-end · Solo build

Sattend

A custom Canva for small organizations without designers. Admins lock brand backgrounds, fonts, and colors. Team members create on-brand graphics inside those guardrails without breaking the visual identity.

ProductDesignFrontendBackend
Sattend · Design Simplified
Create branded visuals without design experience

Try it

Sign in and ship a branded graphic in 30 seconds

Free, Google sign-in, no install. Open the live editor and walk through background, text, image, export.

By the numbers

Live since

Apr 2026

Tested, unpromoted

Target users

Small orgs

Teams without designers

Element types

4

Backgrounds, images, text, shapes

Stack cost

Free

Supabase + Vercel free tier

Why I built this

Most small organizations (clubs, communities, internal teams) don't have a designer. They still need to make event banners, social posts, member graphics. The usual answer is Canva, but Canva is built for individuals making whatever they want. Brand drift is the default.

I wanted the opposite: a tool where an admin sets up a brand preset (locked backgrounds, whitelisted fonts, disabled features) and team members fill in the variable parts. On-brand by default, off-brand by impossibility.

Shipped April 2026 and tested it on myself. Never promoted it publicly because I haven't found the right organization champion yet. Pre-launch, but functionally complete.

Brand identity

Squiggle-mark lockups designed in-house. The squiggle stands for the freedom users have inside the locked brand container.

Sattend logo · vertical text with squiggle
Vertical lockup
Sattend logo · squiggle pattern
Pattern mark
Sattend logo · intertwined squiggle
Intertwined mark
Sattend logo · Design Simplified with large squiggle
Full lockup

How it works

1

Choose a background

Start with a solid color or linear gradient (angle adjustable). Upload a custom background image with blur and overlay controls.

2

Add images

Upload photos and logos to the canvas. Crop, scale, add borders, and adjust blur. Images are stored in Supabase Storage.

3

Add text and shapes

Place text layers with customizable fonts (lazy-loaded from Google Fonts), sizes, weights, and colors. Draw rectangles, circles, lines, and stars.

4

Arrange with layers

Reorder elements in the layers panel. Multi-select with Ctrl+Click, group with Ctrl+G. Full undo/redo history (30 steps).

5

Export

Download your design as a JPG. Save-to-gallery and template-saving are disabled today, coming soon.

Key features

Canvas editor

HTML5 Canvas with real-time preview, drag, resize, snap-to-center, and element selection

Multi-select & grouping

Ctrl+Click to select multiple elements, Ctrl+G to group them for synchronized movement

Undo / redo

30-step history with full state snapshots, Ctrl+Z keyboard shortcut

Admin presets

Admins create presets with locked backgrounds, whitelisted fonts, and disabled features

Role-based access

User, Admin, and Super Admin roles with server-side verification via Supabase RLS

Keyboard shortcuts

Ctrl+Z undo, Ctrl+G group, Delete remove, Shift+drag proportional resize

Tech stack

Frontend

ReactViteTailwind CSSRadix UIFramer Motion

HTML5 Canvas API with dual rendering: fast preview plus full-fidelity export. Google Fonts lazy-loaded on demand.

Backend

Supabase

PostgreSQL for presets/templates/users, Google OAuth, Storage buckets for uploads, Row Level Security for access control

Hosting

Vercel

Free tier, auto-deploy from main, Supabase handles all state

Under the hood

An admin sets up the brand once, locking the backgrounds, fonts, and colours, and then team members only see the choices they are allowed to make. Going off brand is not just discouraged, it is simply not possible.

Each person only ever sees and edits their own work, and those permissions are enforced on the server, not just hidden in the screen, so nobody can sneak past them.

Brand & creative

Marketing posters and animated creative

Brand poster, value-prop poster, and animated 9:16 creative generated with Pomelli, Google's AI brand toolkit, on top of the in-house squiggle identity above.

Sattend brand poster · Scale your businessBrand poster
Sattend value-prop poster · Zero skills requiredValue prop
Animated MP4

30-second walkthrough

From sign-in to exported JPG in under a minute

No install, no setup. Google sign-in, pick a preset or start blank, drag elements onto the canvas, export.

1

Sign in with Google

One-click OAuth via Supabase. Your designs are tied to your account, isolated by Row Level Security.

2

Pick a preset or start blank

Locked brand preset for on-brand work, or a blank canvas for sandbox designs. Five wizard steps walk you through the rest.

3

Export as JPG

Download your design as a JPG today. Save-to-gallery and reusable templates are coming soon.

Common questions

Is it free?+

Yes. Free Google sign-in, no install, no paywalled features. Built on Supabase + Vercel free tier, costs nothing to use today.

Why use this instead of Canva?+

Canva is built for individuals: maximum freedom, brand drift by default. Sattend inverts it: admins lock backgrounds, whitelist fonts, and hide features per preset, so members can only build inside the brand. On-brand by default, off-brand by impossibility.

Who is it for?+

Small organizations without a dedicated designer (clubs, communities, student orgs, internal teams) that need event banners and social posts without policing every output.

Can I bring my own fonts?+

Not yet. Fonts are lazy-loaded from Google Fonts, with admins whitelisting a subset per preset. Custom font upload is on the roadmap behind a licensing check.

What can I export?+

Today, JPG only. PNG and SVG are on the roadmap.

Is my data private?+

Yes. Google OAuth via Supabase, with Row Level Security enforced at the database layer and three roles (User, Admin, Super Admin) verified server-side. A client can't escalate by editing local state.

What I learned

  • ·Hiding a feature entirely beats showing it greyed out. A disabled button makes people ask why they cannot use it, while a feature that simply is not there raises no questions at all.
  • ·Finishing a tool is not the same as having anyone use it. The product is technically done, but without a real organisation behind it, that is research, not a launch.
  • ·The biggest gap was never the code, it was finding the first real customer to build around. That is the thing I would chase sooner next time.

What's next

Honest roadmap. Things I know are gaps, in priority order.

Find a champion organization

The biggest gap isn't code, it's adoption. The next move is convincing one small org with brand-control pain to actually use it, then iterating against real feedback. Without that, every roadmap item is speculation.

More export formats

Today only JPG. PNG for social (transparency), SVG for designers (vector edit), PDF for print, all on the roadmap. Each one is a separate canvas-to-format pipeline.

Custom font upload

Google Fonts cover most cases but not brand-specific custom faces. Needs upload + licensing checks before being safe to ship.

Mobile editor

Today the editor is desktop-only (canvas interactions assume mouse + keyboard). A mobile-first variant would unlock on-the-go content creation, but is essentially a second UI.

Let's talk about this project

More projects

ReactViteTailwind CSSRadix UIFramer MotionHTML5 CanvasSupabasePostgreSQLRLSGoogle OAuthVercel