# Premium Culinary Creator Platform

> Συνδρομητική πλατφόρμα όπου δημιουργοί γαστρονομίας δημοσιεύουν συνταγές και προτάσεις υπηρεσιών, με σύστημα πόντων σε λογιστική βάση.

- Canonical HTML: https://www.digiminds.gr/work/culinary-creator-platform
- Markdown representation: https://www.digiminds.gr/ai/el/work/culinary-creator-platform.md
- Language: el-GR
- Alternate language HTML: https://www.digiminds.gr/en/work/culinary-creator-platform
- Alternate language Markdown: https://www.digiminds.gr/ai/en/work/culinary-creator-platform.md
- Έτος project: 2026


## Επισκόπηση

A creator platform where votes cost real balance — so every rule about money, entitlements and voting had to hold under concurrency, not just in the happy path.

## Το πρόβλημα

Culinary creators publish recipes and service proposals to a paying audience. Readers spend a voting balance to back what they like, creators earn from being backed, and what each side may do depends on the package they hold — so the product is a content platform and a small economy at the same time.

## Στόχος

Ship an engineering MVP where the money paths are provably correct: subscriptions, entitlements, wallets and voting all enforced server-side, with the rules in configuration rather than scattered through the code.

## Ρόλος

Freelance engagement: built the platform end to end — data model, service layer, interface, payments and the verification tooling.

## Οι δυσκολίες

- A vote spends balance, so it is a financial transaction, not a click: insufficient balance has to reject cleanly and two simultaneous votes on the same key must not both succeed.
- Entitlements are sold, so what the interface offers and what the server enforces cannot drift apart — every displayed benefit needs a real server-side implementation behind it.
- Billing arrives asynchronously by webhook, which has to be signature-checked, deduplicated and able to revoke access when a payment is disputed.
- A schema this size only stays trustworthy if the migration chain reproduces the deployed database exactly, rather than being patched by hand along the way.

## Η λύση

- Votes are an immutable ledger with a rebuildable aggregate: the vote, the voter's debit, the aggregate update and the credit to the recipe owner all commit in one transaction, or none of them do.
- Subscription entitlements resolve through a single config-driven service, with a database-level invariant that a profile can hold only one active package at a time and package switches preserve history.
- Media lives in a private object store, uploaded and displayed through presigned URLs so files are never public and never pass through the app server.
- Domain logic sits in a service layer with thin API route handlers, so the same backend can serve a mobile client later without a rewrite.
- One responsive app from phone to desktop rather than separate mobile and desktop builds.

## Στοιχεία

- **team:** Solo
- **status:** In development

## Τεχνολογίες

- Next.js
- TypeScript
- Clerk
- Neon Postgres
- Drizzle ORM
- Cloudflare R2
- Stripe
- Tailwind CSS
- Zod
- Vercel

## Source notes

This Markdown representation is generated from the same project data used by the DigiMinds case-study page. It does not add performance metrics, client claims, or outcomes that are not present in the project source.
