VulCode
Blog

Słownik pojęć IT i e-commerce

Krótkie, konkretne definicje pojęć z projektów IT, każda z przykładem z naszej pracy: KSeF, API, webhook, PWA, hreflang, MVP, headless CMS i więcej.

VulCodeVulCode34 min czytania
Słownik pojęć IT i e-commerce - VulCode

Faktury, płatności i sprzedaż

KSeF, bramki płatności i to, co dzieje się z pieniędzmi po kliknięciu "Zapłać".

KSeF

KSeF to Krajowy System e-Faktur, przez który firmy w Polsce wystawiają i odbierają faktury ustrukturyzowane.

Od 1 lutego 2026 r. faktury w KSeF wystawiają firmy, których sprzedaż w 2024 r. przekroczyła 200 mln zł, a od 1 kwietnia 2026 r. pozostałe. Faktura istnieje w obrocie dopiero wtedy, gdy KSeF ją przyjmie i nada jej numer KSeF.

Do KSeF można wysyłać faktury ręcznie w aplikacji Ministerstwa albo automatycznie przez API 2.0, z własnego systemu sprzedaży, księgowego albo ERP.

Jak to działa

  1. Uwierzytelnienie. System loguje się tokenem KSeF albo certyfikatem w kontekście NIP firmy.
  2. Sesja i szyfrowanie. Faktura w XML jest szyfrowana kluczem AES-256, zaszyfrowanym kluczem Ministerstwa.
  3. Weryfikacja. KSeF sprawdza schemat FA(3) i treść, a duplikat rozpoznaje po skrócie pliku.
  4. Numer KSeF i UPO. Przyjęta faktura dostaje numer KSeF, a sesja kończy się poświadczeniem odbioru.

Przykład z naszej pracy: Faktura nie czeka na KSeF

Flaem

W Flaem wystawienie faktury nigdy nie zależy od tego, czy KSeF odpowiada. Dokument zapisuje się razem z wierszem w kolejce ksef_submissions, a wysyłką zajmuje się osobny worker. Awaria po stronie Ministerstwa nie zamienia się w nieudany zakup klienta.

Jedna faktura trafia do KSeF raz, pilnują tego trzy warstwy: klucz główny kolejki, blokada wiersza przy pobraniu i deduplikacja KSeF po skrócie pliku, czyli status 440, który worker zapisuje jako sukces.

Kiedy to ma znaczenie dla firmy

  • Sprzedajesz z własnego systemu. Sklep, panel albo platforma, które wystawiają faktury, muszą wysyłać je do KSeF same albo przez program księgowy.
  • Odbierasz faktury kosztowe. Faktury od dostawców też są w KSeF. Integracja może je pobierać, zamiast przepisywać ręcznie.
  • Masz dużą liczbę faktur. Przy setkach faktur dziennie ręczna wysyłka w aplikacji przestaje być możliwa.

Co się często myli

Często słychać: KSeF to tylko nowy format pliku.W praktyce: To system, który przyjmuje fakturę, nadaje jej numer i od którego zależy, czy została wystawiona.
Często słychać: Wysyłkę do KSeF można zrobić synchronicznie przy zakupie.W praktyce: Można, ale awaria KSeF zatrzyma wtedy sprzedaż. Bezpieczniej kolejkować wysyłkę w tle.

Powiązane hasła: UPO, Faktura ustrukturyzowana, API, JWT

Więcej: KSeF, KSeF API 2.0 krok po kroku, API GUS BIR: dane firmy po NIP, Kwota słownie, Walidator NIP, REGON, PESEL i IBAN, Integracja z KSeF: harmonogram obowiązku i podłączenie własnego systemu do API 2.0

UPO

UPO to Urzędowe Poświadczenie Odbioru: dokument z KSeF potwierdzający, że faktury trafiły do systemu.

UPO jest dowodem dla Ciebie, nie dla klienta: pokazuje, że w danej sesji KSeF przyjął określone faktury. Po zamknięciu sesji interaktywnej KSeF przygotowuje zbiorcze UPO, a każda przyjęta faktura ma też adres do pobrania własnego UPO.

Jak to działa

  1. Wysyłka faktur. Faktury trafiają do KSeF w sesji interaktywnej albo wsadowej.
  2. Zamknięcie sesji. Po zamknięciu KSeF przygotowuje zbiorcze UPO dla całej sesji.
  3. Pobranie. Adres UPO ma datę ważności, więc plik pobiera się od razu i zapisuje przy fakturze.

Przykład z naszej pracy: Bez pustych sesji

Flaem

Worker KSeF w Flaem otwiera sesję tylko wtedy, gdy ma coś do wysłania. W kodzie stoi to wprost: pusta sesja to dodatkowe wywołanie i UPO, o które nikt nie prosił. Sprawdzanie statusu wcześniej wysłanych faktur nie wymaga otwierania sesji.

Kiedy to ma znaczenie dla firmy

  • Kontrola i spory. UPO pokazuje, kiedy KSeF przyjął fakturę, co liczy się przy terminach i sporach z kontrahentem.
  • Archiwum. Adres pobrania wygasa, więc UPO trzeba trzymać we własnym archiwum razem z fakturą.

Co się często myli

Często słychać: UPO to faktura.W praktyce: UPO to potwierdzenie przyjęcia faktur przez KSeF, a nie sama faktura.
Często słychać: UPO zawsze można pobrać później.W praktyce: Adres pobrania ma datę wygaśnięcia, więc pobierz plik od razu.

Powiązane hasła: KSeF, Faktura ustrukturyzowana

Więcej: KSeF, KSeF API 2.0 krok po kroku, Integracja z KSeF: harmonogram obowiązku i podłączenie własnego systemu do API 2.0

Faktura ustrukturyzowana

Faktura ustrukturyzowana to faktura w formacie XML według schematu FA(3), wystawiana przez KSeF.

Zamiast PDF-a z dowolnym układem faktura ustrukturyzowana to plik XML, w którym każde pole ma swoje miejsce: sprzedawca, nabywca, pozycje, stawki VAT. Dzięki temu KSeF i programy księgowe czytają ją bez przepisywania.

Jak to działa

  1. Dane z systemu. Sprzedaż, nabywca i pozycje pochodzą z zamówienia albo dokumentu w systemie.
  2. Schemat FA(3). XML musi pasować do schematu, łącznie z kolejnością elementów.
  3. Wysyłka do KSeF. Dopiero plik przyjęty przez KSeF jest wystawioną fakturą.

Przykład z naszej pracy: XML składany ręcznie, w kolejności schematu

Flaem

Flaem buduje fakturę FA(3) w module frozcore/src/ksef/fa3.rs. Nagłówek jest ustalony przez schemat: kodSystemowy "FA (3)", wersjaSchemy "1-0E", a elementy idą w kolejności wymaganej przez xsd:sequence. Zamiana dwóch pól miejscami to już faktura, której KSeF nie przyjmie.

frozcore/src/ksef/fa3.rsplaintext
out.push_str("<KodFormularza kodSystemowy=\"FA (3)\" wersjaSchemy=\"1-0E\">FA</KodFormularza>");

Kiedy to ma znaczenie dla firmy

  • Własny system sprzedaży. Generowanie FA(3) to praca po stronie systemu, który wystawia faktury.
  • Faktury z nietypowymi polami. Zaliczki, korekty czy waluty obce mają swoje elementy w schemacie i trzeba je obsłużyć.

Co się często myli

Często słychać: Wystarczy wygenerować PDF i wysłać go do KSeF.W praktyce: KSeF przyjmuje XML według schematu, nie PDF.
Często słychać: Kolejność pól w XML nie ma znaczenia.W praktyce: W FA(3) elementy są sekwencją i ich kolejność jest częścią schematu.

Powiązane hasła: KSeF, UPO

Więcej: KSeF, KSeF API 2.0 krok po kroku, Kwota słownie, Kalkulator VAT, Integracja z KSeF: harmonogram obowiązku i podłączenie własnego systemu do API 2.0

Bramka płatności

Bramka płatności to usługa, która przyjmuje płatność od klienta i przekazuje sklepowi jej wynik.

Bramka płatności przyjmuje od klienta przelew, kartę albo BLIK i przekazuje sklepowi wynik: opłacone albo nie. Dla sklepu najważniejsze jest nie przekierowanie do płatności, tylko potwierdzenie, które przychodzi potem.

Jak to działa

  1. Rejestracja. Sklep zgłasza transakcję z kwotą i dostaje token albo adres płatności.
  2. Płatność. Klient płaci na stronie bramki albo kodem BLIK w sklepie.
  3. Powiadomienie. Bramka wysyła sklepowi podpisany wynik transakcji.
  4. Weryfikacja. Sklep potwierdza transakcję w bramce, dopiero wtedy pieniądze są jego.

Przykład z naszej pracy: Siedem bramek, jedna zasada

Flaem

Flaem obsługuje Przelewy24, PayU, Tpay, Stripe, PayPal, paysafecard i SimPay, każdą w osobnym module frozcore/src/payments/gateways. Wspólna zasada jest zapisana w komentarzu do Przelewy24: samo powiadomienie nie jest płatnością, dopiero weryfikacja.

