尚未检测到更新。GitHub 发布版本后会显示在这里。
SprintSpaces — projekty, zadania i zgłoszenia w jednej przestrzeni. Darmowe wdrożenie testowe.
翻译准备中
正在加载完整 README。
查看完整 README ↗Publiczna strona sprzedażowa SprintSpaces, utrzymywana w GitHub Pages. Kod prywatnej aplikacji pozostaje w osobnym repozytorium.
python3 -m http.server 4173 --bind 127.0.0.1
Otwórz http://127.0.0.1:4173/. Strona nie wymaga kompilacji ani zależności. GitHub Pages publikuje katalog główny gałęzi main.
Polska strona zachowuje dotychczasowy adres /, a angielska jest dostępna pod
/en/. Obie mają pełną treść w HTML, własny canonical i wzajemne odnośniki
hreflang (pl, en, x-default). Sitemap zawiera oba adresy. Nie przekierowujemy
automatycznie na podstawie języka przeglądarki: wybór jest zawsze dostępny w nagłówku,
także bez JavaScript. Przy włączonym JS przełącznik zachowuje aktualną sekcję.
Źródłem wspólnego układu są polskie pliki index.html, prywatnosc.html i
brand/index.html. Tłumaczenia znajdują się w locales/en.json, z polską treścią
jako kluczem. Po zmianie treści lub układu uruchom:
python3 tools/build-locales.py
python3 tools/build-locales.py --check
python3 -m unittest discover -s test -p '*_test.py'
node --test test/*.test.mjs
Generator używa wyłącznie biblioteki standardowej Pythona. Tworzy en/index.html,
en/privacy.html, en/brand/index.html i locales/runtime-en.mjs. Te pliki są
wersjonowane i nie należy edytować ich ręcznie. Brak tłumaczenia przerywa generowanie;
CI sprawdza, czy wygenerowane pliki są aktualne i czy linki lokalne są poprawne.
GitHub Pages nadal serwuje gotowe pliki bez etapu budowania na serwerze.
Teksty interaktywne używają t('Polska treść') z i18n.mjs; argumenty dynamiczne
mają postać {seconds} i są przekazywane jako drugi argument. Generator wybiera
te dosłowne klucze do niewielkiego słownika runtime. Stałe pierwszego logowania
i estymacji dema są uwzględniane osobno. Język pochodzi z html lang.
Demo korzysta ze wspólnego storage dla obu ścieżek, więc zmiana języka nie tworzy
nowej instancji. tools/configure-demo.mjs aktualizuje adres API w obu wersjach.
Angielska strona ma własny obraz udostępniania assets/social-card-en.png
(źródło wektorowe: assets/social-card-en.svg). Zrzuty aplikacji pozostają
oryginalnymi zrzutami polskiego interfejsu, co opisują angielskie podpisy.
Prywatność i materiały marki zachowują dotychczasowe noindex; pełna techniczna
specyfikacja marki w Markdown pozostaje po polsku i jest odpowiednio oznaczona.
index.html, styles.css, app.js: responsywna strona, galeria sześciu widoków, powiększanie, kontakt.assets/screenshots/: rzeczywiste zrzuty aktualnej aplikacji na fikcyjnych danych. PNG to oryginały, WebP to wersje do strony.brand/: identyfikacja i pliki dla mailingu; brand/BRAND.md jest specyfikacją.https://formspree.io/f/xdavweok. Ma natywne POST jako fallback, walidację HTML, pułapkę antyspamową oraz obsługę odpowiedzi AJAX. Nie wysyłać testowych zgłoszeń do właściciela bez potrzeby; weryfikować odpowiedzi przez lokalny mock.Sekcja „Wypróbuj” nie wymaga wyboru sposobu logowania: nowe publiczne demo używa profilu plain, bez obowiązkowej zmiany hasła i2FA. Sekcja (#demo) rozmawia z usługą z repozytorium SprintSpaces/Demo (trzy punkty: POST /v1/demos, GET /v1/demos/{job}, GET /v1/stats). Adres usługi jest w <meta name="demo-api" content=""> w index.html;
pusty = sekcja jest wyłączona (komunikat „Demo jest chwilowo niedostępne”) i nic nie jest wysyłane. Ustaw go dopiero, gdy usługa działa i jej DEMO_ALLOWED_ORIGINS zawiera https://sprintspaces.github.io.
Każda nowa instancja jest usuwana po15minutach bezczynności w aplikacji; przy braku RAM może czekać na zasoby. Nie ma parametru zmieniającego adres usługi w locie. Licznik „aktywne N/3” i „uruchomiono łącznie” pochodzą z usługi. Logika jest w demo-core.mjs (testy: node --test test/*.test.mjs), widok w demo.js, wygląd w demo.css.
Do oglądania w przeglądarce bez usługi: node tools/mock-demo-api.mjs serwuje stronę z atrapą usługi i scenariuszami (/__scenario?name=full|rate|offline|expired|badurl|normal|slow|waiting|failed).
Możliwości potwierdzone w README i dokumentacji prywatnej aplikacji: Kanban/Scrum, projekty i etapy, oś czasu, kalendarz, akceptacje, kontrola dostępu, ewidencja czasu, raporty, Microsoft 365, Spinka/ElevenLabs, MCP i REST API.
Migracja jest elementem przygotowywanego wdrożenia: Excel oraz Google Sheets po eksporcie i mapowaniu. Konfigurowalna synchronizacja dotyczy Excela na SharePoint/OneDrive. Nie obiecywać uniwersalnego konektora Google Sheets, niezweryfikowanej wydajności ani liczbowego minimum RAM/CPU.
Po odbiorze rzeczywistego backendu ustaw publiczny adres przez
node tools/configure-demo.mjs https://PUBLICZNY-BACKEND.
Skrypt najpierw wymaga prawdziwego HTTP200 /v1/stats, limitu3, ttl_seconds900 oraz expiry_policy=idle/idle_timeout_seconds900
oraz CORS dokładnie dla https://sprintspaces.github.io; dopiero potem zmienia
meta w index.html oraz en/index.html. Testy skryptu używają atrap i nie uruchamiają dem.
Strona wywołuje publiczne POST /v1/demos. Podpisany /v1/hooks/demo jest
wyłącznie dla wywołań serwer–serwer; jego sekret nigdy nie trafia do HTML/JS.
Sama kontrola stats/CORS nie zastępuje próby start→readiness→logowanie→expiry→cleanup.
demo-launch.mjs przechowuje stałą estymację 34 s (±3 s). Podstawa: rzeczywista
instancja Mikrus z 25.10.2026, od created_at 18:54:10 UTC do ready_at 18:54:44 UTC.
To pojedynczy pomiar przykładowy, a ±3 s jest tolerancją prezentacji, nie statystyczną
obietnicą. Ponowna próba z 19:12 UTC zakończyła się błędem przydzielenia domeny,
więc nie została użyta jako pomiar udanego startu.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