Drawdle
TODO un-llm the translation
Když se jeden z mých kamarádů začal věnovat kreslení, cítil jsem potřebu vytvořit platformu, která by nám umožnila sdílet naše veledíla hravou formou. Výsledkem je Drawdle – webová aplikace, která podporuje kreativitu prostřednictvím svých systémů kreslení a hlasování. Uživatelé mohou zasílat své vlastní kresby, účastnit se tematických kreslících výzev („Draweeks“) a hlasovat o svých oblíbených příspěvcích a nadcházejících tématech. Zdrojový kód je k dispozici na GitHubu.
Klíčové funkce
Jádro Drawdle se točí kolem tematických kreslících výzev nazvaných „Draweeks“. Každý týden se automaticky vytvoří nový Draweek spolu s hlasováním, přičemž téma je vítězné z předchozího týdne.
Uživatelé vytvářejí a odesílají kresby a komunita o nich následně hlasuje. Aplikace sleduje aktivitu uživatelů a jejich sérii příspěvků, což přidává zábavný soutěžní prvek.
Webová aplikace je také mobilní PWA a bombarduje uživatele push notifikacemi o nových tématech Draweek a hlasování, aby zůstali v obraze.
Aplikace je postavena v Next.js a používá UploadThing pro nahrávání obrázků s komponentami jako UploadButton a UploadDropzone. PostgreSQL ukládá všechna data aplikace. Clerk se stará o autentizaci uživatelů s middlewarem chránícím určité cesty. A web-push se používá k doručování notifikací v reálném čase.
Jak to funguje
Vygeneruje se nové téma Draweek a zahájí se hlasování. Uživatelé nahrávají své kresby, které jsou uloženy v databázi a přiřazeny k aktuálnímu Draweeku. Uživatelé poté hlasují o svých oblíbených příspěvcích a dostávají oznámení o nových Draweecích a výsledcích hlasování. Vítězný hlas z předchozího týdne se stává tématem pro nový Draweek, čímž se vytváří nepřetržitý cyklus.
Poznámka pod čarou
Ačkoliv to byla zajímavá zkušenost, vývoj tohoto projektu trval příliš dlouho. Jelikož jsem v té době měl stáž, měl jsem málo volného času, a než jsem to dostal do funkčního stavu, kamarádova kreslící fáze už pominula.
Přesto to byla skvělá příležitost ponořit se do Drizzle ORM, Clerku pro autentizaci a Web Push API. Naučilo mě to spoustu o tvorbě aplikací od nuly, i když načasování bylo trochu mimo.