Kiedy to ma znaczenie dla firmy

  • Sprzedajesz online. Bramka decyduje, jakimi metodami klient może zapłacić i jak szybko widzisz wpłatę.
  • Integrujesz własny sklep. Każda bramka ma swój podpis i swoje powiadomienia, które trzeba obsłużyć poprawnie.

Co się często myli

Często słychać: Powrót klienta ze strony płatności oznacza, że zapłacił.W praktyce: O płatności decyduje powiadomienie i weryfikacja, nie przekierowanie przeglądarki.

Powiązane hasła: BLIK, Chargeback, Webhook, API

Więcej: Przelewy24, Przelewy24 REST API, Itemshop dla serwera Minecraft, Kalkulator VAT, Marża i narzut

BLIK

BLIK to polski system płatności mobilnych, w którym płacisz sześciocyfrowym kodem z aplikacji banku.

Kod BLIK jest ważny krótko i potwierdzasz go w aplikacji banku. Dla sklepu BLIK to jedna z metod w bramce płatności: albo klient wybiera go na stronie bramki, albo wpisuje kod od razu w sklepie, bez przekierowania.

Jak to działa

  1. Kod w aplikacji. Klient generuje sześciocyfrowy kod w aplikacji banku.
  2. Obciążenie kodem. Sklep przekazuje kod bramce w ramach zarejestrowanej transakcji.
  3. Potwierdzenie w banku. Klient zatwierdza płatność w aplikacji, a bramka powiadamia sklep.

Przykład z naszej pracy: BLIK bez wychodzenia ze sklepu

Flaem

W integracji Przelewy24 w Flaem klient może zapłacić na stronie Przelewy24 albo kodem BLIK wpisanym w sklepie, przez paymentMethod/blik/chargeByCode, czyli tak zwany BLIK level 0. Transakcja jest rejestrowana z metodą BLIK, w Przelewy24 to metoda 154.

Kiedy to ma znaczenie dla firmy

  • Klienci bez karty. BLIK działa w aplikacji banku, więc klient płaci bez karty i bez logowania do bankowości na stronie.
  • Płatności na telefonie. Kod wpisany w sklepie skraca płatność o przekierowanie i powrót.

Co się często myli

Często słychać: BLIK to osobna bramka płatności.W praktyce: Sklep zwykle przyjmuje BLIK przez bramkę, na przykład Przelewy24, jako jedną z jej metod.

Powiązane hasła: Bramka płatności, Chargeback

Więcej: Przelewy24, Przelewy24 REST API

Chargeback

Chargeback to obciążenie zwrotne: bank klienta cofa płatność kartą po reklamacji, z pominięciem sklepu.

Klient, który nie uznaje płatności kartą, może złożyć reklamację w swoim banku. Bank cofa pieniądze, a sklep dowiaduje się o tym od operatora płatności i może się bronić dowodami, że towar albo usługa zostały dostarczone.

Jak to działa

  1. Reklamacja w banku. Posiadacz karty zgłasza sporną płatność.
  2. Spór u operatora. Operator płatności otwiera spór i informuje sklep.
  3. Wynik. Spór jest wygrany albo przegrany, a pieniądze wracają do jednej ze stron.

Przykład z naszej pracy: Spór zapisany przy płatności

Flaem

Flaem zapisuje spór przy płatności, której dotyczy: identyfikator sporu u operatora, status otwarty, wygrany albo przegrany, powód, sporną kwotę i daty. Migracja, która to wprowadziła, ma w nazwie zasadę: spór jest odnotowany, a zwrot zrobiony poza systemem rozlicza się tylko raz.

Kiedy to ma znaczenie dla firmy

  • Przyjmujesz karty. Każdy sklep z płatnościami kartą może dostać obciążenie zwrotne.
  • Sprzedajesz usługi cyfrowe. Przy usługach bez wysyłki trudniej udowodnić dostarczenie, więc warto zbierać dowody od początku.

Co się często myli

Często słychać: Chargeback to zwykły zwrot.W praktyce: Zwrot robi sklep. Chargeback wymusza bank klienta, a sklep musi odpowiedzieć na spór w terminie operatora.

Powiązane hasła: Bramka płatności, BLIK

Więcej: Przelewy24 REST API

Strony i SEO

Jak strona trafia do wyszukiwarki, do telefonu i do każdego użytkownika.

Headless CMS

Headless CMS to system do edycji treści bez własnego wyglądu strony, który oddaje treść przez API.

W klasycznym CMS, na przykład WordPressie, edycja treści i wygląd strony są jednym systemem. Headless CMS zostawia sobie tylko edycję: treść oddaje przez API, a stronę, aplikację mobilną albo sklep buduje się osobno, w dowolnej technologii.

Jak to działa

  1. Edycja. Redaktor pisze w panelu CMS, bez dotykania kodu strony.
  2. API. Treść jest dostępna jako dane, na przykład JSON.
  3. Front. Strona albo aplikacja pobiera dane i sama decyduje o wyglądzie.

Przykład z naszej pracy: Tu akurat CMS-a nie ma

vulcode.com

Blog tej strony nie działa na żadnym CMS. Każdy wpis to plik Markdown w repozytorium, a prerender przy budowie zamienia go w statyczny HTML. Publikacja to nowy plik i ponowne wygenerowanie stron, bez przebudowy aplikacji.

To działa, bo wpisy piszą osoby, które pracują w repozytorium. Headless CMS ma sens, gdy treść edytują osoby spoza zespołu programistów albo ta sama treść ma trafić do kilku kanałów naraz.

Kiedy to ma znaczenie dla firmy

  • Kilka kanałów. Ta sama treść trafia na stronę, do aplikacji i do sklepu.
  • Redakcja poza IT. Marketing publikuje bez czekania na wdrożenie.
  • Szybka strona. Front można wygenerować statycznie, a CMS zostaje za kulisami.

Co się często myli

Często słychać: Headless CMS jest zawsze lepszy od WordPressa.W praktyce: Daje swobodę frontu kosztem budowy go od zera. Przy prostej stronie firmowej klasyczny CMS bywa tańszy.

Powiązane hasła: SSR i prerendering, SPA, API

Więcej: Strona Firmowa, Landing Page, WordPress czy headless CMS: którą architekturę wybrać dla strony firmowej

PWA

PWA to strona internetowa, którą można zainstalować na telefonie jak aplikację, z ikoną i powiadomieniami.

PWA, czyli progresywna aplikacja webowa, ma manifest z nazwą i ikoną oraz service worker, który działa w tle: przechowuje pliki i odbiera powiadomienia push. Instalujesz ją z przeglądarki, bez sklepu z aplikacjami.

Jak to działa

  1. Manifest. Plik manifest.webmanifest podaje nazwę, ikony i zakres aplikacji.
  2. Service worker. Skrypt w tle obsługuje cache i powiadomienia push.
  3. Instalacja. Na HTTPS przeglądarka proponuje dodanie ikony na ekran telefonu.

Przykład z naszej pracy: Jedna aplikacja dla strony i panelu

Panel klienta VulCode

Strona vulcode.com i panel klienta tworzą jedną zainstalowaną aplikację: jest jeden manifest dla całej domeny, a panel pod /panel/ celowo nie ma własnego, bo drugi manifest dałby drugą ikonę na telefonie klienta. Powiadomienia push obsługuje service worker panelu.

Na jednej domenie działają dwa service workery: strony i panelu. Zmierzyliśmy, że navigator.serviceWorker.ready potrafi wskazać worker strony zamiast panelu i subskrypcja trafiała do workera bez obsługi push. Kod panelu wybiera rejestrację jawnie.

Kiedy to ma znaczenie dla firmy

  • Klienci na telefonach. Ikona na ekranie i powiadomienia bez publikacji w sklepach.
  • Jeden kod. Ta sama aplikacja działa w przeglądarce i po instalacji.

Co się często myli

Często słychać: PWA działa wszędzie tak samo jak aplikacja natywna.W praktyce: Service worker i push działają tylko w bezpiecznym kontekście, czyli na HTTPS albo localhost.

Powiązane hasła: SPA, SSR i prerendering

Więcej: Aplikacje Mobilne, Panele i Dashboardy, Aplikacja mobilna czy PWA: co wybrać w 2026 i czego PWA nadal nie potrafi

SPA

SPA to aplikacja jednej strony: przeglądarka ładuje ją raz, a kolejne widoki rysuje JavaScript.

W SPA przeglądarka ładuje jedną stronę HTML z kodem aplikacji, a przejścia między widokami odbywają się bez przeładowania: JavaScript podmienia treść i adres w pasku. Dzięki temu panel czy aplikacja reagują szybko, ale bez dodatkowej pracy wyszukiwarka widzi pustą stronę.

Jak to działa

  1. Pierwsze wejście. Przeglądarka pobiera HTML i pakiety JavaScript.
  2. Router. Zmiana adresu rysuje nowy widok bez prośby o nową stronę.
  3. Dane z API. Widoki pobierają dane z backendu w tle.

