Margins
A quieter marketplace where K–12 teachers buy and sell lesson plans. I designed and built all of it, and it is still in development.
- Role
- Brand, Design system, Full-stack build
- Client
- Dragonfruit Society, own product
- Year
- 2026
- Status
- In development, not launched
- Stack
- Next.js 16
- React 19
- TypeScript
- Tailwind 4
- Radix UI
- Supabase
- Stripe Connect
- OpenAI
- Cloudinary
- Resend
- Cloudflare Turnstile
- Vercel
- Vitest
- Playwright
The problem
Teacher marketplaces are loud. Near-duplicate listings pile up, and covers shout over each other for attention. Margins is the quieter room. It is designed so that every listing is reviewed before it goes live, and so that search understands both standards codes and plain words.
My role
I am the sole designer and builder. There is no team behind this, so the brand, the design system and the working product all come from one set of hands, which keeps them consistent.
What I designed
- The brand. A name, a “margin line” logo, and the tagline “Lessons worth keeping.”
- Voice rules. Colleague, not cheerleader. Plain words, sentence case, honest about money.
- A token-based design system. Notebook-paper colors (graphite, margin red, ruled blue and pencil yellow), Literata paired with Atkinson Hyperlegible, a 4px spacing scale, and light and dark themes.
- A 38-component library, each documented in its own README.
What I built
- A catalog, search, resource pages and seller storefronts.
- A listing editor, cart and checkout, and a buyer library.
- An admin area, a review-verification page, and methodology, license and content-policy pages.
- AI-assisted review of uploaded resources.
- Payouts to sellers through Stripe Connect.
- Watermarked downloads and branded transactional emails.
Craft and quality
The design system is enforced by the build, not just written down. A design-rule linter runs in CI and fails on raw color values or anything off the 4px scale. The tokens are generated from DTCG source files, so a color change happens in one place.
Accessibility is a target I test against, not a badge. The goal is WCAG 2.2 AA, and Playwright tests run axe accessibility checks across the app. I also wrote a UX audit of every route, then worked through the fixes: custom 404 and error pages, no disabled buttons without an explanation, and no sideways scrolling down to a 320px screen.
How it works
From upload to download
A teacher uploads a file
A seller adds a resource and its details in the listing editor.
An AI review checks it
The file is checked against a published rubric. The result can be looked up on a public verify page.
It is published and searchable
Search understands both standards codes and plain words.
A buyer pays
The platform splits the payment and pays the seller on a schedule.
The buyer downloads a copy
Each download is watermarked to the buyer who bought it.
Color
The project’s own palette. Every chip carries its name, hex value and job, so color is never the only signal.
- Graphite 900#25221FText and the primary button
- Paper#F7F7F5Page background, warm like notebook paper
- Margin red#E94E5AThe brand line in the logo and header
- Ruled blue#336CBELinks, focus rings and the verified mark
- Pencil yellow#FEBA2CHighlights and the price sticker
- Success green#04815DSuccess messages and free prices
Type
Lessons worth keeping.
Printable PDF, 32 pages, answer key included.
Both fonts are shown here as loaded files, not images, so you can select the text.
Where it stands
Margins is in development and has not launched. It has been built in eleven phases so far, and the latest are watermarked downloads and the buyer library. There are no users, sales or numbers to report yet. A separate promo site is the only public face for now.