Gotera
- Client
- Gotera
- Industry
- Subscription food commerce
- Year
- 2026
A subscription service delivering real injera, made and packed in Ethiopia, to doors in London. Recurring plans, delivery scheduling and a customer account, with the whole storefront managed from its own dashboard.
23
Tables behind plans, deliveries and accounts
2
Countries in one fulfilment flow
1
Dashboard for plans, content and customers
What it covers
- Subscription plans
- Recurring billing
- Delivery scheduling
- Customer accounts
- Allergen & product information
- Content dashboard
- FAQ management
A subscription is not a shop
A one-off order ends at checkout. A subscription has to survive months of changes: a plan upgrade, a paused month, a new address, a failed payment, a delivery window that no longer suits. Gotera is built around the recurring relationship rather than the single transaction.
Plans, deliveries and the gap between them
A plan is what somebody pays for. A delivery is what actually arrives. Keeping them as separate concerns means a skipped week does not corrupt the billing history, and a billing change does not silently rewrite what is already scheduled.
Made in one country, delivered in another
The product is made and packed in Ethiopia and delivered in London, so the site carries provenance as content rather than as marketing decoration: what teff is, how the injera is fermented, and why that matters to somebody ordering from abroad.
How it was built
- Framework
SvelteKit
Server load functions, form actions and endpoints; SSR by default.
Svelte 5
Runes for reactivity ($state, $derived, $effect).
- Language
TypeScript
Strict mode across app and server code.
- Data
MySQL
Primary datastore.
Drizzle Kit
Committed SQL migrations rather than push-to-prod diffing.
Drizzle ORM
Typed schema and queries, with migrations generated from the schema.
- Auth
Better Auth
Session-based auth with server-side verification.
- Forms
Superforms
Progressive-enhancement forms with server-side validation.
Zod
One schema validating both client and server.
- UI
Tipex
Rich-text editor for CMS content.
TanStack Table
Sorting, filtering and pagination for admin tables.
Bits UI
Headless primitives behind the component library.
Chart.js
Reporting charts.
Dark mode
System-aware theme switching.
Lucide
Icon set.
Tailwind CSS
Utility-first styling with a project design token layer.
- Reporting
jsPDF
Server-side PDF generation for reports and receipts.
jsPDF AutoTable
Tabular report export.
- Payments
Stripe
Card payments.
- i18n
Paraglide i18n
Compiled translations, English and Amharic.
- Infrastructure
Client image compression
Uploads compressed in the browser before hitting the server.
Nodemailer
Transactional email over SMTP.
Inside the system