Przykład z naszej pracy: SPA z gotowym HTML

vulcode.com

Ta strona to SPA w React z routerem, ale każda zarejestrowana podstrona ma też gotowy HTML z prerenderu. Pierwszy ekran przychodzi jako treść, a dopiero potem aplikacja przejmuje nawigację. Panele klienta VulCode i WaveHost to też SPA, a ich ekrany po zalogowaniu i tak nie powinny trafiać do wyszukiwarki.

Kiedy to ma znaczenie dla firmy

  • Panele i aplikacje. Dużo widoków po zalogowaniu, gdzie liczy się płynność.
  • Strony do wyszukiwarki. Treść marketingowa potrzebuje prerenderu albo SSR.

Co się często myli

Często słychać: SPA nie może mieć dobrego SEO.W praktyce: Może, jeśli każda podstrona dostaje gotowy HTML z prerenderu albo SSR.

Powiązane hasła: SSR i prerendering, PWA, API

Więcej: Strona Firmowa, Panele i Dashboardy, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console

SSR i prerendering

SSR i prerendering to generowanie gotowego HTML strony na serwerze, zanim zobaczy go przeglądarka.

SSR renderuje HTML na serwerze przy każdym wejściu, a prerendering robi to raz, przy budowie strony, i zapisuje gotowe pliki. W obu przypadkach przeglądarka i wyszukiwarka dostają od razu treść, a JavaScript potem tylko ją ożywia.

Jak to działa

  1. Lista adresów. Skrypt zna wszystkie podstrony z rejestru.
  2. Render. Każda podstrona jest renderowana do HTML z tytułem i metadanymi.
  3. Zapis i hydratacja. Pliki trafiają na serwer, a w przeglądarce React podłącza się do gotowego HTML.

Przykład z naszej pracy: Prerender tej strony

vulcode.com

scripts/prerender.mjs renderuje każdą podstronę z rejestru do pliku index.html, z tagami w head i stanem danych, żeby klient nie mrugał przy hydratacji. Strony są ładowane leniwie, a renderToString nie obsługuje Suspense, więc skrypt najpierw robi przebieg na próbę, który ładuje wszystkie paczki, i dopiero drugi przebieg zapisuje pliki.

Kiedy to ma znaczenie dla firmy

  • Strony, które mają się pozycjonować. Wyszukiwarka i podgląd linków dostają treść bez wykonywania JavaScript.
  • Szybki pierwszy ekran. Użytkownik widzi treść, zanim pobierze się cała aplikacja.

Co się często myli

Często słychać: Prerender i SSR to to samo.W praktyce: SSR liczy HTML przy każdym wejściu, prerender raz przy budowie. Prerender nie pokaże danych zmienianych co minutę.

Powiązane hasła: SPA, Sitemap, Dane strukturalne

Więcej: Strona Firmowa, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console, Core Web Vitals w praktyce: jak dowozimy 95+ w PageSpeed

hreflang

hreflang to znacznik, który mówi wyszukiwarce, które adresy są tą samą stroną w innych językach.

Na stronie w kilku językach każda wersja dostaje znaczniki link rel="alternate" hreflang, wskazujące odpowiedniki w pozostałych językach. Wyszukiwarka pokazuje wtedy użytkownikowi wersję w jego języku i nie traktuje tłumaczeń jak duplikatów.

Jak to działa

  1. Pary adresów. Każda podstrona wie, jaki adres ma w innych językach.
  2. Znaczniki w head. Wszystkie wersje wskazują siebie nawzajem, łącznie z sobą.
  3. Mapa strony. Te same pary mogą trafić do sitemap.xml.

Przykład z naszej pracy: Adresy z rejestru stron

vulcode.com

Na tej stronie pary adresów biorą się z rejestru stron: polski i angielski adres każdej podstrony. Strona, która istnieje tylko po polsku, nie dostaje angielskiego odpowiednika, więc nie powstaje link do strony, której nie ma. Ten sam rejestr generuje alternatywne adresy w sitemap.xml.

src/components/SEO.tsxtypescript
{noindex && <meta name="robots" content="noindex,nofollow" />}{!noindex && <link rel="canonical" href={canonicalUrl} />} {SUPPORTED_LANGUAGES.filter(lang => alternatePaths[lang]).map(lang => (  <link key={lang} rel="alternate" hrefLang={lang} href={`${SITE_URL}${alternatePaths[lang]}`} />))}

Kiedy to ma znaczenie dla firmy

  • Strona w kilku językach. Bez hreflang wersje mogą konkurować ze sobą w wynikach.
  • Różne adresy w językach. Gdy /pl/narzedzia odpowiada /en/tools, tylko hreflang wiąże je ze sobą.

Co się często myli

Często słychać: hreflang tłumaczy stronę.W praktyce: Wskazuje tylko istniejące wersje. Tłumaczenie trzeba mieć samemu.

Powiązane hasła: Canonical, Sitemap, noindex

Więcej: Strona Firmowa, Strona wielojęzyczna i hreflang: struktura adresów, tłumaczenia i błędy, które psują SEO

Canonical

Canonical to znacznik wskazujący główny adres strony, gdy ta sama treść jest dostępna pod kilkoma.

Ta sama treść bywa dostępna pod kilkoma adresami: z ukośnikiem na końcu i bez, z parametrami albo pod starym adresem. Znacznik link rel="canonical" mówi wyszukiwarce, który z nich jest właściwy i który ma trafić do wyników.

Jak to działa

  1. Jeden adres główny. Strona wybiera swój adres bez parametrów i ukośnika na końcu.
  2. Znacznik w head. Każda wersja wskazuje ten adres jako kanoniczny.

Przykład z naszej pracy: Canonical albo noindex, nigdy oba

vulcode.com

Komponent SEO tej strony usuwa ukośnik z końca adresu i z tego buduje canonical. Strona z flagą noindex nie dostaje canonical wcale, bo wskazywanie adresu do wyników na stronie, która ma w nich nie być, to sprzeczny sygnał.

src/components/SEO.tsxtypescript
{noindex && <meta name="robots" content="noindex,nofollow" />}{!noindex && <link rel="canonical" href={canonicalUrl} />}

Kiedy to ma znaczenie dla firmy

  • Sklepy z filtrami. Sortowanie i filtry tworzą wiele adresów jednej listy produktów.
  • Migracja strony. Po zmianie adresów canonical i przekierowania pilnują, żeby pozycje przeszły na nowe.

Co się często myli

Często słychać: Canonical przekierowuje użytkownika.W praktyce: To wskazówka dla wyszukiwarki. Do przenoszenia ludzi służy przekierowanie 301.

Powiązane hasła: noindex, hreflang, Sitemap

Więcej: Strona Firmowa, Migracja strony i sklepu, Migracja strony bez utraty pozycji w Google: od listy adresów do monitoringu, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console

Sitemap

Sitemap to plik XML z listą adresów strony, który pomaga wyszukiwarce znaleźć wszystkie podstrony.

Mapa strony wymienia adresy, które chcesz mieć w wyszukiwarce, z datą zmiany i, na stronach wielojęzycznych, z odpowiednikami w innych językach. Nie gwarantuje indeksowania, ale pomaga robotowi znaleźć podstrony, do których prowadzi mało linków.

Jak to działa

  1. Lista podstron. Generator bierze wszystkie publiczne adresy.
  2. Plik XML. Adresy trafiają do sitemap.xml w formacie sitemaps.org.
  3. Zgłoszenie. Adres mapy podaje się w robots.txt albo w narzędziach wyszukiwarki.

Przykład z naszej pracy: Mapa z tego samego źródła co strony

vulcode.com

sitemap.xml tej strony powstaje w tym samym skrypcie, który prerenderuje podstrony, z tej samej listy adresów. Dla każdego adresu zapisuje wersje językowe jako xhtml:link, a adresy będące tylko aliasami pomija. HTML i mapa powstają z tej samej listy, więc się nie rozjeżdżają.

Kiedy to ma znaczenie dla firmy

  • Duża liczba podstron. Poradniki, narzędzia czy produkty łatwo zgubić bez mapy.
  • Nowa strona. Mapa przyspiesza odkrycie podstron, do których nie prowadzą jeszcze linki z zewnątrz.

Co się często myli

Często słychać: Strona w mapie na pewno trafi do wyników.W praktyce: Mapa to propozycja. Wyszukiwarka i tak sama ocenia stronę.

Powiązane hasła: robots.txt, hreflang, Canonical

Więcej: Strona Firmowa, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console

robots.txt

robots.txt to plik w głównym katalogu strony, który mówi robotom wyszukiwarek, czego nie odwiedzać.

robots.txt leży pod adresem /robots.txt i zawiera reguły Allow i Disallow dla robotów. Zamyka przed nimi na przykład panel administracyjny czy API. Nie jest zabezpieczeniem: to prośba, którą porządne roboty respektują, a adres w pliku widzi każdy.

Jak to działa

  1. Plik w katalogu głównym. Robot przed odwiedzinami pobiera /robots.txt.
  2. Reguły. User-agent mówi, kogo dotyczą reguły, Disallow, czego nie odwiedzać.

