尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Online dárkové boxy s poukazy v PDF. Příjemce otevře odkaz (např. https://darky.cz/bekalo-mitusa),
zadá heslo a ve stanovený čas si dárek „rozbalí“. Dárky se balí v Ježíškově dílně na /dilna, kterou si může založit kdokoli.
/dilna si ji kdokoli založí jedním kliknutím (název a e-mail jsou nepovinné) a dostane tajný odkaz …/dilna#klic=…. Odkaz je jediný klíč: kdo ho má, může dárky upravovat, takže jde i sdílet. V dílně se dá kdykoli zobrazit a zkopírovat, nebo vyměnit za nový (starý přestane platit a ostatní zařízení se odhlásí). Na zařízení, kde se odkaz jednou otevřel, zůstane přihlášení rok. Dílnu jde smazat i se všemi boxy a PDF.bekalo-mitusa), dobře se čte i opisuje. Kód jde kdykoli vygenerovat znovu.web/ frontend (Vite): index.html = příjemce, admin.html = dílna, assets/
api/index.js Vercel serverless funkce – vstup pro celé /api/*
server/ Node backend: app.js (API), security.js, storage/ (fs | Upstash+Blob),
standalone.js (vlastní server), node-adapter.js, env.js
php/ PHP backend se stejným API (PHP 7.4+, Apache + mod_rewrite)
scripts/ build-php.mjs, test.mjs
tests/api.mjs end-to-end testy API (běží proti Node i PHP)
vite.config.js build + dev server s API
vercel.json nastavení Vercelu (build, přepisy adres, hlavičky)
| Příkaz | Co dělá |
|---|---|
npm run dev | Vite na http://localhost:5173 i s API (data do ./data), dílna na /dilna |
npm run build | frontend do dist/ (to nasazuje Vercel) |
npm run build:php | hotová složka build/php/ pro PHP hosting |
npm start | samostatný Node server nad dist/ (VPS, Docker) |
npm test | testy API proti Node backendu (souborové úložiště + Redis/Blob v paměti); npm test -- <url> proti libovolnému běžícímu backendu, např. PHP |
Data jsou mezi backendy přenositelná (stejný JSON i formát hashů hesel). Popis API je v API.md.
Jednorázové nastavení:
vercel.json (Vite).KV_REST_API_URL a KV_REST_API_TOKEN (nebo UPSTASH_REDIS_REST_*). Fungují obě varianty.BLOB_READ_WRITE_TOKEN.present → present_KV_REST_API_URL), aplikace proměnné najde sama. STORAGE_ENV_PREFIX=present je potřeba jen tehdy, když je v projektu připojených víc Redis databází. Všechny klíče v Redisu začínají na xd:, takže se s jiným projektem nepotkají. Jiný začátek jde nastavit přes REDIS_KEY_PREFIX.APP_SECRET = dlouhý náhodný řetězec (openssl rand -base64 32), povinnýSIGNUP_CODE, pokud nechceš, aby si dílnu mohl založit kdokoliPak už každý push do main nasadí produkci a každá jiná větev nebo PR dostane náhledovou adresu.
Dílny se zakládají na https://<projekt>.vercel.app/dilna.
Limit PDF na Vercelu je 4 MB. Víc Vercel funkce v jednom požadavku nepřijme. Změní se proměnnou
MAX_UPLOAD_MB, ale nad ~4,5 MB to nepomůže. Při veřejném Blob úložišti nastavBLOB_ACCESS=public. Soubory se i tak posílají jen přes API, adresa blobu se nikam nedostane.
npm ci
npm run build:php # → build/php/
build/php/ (včetně .htaccess) nahraj přes FTP do webrootu nebo podsložky.config.sample.php → config.php a vyplň APP_SECRET (případně SIGNUP_CODE).DATA_DIR mimo veřejný webroot. Když zůstane uvnitř, chrání ho .htaccess.mod_rewrite (běžně ano) a PHP 7.4 nebo novější s json, mbstring, hash.upload_max_filesize a post_max_size.Lokální zkouška: cd build/php && php -S localhost:8000 router.php.
cp .env.example .env # vyplň APP_SECRET
npm ci && npm run build
npm start # http://localhost:3000, data v ./data
Za reverzní proxy (nginx, Caddy) posílej X-Forwarded-Proto, aby cookie dostala příznak Secure.
APP_SECRET, aby šel odkaz v dílně znovu ukázat. Klíč je v části adresy za #, takže se neposílá na server v adrese a nezůstane v jeho logech. Po přihlášení ho stránka z adresního řádku hned odstraní.X-Admin chrání proti CSRF.MAX_GIFTS boxů (50) a MAX_STORAGE_MB místa na PDF (100 MB). Volitelný SIGNUP_CODE omezí zakládání dílen.