Bambu Bar
Monitor Bambu Lab printers from your Mac menu bar: print progress, the live camera, AMS filament, alerts and desktop widgets. Bambu Bar for macOS 26+.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Jednoduchá webová appka pro živé hlasování během prezentací, školení a
porad. Moderátor založí hlasování bez registrace, sdílí krátký kód nebo
QR kód, spouští otázky a promítá výsledky. Účastníci se připojí přes
hlasuju.cz/KOD, žádný účet, žádné heslo.
Žádné WebSockets — účastnická i moderátorská stránka si stav prostě pravidelně stahují (polling každé ~2,5 s; veřejný stav má 1s CDN cache, takže stovky účastníků jedné přednášky = ~1 dotaz za sekundu do DB). Hlasování automaticky "vyprší" 30 dní po vytvoření (respektuje se při čtení, data v DB se nemažou; obrázky maže denní cron).
/vytvorit → dostane veřejný kód
(např. 381742) a tajný moderátorský odkaz (/m/<token>).hlasuju.cz/<kod> (ručně, nebo přes QR), počká
na aktivovanou otázku, klikne na odpověď.localStorage
účastníka + unikátní DB constraint (question_id, participant_id).
Není to neprůstřelný volební systém, jen ochrana proti běžnému
dvojímu kliknutí.prepared → active → ended. Moderátor ji spustí,
ukončí ("vyhodnocení" — účastníci vidí odkaz, hlasovat už nejde) a pak
spustí další. Ukončenou otázku jde s potvrzením znovu otevřít (hlasy
zůstávají). Účastníci nikdy nevidí nespuštěné otázky; finální výsledky
(/final-results) jsou veřejné až po ukončení celého hlasování./m/<token>/upravit): nespuštěné otázky jde měnit, přidávat,
mazat a přeřazovat i během prezentace; spuštěné otázky (nebo s hlasy) jde
jen přeřadit. Ukončené hlasování je uzamčené. Souběžné úpravy ve dvou
oknech chrání polls.version (starší verze se odmítne, nic se tiše
nepřepíše).content-api.darbujan.com), v DB je jen URL +
evidence uploadů (poll_images). Prohlížeč nahrává na náš endpoint
s moderátorským tokenem, server teprve pak posílá soubor do Content API
— API token nikdy neodchází do prohlížeče. Nové hlasování se proto
nejdřív vytvoří a editor obrázky nahraje hned potom.▶ Promítat v konzoli): celá obrazovka, ovládání
klávesnicí/prezentérem — mezerník = další krok, ←/→ (PageUp/PageDown)
= otázky, R = výsledky, Q = QR kód, F = celá obrazovka, Esc = zpět.Druhý režim hlasování (polls.mode = "self_service", výchozí a všechna
historická hlasování jsou "live"). Vytváří se na /pro-weby/vytvorit.
active) přes stejný endpoint, identitu účastníka a ochranu
jako živé hlasování. Moderátor anketu jen ukončí (spouštění/ukončování
otázek API odmítne).FOR UPDATE), takže souběžný hlas buď otázku zamkne,
nebo dorazí až po uložení (hlas pro smazanou odpověď skončí chybou 400)./api/polls/public/<kód>/final-results) vidí jen ten, kdo
už hlasoval (nebo všichni po ukončení). Pravidlo pro správnou odpověď:
během hlasování se neprozradí nikomu (ani hlasujícímu, ani v Open Graph
náhledu) — zobrazí se všem až po ukončení ankety moderátorem./<kód> má vlastní Open Graph (otázka, výzva, obrázek
/og/<kód>?v=<verze> 1200×630 bez výsledků a správné odpovědi) a je
noindex (Facebook náhled načte i tak). Živá hlasování mají dál obecná
metadata — jejich otázky jsou před spuštěním tajné./embed/<kód> (iframe): jediná route, kterou smí cizí web
vložit (frame-ancestors *); všechny ostatní stránky mají
X-Frame-Options: DENY + frame-ancestors 'none' (next.config.ts).
Bez navigace, banneru a analytiky. Když prohlížeč v iframe blokuje
úložiště třetích stran, widget hlasování nenabídne a odkáže na
hlasuju.cz (jinak by každé načtení = nové ID = další hlas).Limity ochrany (záměrně jednoduchá): jeden hlas na prohlížeč (ID v localStorage) + DB unique (otázka, účastník) + nejvýš 30 hlasů za hodinu z jedné IP do jedné ankety. Kdo smaže data prohlížeče, použije anonymní okno nebo jiné zařízení/síť, může hlasovat znovu; úložiště ve widgetu je oddělené podle webu, kam je vložený. Výsledky jsou orientační, ne reprezentativní průzkum (uvedeno i v UI). Kódy jsou 6místné — kdo zkouší kódy, najde jen veřejné otázky a hlasovat může; výsledky bez hlasu neuvidí.
rate_limits, fixní okna,
lib/rate-limit.ts) — funguje napříč serverless instancemi, žádná další
služba. Limity jsou velkorysé kvůli školám za jednou IP (600 hlasů/min
z jedné IP do jednoho hlasování, 30/min na jeden prohlížeč, 10 nových
hlasování / 10 min a 60 / den z IP, 60 uploadů / h na hlasování).
Při výpadku vrstvy limitů se požadavek pustí (fail-open).npm install
cp .env.example .env.local # doplň DATABASE_URL, viz níže
npm run db:migrate
npm run dev
# → http://localhost:3000
以上為 README 的開頭部分。其餘內容請閱讀原文。 檢視完整 README ↗