Przykład z naszej pracy: Co zamyka nasz robots.txt

vulcode.com

robots.txt tej strony pozwala na wszystko poza kilkoma ścieżkami: /auth, /admin, /api/ oraz panelem administracyjnym i stronami testowymi w każdym języku. To są miejsca, w których nie ma treści dla wyszukiwarki, a ruch robotów tylko obciąża serwer.

public/robots.txtplaintext
User-agent: *Allow: / Disallow: /authDisallow: /adminDisallow: /api/Disallow: /pl/adminDisallow: /en/admin

Kiedy to ma znaczenie dla firmy

  • Panel i API na tej samej domenie. Robot nie musi chodzić po ekranach logowania i endpointach.
  • Strony testowe. Wersje robocze nie powinny konkurować z produkcją.

Co się często myli

Często słychać: Disallow usuwa stronę z Google.W praktyce: Blokuje odwiedziny, ale adres znany z linków może zostać w indeksie. Do usunięcia z wyników służy noindex.
Często słychać: robots.txt chroni prywatne strony.W praktyce: Plik jest publiczny. Prywatne strony chroni logowanie, nie robots.txt.

Powiązane hasła: noindex, Sitemap

Więcej: Strona Firmowa, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console

noindex

noindex to polecenie dla wyszukiwarki, żeby nie pokazywała danej strony w wynikach wyszukiwania.

noindex podaje się w znaczniku meta robots albo w nagłówku HTTP X-Robots-Tag. Robot musi móc wejść na stronę, żeby go zobaczyć, więc strona z noindex nie może być jednocześnie zablokowana w robots.txt.

Jak to działa

  1. Robot odwiedza stronę. Strona musi być dostępna dla robota.
  2. Czyta meta robots. Wartość noindex każe nie pokazywać strony w wynikach.
  3. Usuwa z indeksu. Po kolejnej wizycie strona znika z wyników.

Przykład z naszej pracy: Jedna flaga w komponencie SEO

vulcode.com

Na tej stronie noindex to jedna flaga komponentu SEO. Dodaje meta robots z noindex,nofollow i jednocześnie usuwa canonical, żeby strona nie wysyłała dwóch sprzecznych sygnałów.

Kiedy to ma znaczenie dla firmy

  • Ekrany po zalogowaniu. Formularze logowania i strony konta nie są treścią do wyników.
  • Strony techniczne. Podziękowania po formularzu czy wyniki wyszukiwania wewnętrznego.

Co się często myli

Często słychać: noindex i Disallow robią to samo.W praktyce: Disallow blokuje wizytę, noindex usuwa z wyników. Razem się wykluczają, bo robot nie zobaczy noindex.

Powiązane hasła: robots.txt, Canonical

Więcej: Strona Firmowa, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console

Dane strukturalne

Dane strukturalne to opis treści strony w formacie schema.org, czytelny dla wyszukiwarek.

Dane strukturalne to blok JSON-LD w kodzie strony, który mówi wprost, czym jest treść: organizacją, artykułem, pytaniami i odpowiedziami, ścieżką okruszków. Wyszukiwarki używają ich do rozumienia strony i do rozszerzonych wyników.

Jak to działa

  1. Typ z schema.org. Wybierasz typ pasujący do treści, na przykład Article albo FAQPage.
  2. JSON-LD w head. Skrypt type="application/ld+json" opisuje pola strony.
  3. Zgodność z treścią. Dane muszą opisywać to, co widać na stronie.

Przykład z naszej pracy: Trzy warstwy na każdej stronie

vulcode.com

Każda podstrona tej strony ma opis organizacji, ścieżkę okruszków BreadcrumbList zbudowaną z rejestru stron i dane właściwe dla siebie. Poradnik na przykład ma Article z datą sprawdzenia i listą źródeł oraz FAQPage z pytaniami, które widać na dole poradnika.

Kiedy to ma znaczenie dla firmy

  • Artykuły i poradniki. Data, autor i źródła pomagają wyszukiwarce ocenić treść.
  • Pytania i odpowiedzi. FAQPage opisuje sekcję pytań, którą masz na stronie.

Co się często myli

Często słychać: Dane strukturalne poprawiają pozycję.W praktyce: Pomagają zrozumieć stronę i mogą dać rozszerzony wynik, ale nie zastąpią treści.

Powiązane hasła: SSR i prerendering, Sitemap

Więcej: Strona Firmowa, SEO techniczne przed startem strony: lista kontrolna od stagingu do Search Console

WCAG

WCAG to wytyczne dostępności treści internetowych, według których ocenia się, czy strona jest dostępna.

WCAG opisuje kryteria dostępności na poziomach A, AA i AAA: kontrast, obsługa z klawiatury, opisy obrazów, napisy w filmach, czytelne formularze. Poziom AA to zwykle wymaganie prawne, na przykład w ustawie o dostępności cyfrowej podmiotów publicznych.

Jak to działa

  1. Kryteria. Każde kryterium sukcesu ma poziom i warunek do spełnienia.
  2. Badanie. Narzędzia automatyczne i ręczny przegląd z czytnikiem ekranu.
  3. Poprawki. Błędy trafiają do zadań albo do deklaracji jako niedostępne treści.

Przykład z naszej pracy: Kontrast policzony według WCAG

kontrast WCAG

Nasze darmowe narzędzie kontrast WCAG liczy współczynnik ze względnej luminancji obu kolorów i sprawdza progi: 4,5:1 dla zwykłego tekstu i 3:1 dla dużego na poziomie AA, 7:1 i 4,5:1 na AAA, oraz 3:1 dla ikon i obramowań pól. Szary #7c8599 na białym ma 3,70:1, więc nie przechodzi AA dla zwykłego tekstu.

Kiedy to ma znaczenie dla firmy

  • Podmioty publiczne. Ustawa wymaga dostępności i deklaracji dostępności.
  • Sklepy internetowe. Polski Akt o Dostępności objął od 28 czerwca 2025 r. usługi handlu elektronicznego.
  • Każda strona. Dostępna strona jest wygodniejsza dla wszystkich, nie tylko dla osób z niepełnosprawnościami.

Co się często myli

Często słychać: Wystarczy wtyczka z przyciskiem dostępności.W praktyce: Nakładka nie naprawia kodu: kontrast, etykiety pól i obsługę z klawiatury trzeba poprawić w samej stronie.

Powiązane hasła: Deklaracja dostępności

Więcej: Dostępność cyfrowa, Deklaracja dostępności krok po kroku, Kontrast kolorów WCAG, Dostępność cyfrowa strony i sklepu: WCAG 2.2, European Accessibility Act i polska ustawa

Deklaracja dostępności

Deklaracja dostępności to oświadczenie podmiotu publicznego o tym, na ile jego strona jest dostępna.

Deklaracja informuje, jaki standard strona spełnia i w jakim stopniu, które treści są niedostępne i dlaczego oraz jak zgłosić problem. Jej strukturę, obowiązkowe brzmienia i identyfikatory HTML określają warunki techniczne Ministerstwa Cyfryzacji, od 1 sierpnia 2024 r. w wersji 2.0.

Jak to działa

  1. Badanie strony. Samoocena listą kontrolną, audyt albo oświadczenie wykonawcy.
  2. Treść według wzoru. Sekcje w wymaganej kolejności i obowiązkowe brzmienia.
  3. Publikacja. HTML z identyfikatorami a11y, link w stopce.

Przykład z naszej pracy: Szablon sprawdzony skryptem

VulCode

W poradniku o deklaracji dostępności pokazujemy szablon ze wszystkimi czternastoma obowiązkowymi identyfikatorami i skrypt, który sprawdza, czy każdy występuje dokładnie raz. Uruchomiliśmy go na szablonie z poradnika: 14 z 14, bez powtórzeń.

Kiedy to ma znaczenie dla firmy

  • Podmioty publiczne. Deklaracja musi być na każdej ich stronie, także w BIP.
  • Wykonawcy stron dla urzędów. Oświadczenie wykonawcy może być podstawą deklaracji, więc wykonawca powinien mieć wyniki badania, które je potwierdzają.

Co się często myli

Często słychać: Deklarację można wrzucić jako PDF.W praktyce: Publikuje się ją jako HTML, w pełni dostępny cyfrowo.

Powiązane hasła: WCAG

Więcej: Dostępność cyfrowa, Deklaracja dostępności krok po kroku, Kontrast kolorów WCAG, Dostępność cyfrowa strony i sklepu: WCAG 2.2, European Accessibility Act i polska ustawa

Biznes i współpraca

Pojęcia, które padają przy wycenie i planowaniu produktu.

MVP

MVP to najmniejsza wersja produktu, która rozwiązuje główny problem i pozwala sprawdzić go na ludziach.

MVP, czyli minimum viable product, ma odpowiedzieć na jedno pytanie: czy ludzie chcą tego produktu i czy z niego korzystają. Dlatego zawiera tylko to, bez czego produkt nie spełnia swojej roli, a resztę świadomie odkłada na później.

Jak to działa

  1. Jeden problem. Wybierasz główny problem użytkownika, który produkt rozwiązuje.
  2. Najkrótsza droga. Budujesz tylko funkcje, bez których tego problemu nie da się rozwiązać.
  3. Prawdziwi użytkownicy. Produkt trafia do ludzi i zbierasz dane o tym, jak go używają.

Przykład z naszej pracy: System w dwa tygodnie dla startupu

SafeBands

Dla startupu SafeBands, który rozwija inteligentne opaski ratunkowe, zbudowaliśmy operacyjny rdzeń platformy: konta z kontrolą dostępu, monitoring danych z urządzeń w czasie rzeczywistym, alerty i portal ratunkowy dostępny bez logowania. Całość dostarczyliśmy w dwa tygodnie.

Krótki termin wymusza to, czego wymaga MVP: zakres zamknięty wokół tego, bez czego produkt nie działa.

Kiedy to ma znaczenie dla firmy

  • Nowy produkt. Sprawdzasz pomysł na ludziach, zanim wydasz budżet na pełną wersję.
  • Inwestorzy. Działający produkt mówi więcej niż prezentacja.

Co się często myli

Często słychać: MVP to wersja byle jaka.W praktyce: Ma mało funkcji, ale te, które ma, muszą działać dobrze, bo inaczej test niczego nie powie.
Często słychać: MVP to prototyp.W praktyce: Prototyp pokazuje pomysł. MVP jest używany przez prawdziwych użytkowników.

Powiązane hasła: SaaS, White label

Więcej: Startupy i MVP, Platformy Internetowe, MVP: jak zbudować pierwszą wersję produktu i nie przepalić budżetu, Jak przygotować brief projektu dla software house'u: struktura, przykład i typowe braki

White label

White label to produkt, który klient sprzedaje lub udostępnia pod własną marką, kolorami i domeną.

Produkt white label działa pod marką klienta: jego nazwa, logo, kolory i domena, a dostawca technologii nie jest widoczny dla użytkowników. Klient nie buduje oprogramowania od zera, a mimo to ma własny produkt.

Jak to działa

  1. Wspólny rdzeń. Jeden kod obsługuje wiele marek.
  2. Motyw marki. Kolory, logo i teksty ustawia się bez zmiany kodu.
  3. Własna domena. Użytkownik widzi tylko markę klienta.

Przykład z naszej pracy: Ten sam panel, inna marka

Aphrodi, Flaem

Panel klienta Aphrodi to bliźniak panelu VulCode: ten sam rdzeń, pełna identyfikacja Aphrodi, inna marka i paleta. W Flaem operator ustawia swoją markę w panelu, a frozcore przyjmuje tylko ściśle określone wartości: kolor, czcionkę z listy, plik z własnych zasobów. Nawet własny CSS działa w wydzielonej warstwie i nie może pobrać niczego spoza zasobów marki.

Kiedy to ma znaczenie dla firmy

  • Firma hostingowa. Klienci widzą panel z Twoją marką, nie dostawcy oprogramowania.
  • Kilka marek w grupie. Jeden produkt obsługuje każdą markę bez osobnego kodu.

Co się często myli

Często słychać: White label to tylko podmiana logo.W praktyce: To też kolory, domena, maile i dokumenty, czyli wszystko, co widzi użytkownik.

Powiązane hasła: SaaS, MVP

Więcej: Panele i Dashboardy

SaaS

SaaS to oprogramowanie jako usługa: używasz go przez przeglądarkę w abonamencie, a dostawca go utrzymuje.

W modelu SaaS klient nie instaluje niczego: płaci abonament, loguje się przez przeglądarkę, a serwery, aktualizacje i kopie zapasowe są po stronie dostawcy. Przeciwieństwem jest oprogramowanie stawiane u siebie, na własnym serwerze.

Jak to działa

  1. Jedna instalacja. Dostawca utrzymuje system dla wszystkich klientów.
  2. Abonament. Klient płaci za dostęp, zwykle miesięcznie albo rocznie.
  3. Aktualizacje. Nowe wersje trafiają do wszystkich naraz, bez pracy po stronie klienta.

Przykład z naszej pracy: Celowo nie SaaS

Pharos

Pharos, nasza strona statusu, jest odwrotnością SaaS: to jedno binarium w Go z wbudowanym SQLite, które stawiasz u siebie jednym poleceniem. Monitoring uptime, publiczna strona statusu i obsługa incydentów działają na Twoim serwerze, a nie u nas.

Kiedy to ma znaczenie dla firmy

  • Szybki start. SaaS działa od założenia konta, bez serwera i administracji.
  • Kontrola nad danymi. Gdy dane muszą zostać u Ciebie, lepsze bywa oprogramowanie stawiane samodzielnie.

Co się często myli

Często słychać: Każda aplikacja w przeglądarce to SaaS.W praktyce: Aplikację webową możesz też postawić u siebie. SaaS oznacza model, w którym utrzymuje ją dostawca.

Powiązane hasła: White label, MVP, VPS

Więcej: Firmy SaaS, Platformy Internetowe

Technika

Jak systemy rozmawiają ze sobą i jak kod trafia na serwer.

API

API to interfejs, przez który jeden program prosi drugi o dane albo o wykonanie operacji.

API określa, jakie zapytania można wysłać, z jakimi danymi i co wróci w odpowiedzi. Dzięki temu sklep może utworzyć przesyłkę u przewoźnika, panel serwer w systemie hostingowym, a system sprzedaży fakturę w KSeF, bez człowieka pośrodku.

Jak to działa

  1. Klucz albo token. Program przedstawia się kluczem z uprawnieniami.
  2. Zapytanie. Wysyła metodę HTTP, adres i dane, zwykle w JSON.
  3. Odpowiedź. Dostaje wynik albo kod błędu, który mówi, co poszło nie tak.

Przykład z naszej pracy: Dwa API jednego systemu

WaveHost

Panel WaveHost rozmawia z Pterodactylem przez dwa API. Application API z kluczem ptla_ tworzy użytkowników i serwery, zawiesza je i usuwa. Client API z kluczem ptlc_ administratora obsługuje to, czego pierwsze nie udostępnia: zasilanie, konsolę i zużycie zasobów na żywo.

Kiedy to ma znaczenie dla firmy

  • Integracje. Sklep, księgowość, kurier i CRM wymieniają dane same.
  • Własna aplikacja. Strona, aplikacja mobilna i panel korzystają z jednego backendu.

Co się często myli

Często słychać: Każdy system ma API do wszystkiego.W praktyce: API udostępnia to, co przewidział dostawca. W Pterodactylu część operacji jest tylko w Client API.

Powiązane hasła: Webhook, Rate limit, OAuth, JWT

Więcej: Integracje i Automatyzacje, Integracje, InPost ShipX API, Instalacja panelu Pterodactyl, Formatter JSON, Integracje przez API: jak połączyć stronę, sklep lub panel z ERP, CRM, księgowością i płatnościami

Webhook

Webhook to powiadomienie, które jeden system wysyła do drugiego, gdy coś się wydarzy, bez pytania o to.

Zamiast co chwilę pytać inny system, czy coś się zmieniło, podajesz mu adres, a on sam wysyła na niego zapytanie, gdy zdarzenie nastąpi: płatność, zmiana statusu przesyłki, zakup w sklepie. Odbiorca musi sprawdzić, że wiadomość jest prawdziwa.

Jak to działa

  1. Adres. Rejestrujesz adres HTTPS w systemie, który wysyła zdarzenia.
  2. Zdarzenie. System wysyła na ten adres JSON z opisem zdarzenia.
  3. Weryfikacja. Odbiorca sprawdza podpis albo źródło i dopiero wtedy działa.

Przykład z naszej pracy: Podpis przed wszystkim

Flaem

Flaem przyjmuje webhooki ze sklepów Tebex i CraftingStore. Oba podpisują treść HMAC-SHA256, a Tebex liczy podpis ze skrótu SHA-256 treści, nie z samej treści, co frozcore obsługuje osobno. Podpis porównujemy w czasie stałym i dopiero po nim cokolwiek trafia do kolejki dostaw.

Kiedy to ma znaczenie dla firmy

  • Płatności. Wynik płatności przychodzi jako powiadomienie, nie w przeglądarce klienta.
  • Statusy zamówień. Kurier albo marketplace informuje o zmianach bez odpytywania.

Co się często myli

Często słychać: Webhook zawsze ma podpis.W praktyce: Nie zawsze. InPost podaje zamiast tego zakres adresów, z których wysyła, i wtedy warto potwierdzić dane przez API.

Powiązane hasła: API, Rate limit, Bramka płatności

Więcej: Integracje, Integracje i Automatyzacje, InPost ShipX API, Przelewy24 REST API, Itemshop dla serwera Minecraft, Webhook i embed Discord, Sumy kontrolne i hash

Rate limit

Rate limit to limit liczby zapytań do API w określonym czasie, po którego przekroczeniu usługa odmawia.

Usługi ograniczają liczbę zapytań, żeby jeden klient nie zablokował innych. Po przekroczeniu limitu odpowiadają zwykle kodem 429 i informacją, ile czekać. Integracja, która tego nie obsługuje, gubi dane albo zostaje zablokowana.

Jak to działa

  1. Limit. Usługa liczy zapytania na sekundę, minutę albo godzinę.
  2. Odmowa. Po przekroczeniu odpowiada 429 albo podobnym kodem.
  3. Ponowienie. Klient czeka podany czas i próbuje ponownie.

Przykład z naszej pracy: Osobna kolejka na każdy cel

webhook-proxy

Nasz webhook-proxy przekazuje powiadomienia z naszych usług do webhooków Discorda. Discord liczy limit osobno dla każdego webhooka, więc proxy ma osobną kolejkę na każdy cel, respektuje odpowiedzi 429 i ponawia błędy 5xx. Zapchany kanał alertów nie blokuje wtedy powiadomień o płatnościach.

Kiedy to ma znaczenie dla firmy

  • Integracje z rejestrami. GUS BIR pozwala na przykład na 3 zapytania na sekundę w godzinach pracy.
  • Duże wysyłki. Masowe powiadomienia muszą iść w tempie, które przyjmie usługa.

Co się często myli

Często słychać: Wystarczy ponawiać od razu.W praktyce: Natychmiastowe ponowienie tylko wydłuża blokadę. Trzeba czekać tyle, ile podaje usługa.

Powiązane hasła: API, Webhook

Więcej: Integracje i Automatyzacje, Integracje, API GUS BIR: dane firmy po NIP, Bot Discord w Pythonie

OAuth

OAuth to standard, dzięki któremu logujesz się w aplikacji kontem z innej usługi, bez podawania hasła.

W OAuth aplikacja nie dostaje Twojego hasła do innej usługi. Przekierowuje Cię do niej, Ty się logujesz i wyrażasz zgodę, a aplikacja dostaje jednorazowy kod, który jej serwer wymienia na token z ograniczonymi uprawnieniami.

Jak to działa

  1. Przekierowanie. Aplikacja wysyła Cię do usługi z listą uprawnień, o które prosi.
  2. Zgoda. Logujesz się i akceptujesz uprawnienia.
  3. Kod i token. Aplikacja dostaje kod, a jej serwer wymienia go na token.

Przykład z naszej pracy: Logowanie przez Discorda

Panel klienta VulCode

Panel klienta VulCode ma logowanie kontem Discord zbudowane na OAuth: po zgodzie Discord wraca do panelu z kodem, panel przekazuje go do backendu, a dopiero backend wymienia go na token. Przeglądarka nie widzi sekretu aplikacji. Panel sprawdza też, czy autoryzację zaczęto w tej samej karcie, i odrzuca obcą.

Przycisk jest ukryty, dopóki backend nie ma kluczy aplikacji Discord, żeby nie prowadził do strony błędu. 6 października 2026 r. na produkcji był jeszcze wyłączony.

Kiedy to ma znaczenie dla firmy

  • Logowanie bez hasła. Użytkownik nie zakłada kolejnego konta z hasłem.
  • Dostęp do cudzych danych. Aplikacja dostaje tylko te uprawnienia, na które zgodził się użytkownik.

Co się często myli

Często słychać: OAuth to logowanie.W praktyce: OAuth daje dostęp do zasobów. Logowanie na nim buduje się dodatkowo, na przykład przez OpenID Connect albo pobranie profilu.

Powiązane hasła: JWT, API

Więcej: Discord, Panele i Dashboardy, Link zaproszenia bota

JWT

JWT to token w formacie JSON z podpisem, który przenosi informację o tym, kim jesteś i co możesz.

JWT składa się z trzech części rozdzielonych kropkami: nagłówka, treści i podpisu, każda w Base64URL. Treść mówi na przykład, kim jesteś i do kiedy token jest ważny, a podpis pozwala serwerowi sprawdzić, że nikt jej nie zmienił. Treść nie jest zaszyfrowana, więc nie trzyma się w niej sekretów.

Jak to działa

  1. Wydanie. Serwer tworzy token z treścią i podpisuje go swoim kluczem.
  2. Użycie. Klient wysyła token w nagłówku Authorization: Bearer.
  3. Sprawdzenie. Serwer weryfikuje podpis i datę ważności.

Przykład z naszej pracy: Token z prawdziwej odpowiedzi KSeF

KSeF API

Gdy w poradniku o KSeF uruchomiliśmy uwierzytelnienie na środowisku testowym, token uwierzytelniający w odpowiedzi zaczynał się od eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9, czyli zakodowanego nagłówka JWT z algorytmem HS256. Tym tokenem w nagłówku Bearer sprawdza się status uwierzytelnienia i odbiera właściwy token dostępu.

Kiedy to ma znaczenie dla firmy

  • API bez sesji na serwerze. Serwer nie musi pamiętać sesji, wystarczy sprawdzić podpis.
  • Bezpieczeństwo. Token trzeba chronić jak hasło i dawać mu krótki czas ważności.

Co się często myli

Często słychać: JWT jest zaszyfrowany.W praktyce: Jest podpisany, nie zaszyfrowany. Treść odczyta każdy, kto ma token.

Powiązane hasła: OAuth, API, KSeF

Więcej: Integracje i Automatyzacje, KSeF API 2.0 krok po kroku, Base64, URL i JWT

CI/CD

CI/CD to automatyczne budowanie, testowanie i wdrażanie kodu po każdej zmianie w repozytorium.

CI, ciągła integracja, buduje i testuje kod po każdej zmianie. CD, ciągłe dostarczanie albo wdrażanie, przygotowuje albo od razu wdraża sprawdzoną wersję. Dzięki temu "u mnie działa" staje się faktem o gałęzi kodu, a nie o czyimś komputerze.

Jak to działa

  1. Zmiana w repozytorium. Push albo pull request uruchamia potok.
  2. Bramka. Kompilacja, formatowanie, analiza i testy muszą przejść.
  3. Wydanie. Sprawdzona wersja trafia na serwer albo czeka na zatwierdzenie.

Przykład z naszej pracy: Bramka na każdy push

Flaem

frozcore w Flaem uruchamia CI przy każdym pushu i pull requeście do gałęzi dev i main: kompilację z testami, formatowanie, clippy, testy na prawdziwym PostgreSQL i Redis zamiast atrap, kontrolę numeracji migracji i audyt zależności. Komentarz w pliku CI mówi wprost, czym to było przedtem: obrazy budowane na czyimś laptopie.

Skrypt scripts/gate.sh uruchamia te same zadania lokalnie, gdy Actions nie jest dostępne, a zmiana w jednym miejscu musi trafić do drugiego w tym samym commicie.

Kiedy to ma znaczenie dla firmy

  • Kilka osób w kodzie. Błąd jednej zmiany wychodzi, zanim trafi do innych.
  • Częste wdrożenia. Wdrożenie przestaje być ręczną procedurą z ryzykiem pomyłki.

Co się często myli

Często słychać: CI to tylko uruchomienie testów.W praktyce: To cała bramka: kompilacja, analiza, testy na prawdziwych usługach i sprawdzenie, co zostanie wydane.

Powiązane hasła: Docker, Pull request, Open source

Więcej: Audyt kodu

Docker

Docker to narzędzie, które pakuje aplikację z jej zależnościami w kontener, działający tak samo wszędzie.

Kontener zawiera aplikację razem z bibliotekami i konfiguracją, ale współdzieli jądro systemu z innymi kontenerami, więc startuje szybko i zajmuje mniej niż maszyna wirtualna. Obraz zbudowany raz działa tak samo na laptopie, serwerze testowym i produkcji.

Jak to działa

  1. Dockerfile. Opisuje, z jakiego obrazu startujesz i co doinstalować.
  2. Obraz. docker build zamienia opis w obraz gotowy do uruchomienia.
  3. Kontener. docker compose uruchamia kontenery z ustawieniami restartu i woluminami.

Przykład z naszej pracy: Bot w kontenerze, który wstaje sam

mailcheck

Nasz bot mailcheck działa w kontenerze z obrazu python:3.9-slim, a docker-compose.yml ustawia restart: always i montuje dane oraz konfigurację tylko do odczytu. Po restarcie serwera bot wraca bez ręcznego uruchamiania. Tak samo w Pterodactylu i Flaem każdy serwer gry to osobny kontener.

boty/mailcheck/docker-compose.ymlyaml
services:  mailcheck:    build: .    container_name: mailcheck    restart: always    volumes:      - ./data:/app/data      - ./config.json:/app/config.json:ro

Kiedy to ma znaczenie dla firmy

  • Powtarzalne wdrożenia. Produkcja działa na tym samym obrazie, który przeszedł testy.
  • Wiele usług na serwerze. Każda usługa ma swoje zależności i nie przeszkadza innym.

Co się często myli

Często słychać: Kontener to maszyna wirtualna.W praktyce: Kontener współdzieli jądro z systemem, maszyna wirtualna ma własne. Dlatego Docker nie zadziała na każdym VPS-ie.

Powiązane hasła: CI/CD, VPS, Pterodactyl

Więcej: Bot Discord w Pythonie, Instalacja panelu Pterodactyl

Open source

Open source to oprogramowanie z otwartym kodem, które każdy może czytać, zmieniać i rozwijać na licencji.

Kod otwartego projektu jest publiczny, a licencja mówi, co wolno z nim zrobić: używać, zmieniać, rozpowszechniać, czasem pod warunkiem udostępnienia zmian. Projekty rozwijają się dzięki osobom spoza zespołu, które zgłaszają błędy i przysyłają poprawki.

Jak to działa

  1. Kod publiczny. Repozytorium jest dostępne dla wszystkich.
  2. Licencja. Określa prawa i obowiązki użytkowników kodu.
  3. Wkład z zewnątrz. Każdy może zaproponować zmianę, a opiekunowie decydują o jej przyjęciu.

Przykład z naszej pracy: Poprawki w cudzych projektach

Kontrybucje VulCode

Do 6 października 2026 r. opiekunowie przyjęli 97 naszych pull requestów w 55 projektach na GitHubie oraz 6 commitów w Proxmox VE, przyjętych przez listę dyskusyjną projektu. Każdą przyjętą zmianę opisujemy na stronie kontrybucji, z linkiem do kodu.

Kiedy to ma znaczenie dla firmy

  • Wybór technologii. Aktywny projekt open source to mniejsze ryzyko porzucenia narzędzia.
  • Licencja w projekcie klienta. Niektóre licencje wymagają udostępnienia zmian, co trzeba wiedzieć przed startem.

Co się często myli

Często słychać: Open source znaczy darmowy do każdego celu.W praktyce: Licencja może stawiać warunki, na przykład udostępnienie zmienionego kodu.

Powiązane hasła: Pull request, Proxmox VE, CI/CD

Więcej: Open source, Kontrybucje, Open source w firmie: po co software house poprawia cudzy kod

Pull request

Pull request to propozycja zmiany w kodzie, którą opiekunowie projektu przeglądają przed włączeniem.

Pull request zbiera zmiany z jednej gałęzi i prosi o włączenie ich do drugiej. Opiekunowie czytają kod, komentują i uruchamiają testy, a autor poprawia, aż zmiana jest gotowa. Dopiero wtedy trafia do projektu.

Jak to działa

  1. Fork i gałąź. Autor pracuje na kopii repozytorium, na osobnej gałęzi.
  2. Przegląd. Opiekunowie komentują, a automatyczne testy sprawdzają zmianę.
  3. Scalenie. Zaakceptowana zmiana trafia do głównej gałęzi.

Przykład z naszej pracy: 97 scalonych zmian

Kontrybucje VulCode

Każda z 97 naszych zmian przyjętych do projektów na GitHubie przeszła ten proces: zgłoszenie, przegląd opiekunów, poprawki i scalenie. W Proxmox VE poprawki wysyła się jako patche na listę dyskusyjną zamiast pull requestów, ale przegląd wygląda podobnie.

Kiedy to ma znaczenie dla firmy

  • Kod w zespole. Każda zmiana ma drugą parę oczu, zanim trafi do produkcji.
  • Historia decyzji. Opis i dyskusja zostają przy zmianie na lata.

Co się często myli

Często słychać: Pull request to commit.W praktyce: To prośba o włączenie jednego lub wielu commitów, razem z dyskusją i przeglądem.

Powiązane hasła: Open source, CI/CD

Więcej: Kontrybucje, Audyt kodu

Serwery i hosting

Maszyny, wirtualizacja i panele, na których działają usługi.

VPS

VPS to wirtualny serwer prywatny: wydzielona część fizycznej maszyny z własnym systemem i zasobami.

Fizyczny serwer dzieli się na wiele maszyn wirtualnych. Każda ma własny system, adres IP, przydział procesora, pamięci i dysku oraz pełny dostęp root. Dla klienta VPS zachowuje się jak osobny serwer, choć sprzęt dzieli z innymi.

Jak to działa

  1. Hipernadzorca. Oprogramowanie, na przykład Proxmox VE z KVM, dzieli serwer na maszyny.
  2. Przydział zasobów. Każda maszyna dostaje rdzenie, pamięć i dysk.
  3. Własny system. Klient instaluje i konfiguruje, co chce, jako root.

Przykład z naszej pracy: VPS zamówiony w panelu

WaveHost

W panelu WaveHost klient konfiguruje VPS, płaci, a osobny worker zakłada maszynę przez API Proxmoxa. Klient dostaje w panelu konsolę, zapory, kopie zapasowe i ustawienia serwera, bez kontaktu z obsługą.

Kiedy to ma znaczenie dla firmy

  • Własne usługi. Strona, API, bot i baza na jednym serwerze z pełną kontrolą.
  • Wirtualizacja a Docker. Na VPS z KVM Docker działa, na OpenVZ i LXC zwykle nie.

Co się często myli

Często słychać: VPS to hosting współdzielony.W praktyce: Na hostingu współdzielonym nie masz roota ani własnego systemu. VPS daje jedno i drugie.

Powiązane hasła: Proxmox VE, Docker, Pterodactyl

Więcej: Instalacja panelu Pterodactyl, Serwer SCP:SL od zera, Kalkulator podsieci CIDR, Kalkulator chmod, Hosting dla firmy: współdzielony, VPS, serwer dedykowany, chmura czy PaaS

Proxmox VE

Proxmox VE to otwarta platforma do wirtualizacji, na której działają maszyny wirtualne i kontenery LXC.

Proxmox Virtual Environment łączy wirtualizację KVM dla pełnych maszyn wirtualnych i kontenery LXC dla lżejszych systemów, z panelem w przeglądarce, klastrami, kopiami zapasowymi i API. Jest otwartym oprogramowaniem i często służy firmom hostingowym jako podstawa oferty VPS.

Jak to działa

  1. Węzły. Fizyczne serwery z Proxmoxem łączą się w klaster.
  2. Maszyny i kontenery. Na węzłach działają maszyny KVM i kontenery LXC.
  3. API. Wszystko, co robi panel, da się zrobić przez API.

Przykład z naszej pracy: Używamy i poprawiamy

WaveHost, Proxmox VE

WaveHost zakłada VPS-y klientów przez API Proxmoxa. Do samego Proxmox VE wnieśliśmy 6 poprawek, przyjętych do repozytoriów projektu na git.proxmox.com. Opisujemy je na osobnej stronie, razem z tym, czego nauczyła nas praca nad cudzym kodem wirtualizacji.

Kiedy to ma znaczenie dla firmy

  • Własna infrastruktura. Maszyny wirtualne na własnym sprzęcie bez licencji za każdy węzeł.
  • Automatyzacja. Sprzedaż VPS w panelu wymaga integracji z API Proxmoxa.

Co się często myli

Często słychać: Kontener LXC to to samo co maszyna KVM.W praktyce: LXC współdzieli jądro hosta i jest lżejszy, ale na przykład Docker działa w nim tylko przy zagnieżdżeniu.

Powiązane hasła: VPS, Open source, API

Więcej: Kontrybucje

Pterodactyl

Pterodactyl to otwarty panel do zarządzania serwerami gier, które działają w kontenerach Docker.

Pterodactyl składa się z dwóch części: panelu w PHP, w którym zarządza się serwerami i użytkownikami, i demona Wings na każdym węźle, który uruchamia serwery w kontenerach Docker. Rodzaje serwerów opisują eggi, a panel ma Application API i Client API.

Jak to działa

  1. Panel. Klienci i administratorzy zarządzają serwerami w przeglądarce.
  2. Wings. Demon na węźle tworzy kontenery i przekazuje konsolę.
  3. Egg. Przepis mówi, jak zainstalować i uruchomić dany serwer.

Przykład z naszej pracy: Serwer gry z koszyka

WaveHost

Zakup serwera gry w panelu WaveHost tworzy serwer w Pterodactylu przez Application API: panel bierze z eggu obraz Dockera, polecenie startu i zmienne, nakłada limity pakietu i przydziela alokację. Każdy użytkownik WaveHost ma jedno konto w Pterodactylu, więc kolejne zakupy trafiają do tego samego konta.

Kiedy to ma znaczenie dla firmy

  • Firma hostingowa z grami. Pterodactyl to gotowy fundament zamiast własnego systemu kontenerów.
  • Własny panel klienta. API pozwala schować Pterodactyla za panelem z własną marką.

Co się często myli

Często słychać: Pterodactyl sam przyjmuje płatności.W praktyce: Pterodactyl zarządza serwerami. Sprzedaż, płatności i faktury robi osobny system, na przykład panel klienta.

Powiązane hasła: Egg, Docker, VPS, API

Więcej: Serwery gier, Instalacja panelu Pterodactyl, Serwer SCP:SL od zera

Egg

Egg to przepis serwera w panelu: obraz Dockera, skrypt instalacji, polecenie startu i zmienne.

Egg opisuje jeden rodzaj serwera: obraz Dockera, w którym działa, skrypt instalacji, polecenie startu, zmienne do ustawienia przez klienta oraz to, po czym panel pozna, że serwer wystartował, i jak go zatrzymać. Domyślne eggi Pterodactyla obejmują popularne gry, a dla pozostałych pisze się własne.

Jak to działa

  1. Instalacja. Skrypt w kontenerze instalatora pobiera pliki serwera.
  2. Start. Panel uruchamia polecenie startu z przydzielonym portem.
  3. Gotowość i stop. Linia w konsoli oznacza start, komenda zatrzymuje serwer.

Przykład z naszej pracy: Egg serwera SCP:SL

Flaem

W repozytorium frozeggs Flaem trzyma eggi między innymi dla SCP:SL, Minecrafta, Terrarii, Palworld i Factorio. Egg SCP:SL instaluje serwer przez SteamCMD z aplikacją 996560, startuje ./LocalAdmin z portem serwera, uznaje start po linii "Waiting for players.." i zatrzymuje serwer komendą EXIT.

frozeggs/eggs/scp-sl/dedicated.jsonjson
"startup_invocation": "./LocalAdmin ${SERVER_PORT}","process_configuration": {  "startup": { "done": ["Waiting for players.."] },  "stop": { "type": "command", "value": "EXIT" }}

Kiedy to ma znaczenie dla firmy

  • Gra spoza listy. Bez eggu panel nie wie, jak zainstalować i uruchomić serwer.
  • Własne ustawienia. Zmienne w eggu dają klientom wybór wersji czy mapy bez dostępu do konsoli.

Co się często myli

Często słychać: Egg to obraz Dockera.W praktyce: Egg wskazuje obraz, ale opisuje też instalację, start, zmienne i zatrzymanie.

Powiązane hasła: Pterodactyl, Docker

Więcej: Serwery gier, Serwer SCP:SL od zera, Instalacja panelu Pterodactyl

Gry i Discord

Serwery gier, pluginy, sklepy i boty.

Plugin Minecraft

Plugin Minecraft to dodatek do serwera Paper lub Spigot, który zmienia grę bez instalowania czegoś u graczy.

Plugin działa po stronie serwera, więc gracz wchodzi zwykłym klientem gry. Pluginy dodają komendy, sklepy, minigry, zabezpieczenia i integracje, na przykład z Discordem. Pisze się je w Javie przeciwko API serwera, dziś najczęściej Paper.

Jak to działa

  1. Plik jar. Plugin to plik jar w katalogu plugins serwera.
  2. Zdarzenia i komendy. Kod reaguje na zdarzenia gry i rejestruje komendy.
  3. Wątek serwera. Operacje na świecie i graczach dzieją się na wątku serwera.

Przykład z naszej pracy: Plugin, który łączy serwer z platformą

Flaem (frozcraft)

Frozcraft to nasz plugin Paper, który łączy serwer Minecraft z Flaem: lista graczy ze skórkami, statystyki TPS i MSPT, akcje moderacji i nadawanie zakupów ze sklepu. Rozmawia z resztą platformy przez gniazdo Unix na wolumenie serwera, bez otwierania żadnego portu.

Kiedy to ma znaczenie dla firmy

  • Serwer z własnym trybem gry. Unikalne mechaniki wymagają pluginu pisanego pod serwer.
  • Integracje. Sklep, Discord czy panel łączą się z grą przez plugin.

Co się często myli

Często słychać: Plugin i mod to to samo.W praktyce: Mod zwykle wymaga instalacji u graczy. Plugin działa tylko na serwerze.

Powiązane hasła: RCON, Itemshop

Więcej: Pluginy i skrypty do gier, Serwery gier, Pierwszy plugin Minecraft na Paper, Itemshop dla serwera Minecraft, Builder komendy /give, Builder /tellraw i /title

RCON

RCON to protokół zdalnej konsoli serwera gry, którym wysyła się komendy przez sieć.

RCON pozwala wysyłać komendy do konsoli serwera z innego programu: logujesz się hasłem, wysyłasz komendę, dostajesz jej wynik. W Minecrafcie włącza się go w server.properties, domyślnie na porcie 25575. Połączenie nie jest szyfrowane, więc port nie powinien być dostępny z internetu.

Jak to działa

  1. Logowanie. Pakiet typu 3 z hasłem z rcon.password.
  2. Komenda. Pakiet typu 2 z treścią komendy.
  3. Odpowiedź. Serwer odsyła wynik z tym samym identyfikatorem żądania.

Przykład z naszej pracy: Celowo bez RCON

Flaem (frozcraft)

Frozcraft w Flaem nie używa RCON. Komunikuje się z platformą przez gniazdo Unix na wolumenie danych serwera, bez portu i bez ekspozycji w sieci, a dostawy ze sklepu pobiera sam przez wychodzące HTTPS. RCON zostaje dla prostych narzędzi administracyjnych w sieci prywatnej.

Kiedy to ma znaczenie dla firmy

  • Proste automaty. Restart, ogłoszenie czy kopia świata z zewnętrznego skryptu.
  • Bezpieczeństwo. Hasło RCON leci otwartym tekstem, więc port musi zostać w sieci prywatnej.

Co się często myli

Często słychać: RCON nadaje się do sklepu z przedmiotami.W praktyce: Nie wie, czy gracz jest online, i nie chroni przed podwójnym nadaniem. Do sklepu lepsza jest kolejka z pluginem.

Powiązane hasła: Itemshop, Plugin Minecraft

Więcej: Pluginy i skrypty do gier, Itemshop dla serwera Minecraft, Generator server.properties

Itemshop

Itemshop to sklep serwera gry, w którym gracze kupują rangi i przedmioty nadawane automatycznie.

Gracz wybiera rangę albo przedmiot, płaci, a serwer nadaje mu go bez udziału administratora. Najtrudniejsze w itemshopie nie jest przyjęcie płatności, tylko pewność, że każdy opłacony przedmiot trafi do właściwego gracza dokładnie raz, także gdy ten akurat jest offline.

Jak to działa

  1. Zamówienie z gry. Plugin zna UUID gracza i otwiera zamówienie.
  2. Płatność. Bramka potwierdza płatność, a zamówienie trafia do kolejki.
  3. Nadanie. Plugin pobiera dostawy i nadaje je graczom online.

Przykład z naszej pracy: Sklep, w którym gracz nie ma konta

Flaem

W sklepie Flaem gracz nie ma konta ani hasła. Identyfikuje go to, co zgłasza gra, na przykład UUID konta Minecraft, potwierdzone przez plugin tokenem serwera. Przedmiot nie niesie komendy konsoli, tylko klucz dostawy, a plugin bierze dostawy w dzierżawę na 10 minut i potwierdza każdą jednym warunkowym zapisem.

Kiedy to ma znaczenie dla firmy

  • Serwer, który się utrzymuje. Sprzedaż rang i kosmetyków pokrywa koszty serwera, w granicach zasad Mojang.
  • Mniej pracy administracji. Automatyczne nadanie zastępuje ręczne wpisywanie komend po każdej wpłacie.

Co się często myli

Często słychać: Wystarczy pole na nick i komenda przez RCON.W praktyce: Nick można podać cudzy, a RCON nie wie, czy gracz jest online. To proszenie się o reklamacje.

Powiązane hasła: RCON, Plugin Minecraft, Bramka płatności

Więcej: Pluginy i skrypty do gier, Serwery gier, Itemshop dla serwera Minecraft, Przelewy24 REST API

Komendy slash

Komendy slash to polecenia bota Discord wpisywane po ukośniku, z podpowiedziami i opisem w aplikacji.

Po wpisaniu ukośnika Discord pokazuje listę komend botów na serwerze, z opisem i polami do wypełnienia. Bot rejestruje komendy w Discordzie, a ich wywołanie przychodzi do niego jako interakcja, na którą musi odpowiedzieć w ciągu 3 sekund.

Jak to działa

  1. Rejestracja. Bot synchronizuje drzewo komend z serwerem albo globalnie.
  2. Wywołanie. Użytkownik wybiera komendę i wypełnia pola.
  3. Odpowiedź. Bot odpowiada od razu albo odracza odpowiedź i wysyła ją później.

Przykład z naszej pracy: Komendy bota mailcheck

mailcheck

Nasz bot mailcheck w discord.py 2.7.1 ma komendy slash w trzech cogach, między innymi /stats ze statystykami skrzynki i administracyjną /addkonto z wyborem kierunku: odebrane, wysłane albo oba. Opisy pól użytkownik widzi w Discordzie, zanim wyśle komendę.

Kiedy to ma znaczenie dla firmy

  • Bot na serwerze społeczności. Komendy z podpowiedziami nie wymagają uczenia się składni.
  • Uprawnienia. Komendy administracyjne można ograniczyć do wybranych ról.

Co się często myli

Często słychać: Bot musi czytać wszystkie wiadomości, żeby mieć komendy.W praktyce: Komendy slash nie wymagają uprzywilejowanej intencji Message Content.

Powiązane hasła: Webhook, OAuth

Więcej: Boty Discord, Discord, Bot Discord w Pythonie, Builder komendy slash, Kalkulator uprawnień Discord, Znaczniki czasu Discord

Pytania o słownik