Net-Base Magazyn

12.07.2026

Delphi dla aplikacji przedsiębiorstw: dlaczego istniejące systemy można dzięki temu nadal planowo modernizować

Delphi w wielu firmach nie jest „Legacy”, lecz stabilnym rdzeniem oprogramowania biznesowego bliskiego procesom. Artykuł pokazuje, jak można bezpiecznie zmodernizować aplikacje Delphi — ze skupieniem na dostępie do danych, interfejsach, eksploatacji, bezpieczeństwie i migracji bez...

12.07.2026

Od tematu magazynowego do praktyki projektowej

Pasujące strony usługowe i techniczne do artykułu

Delphi für Unternehmensanwendungen ist in vielen Organisationen keine nostalgische Entscheidung, sondern eine betriebliche Realität: gewachsene Desktop-Clients, Services und Datenzugriffe, die über Jahre Prozesse stabil getragen haben. Wer als IT-Leitung oder Administrator Verantwortung für Verfügbarkeit, Wartbarkeit und Security trägt, stellt dabei selten die Frage „Budować od nowa czy zachować?“, sondern: Wie modernisieren wir kontrolliert, ohne die laufende Produktion zu gefährden?

Dieser Beitrag ordnet Delphi im Jahr 2026 aus Sicht von Betrieb und IT-Entscheidern ein. Im Mittelpunkt stehen nicht Framework-Details, sondern die Punkte, die im Alltag zählen: Datenbankzugriff (inklusive BDE-Ablösung), Schnittstellen und REST-APIs, Deployment als Windows- und Linux-Services oder Linux-Daemon, Security-Basics, 32/64-Bit und Unicode-Migration sowie Architektur, die Teams über Jahre tragen können. Ziel ist eine belastbare Entscheidungsgrundlage: Wann ist Delphi sinnvoll, wann wird es riskant, und welche Modernisierungspfade haben sich bewährt?

Warum Delphi in Unternehmen weiterhin eingesetzt wird

Delphi-Anwendungen findet man häufig dort, wo Prozesse nicht „nice to have“ sind, sondern Kerngeschäft: Auftragserfassung, Produktion, Logistik, Labor- oder Geräteanbindung, Service- und Außendienst, interne Portale rund um Datenqualität oder Freigaben. Solche prozessnahen Softwarelösungen sind oft über Jahre präzise auf Abläufe, Sonderfälle und Schnittstellen getrimmt. Ein kompletter Neubau würde nicht nur Entwicklungskosten auslösen, sondern vor allem Risiko: Prozesswissen geht verloren, Schattenfunktionen werden erst im Betrieb sichtbar, und die Übergangsphase frisst Kapazität in IT und Fachbereich.

Delphi ist in diesem Kontext interessant, weil es typischerweise drei Anforderungen gut bedient:

  • Stabile Desktop- und Service-Laufzeit: Viele Anwendungen laufen als VCL-Desktop-Client oder als Windows- und Linux-Services über Jahre hinweg sehr zuverlässig. Für den Betrieb ist das oft ein wichtiger Faktor.
  • Direkter Datenbankzugriff und gute Performance: Delphi-Anwendungen arbeiten häufig nah an SQL und Transaktionen. Das ist hilfreich, wenn Prozessschritte und Datenkonsistenz im Vordergrund stehen.
  • Schrittweise Modernisierung: An vielen Stellen lässt sich inkrementell modernisieren: Datenzugriff austauschen, Schnittstellen ergänzen, einzelne Module refaktorieren, 64-Bit oder Unicode umstellen – ohne Big-Bang.

Die Kehrseite: Genau weil diese Systeme so lange laufen, steckt oft technischer Ballast drin. Veraltete Treiber, fehlende Trennung von UI und Logik, historisch gewachsene Rechte-Modelle oder unklare Installationsroutinen werden im Betrieb irgendwann teuer. Der Nutzen von Delphi hängt deshalb weniger an „der Sprache“, sondern an der Modernisierungsfähigkeit des gesamten Systems.

Delphi für Unternehmensanwendungen: Typische Systemlandschaften und Integrationsmuster

In der Praxis ist Delphi selten ein isoliertes Einzelprogramm. Häufig ist es ein Baustein in einer Landschaft aus Datenbanken, Identitäten und weiteren Systemen. Für Betrieb und Administration ist entscheidend, wie sauber diese Kopplungen sind. Typische Muster sind:

Desktop-Client plus zentrale Datenbank

Klasyczna konfiguracja: klient Windows, centralny SQL Server, PostgreSQL, Firebird lub MariaDB. Problem pojawia się, gdy klienci operują bezpośrednio na tabelach produkcyjnych, a logika domenowa została przez lata rozproszona w zdarzeniach UI i ciągach SQL. Modernizacja często oznacza: ustandaryzowanie dostępu do danych, zdefiniowanie granic transakcji oraz uzupełnienie o logging i monitoring — bez naruszania procesu biznesowego.

Usługi w tle: Windows-Service oder Linux-Daemon

Wiele firm uruchamia komponenty Delphi jako usługi „headless“: import/eksport, integracje z ERP/DMS/CRM, przepływy drukowania i PDF, nocne zadania wsadowe lub polling urządzeń. Windows-Service to proces usługowy uruchamiany przez Windows z określoną logiką start/stop oraz typowymi wymaganiami dotyczącymi logowania i odzyskiwania po awarii. Linux-Services są funkcjonalnie podobne, lecz zwykle działają pod systemd (start, restart, health-checki). W eksploatacji istotne są: przejrzysta konfiguracja (bez „pliku INI w katalogu programu”), model uprawnień, logi z rotacją oraz zdolność do planowanego wdrażania aktualizacji.

REST-API jako pomost do portali i systemów zewnętrznych

Jeśli aplikacje Delphi historycznie były „tylko desktopowe“, najczęstszym pomysłem modernizacyjnym jest dodanie REST-API. REST oznacza webowy styl interfejsu, w którym systemy komunikują się przez HTTP przy użyciu jasno określonych zasobów i metod. Dla przedsiębiorstw to droga do udostępnienia portali klientów, procesów mobilnych, BI/raportowania lub integracji z partnerami zewnętrznymi, bez konieczności zastępowania klienta desktopowego. Kluczowe jest przy tym nie samo „istnienie API“, lecz to, aby: uwierzytelnianie, limity żądań, wersjonowanie, sposób raportowania błędów oraz monitoring były operacyjnie kontrolowalne.

Modernizacja bez Big-Bang: co się sprawdziło

Modernizacja odnosi sukces, gdy jest planowalna: jasny zakres, zdefiniowane ryzyka, mierzalne kamienie milowe. W przypadku zasobów Delphi często da się to osiągnąć, jeśli modernizację priorytetyzuje się wzdłuż problemów eksploatacyjnych — a nie wzdłuż „ładnego kodu”.

1) Konsolidacja dostępu do danych (Zastąpienie BDE, FireDAC, strategia sterowników)

Częstym hamulcem jest historyczna Borland Database Engine (BDE). W nowoczesnych środowiskach stwarza problemy: deployment, 64-bit, dostępność sterowników oraz standardy bezpieczeństwa często już nie pasują. Zastąpienie BDE rzadko sprowadza się tylko do wymiany biblioteki. Obejmuje dialekty SQL, typy pól, sortowania, transakcje oraz zachowanie przy błędach w eksploatacji.

W wielu projektach Zastąpienie BDE z natywnym podłączeniem (warstwa dostępu do danych w Delphi, która łączy różne bazy danych przez odpowiednie sterowniki) jest praktycznym krokiem modernizacyjnym, ponieważ zapewnia jednolitą abstrakcję i nowocześniejsze ścieżki sterowników. Kluczowa jest jednak strategia migracji: nie wszystko naraz, lecz modułowo — z jasnymi testami regresyjnymi obejmującymi księgowania, numery dokumentów, blokady i równoległe działanie.

Na pogłębioną analizę ryzyk i podejścia można wewnętrznie odwołać się do artykułów takich jak „Zastąpienie BDE: Jak zmodernizować aplikacje Delphi bez ryzyka operacyjnego” lub „Modernizacja baz danych Paradox”, jeśli w grę wchodzą takie legacy-źródła danych.

2) 64-Bit und Unicode als Betriebsvoraussetzung verstehen

Wiele aplikacji Delphi jest historycznie 32-bitowych i częściowo nie w pełni zgodnych z Unicode. W nowoczesnych środowiskach Windows 64-bit to nie tylko kwestia wydajności, lecz także wymóg dla sterowników, integracji z Office, dużych woluminów danych i zdolności do dalszego rozwoju. Unicode jest kluczowy, gdy istotne są dane międzynarodowe, czyste interfejsy CSV-/XML-/JSON lub spójne sortowanie.

Dla osób odpowiedzialnych za IT ważne jest: ta migracja to nie „skompiluj i gotowe”. Typowe ryzyka to zmienione długości łańcuchów znaków, założenia dotyczące zestawu znaków w interfejsach oraz niekompatybilności ze starszymi DLL lub komponentami drukowania/skanowania. Solidne planowanie obejmuje więc inwentaryzację zależności (drukarki, skanery, podpis, Office, urządzenia) oraz dane testowe zawierające znaki specjalne i realistyczne wolumeny danych.

3) Architektur schrittweise bereinigen (Layer-3, Fachlogik, Schnittstellen)

Wiele zasobów działa, ponieważ są „wszystko w jednym”: UI, logika biznesowa i dostęp do danych są ściśle splecione. W eksploatacji staje się to kosztowne, gdy wymagane są nowe interfejsy, dostęp przez web lub automatyzacja. Sprawdzonym podejściem jest Layer-3 Architektura: rozdział na prezentację (UI), logikę biznesową (reguły, przepływy pracy) i dostęp do danych (SQL/transakcje). Wartość dodana jest bardziej praktyczna niż akademicka: zmiany w interfejsach lub bazie danych dotyczą wyraźniej oddzielonych warstw, testowalność rośnie, a błędy da się szybciej izolować.

Ważna jest kolejność: nie najpierw „refaktoryzować wszystkiego”, lecz najpierw ustabilizować krytyczne rdzenie procesów. Często zaczyna się od szczególnie podatnych na błędy obszarów: logika księgowa, utrzymanie danych podstawowych powodujące skutki uboczne, zadania w tle oraz importy interfejsów. Z każdym modułem wzrasta zdolność opanowania całego systemu.

Bazy danych w centrum uwagi: PostgreSQL, SQL Server, MariaDB oraz zagadnienia migracji

Aplikacje korporacyjne stoją i padają z powodu danych. Delphi zazwyczaj nie jest tu problemem – wąskim gardłem jest historycznie ukształtowana logika bazy danych i dostępu. Typowe scenariusze:

Eksploatacja PostgreSQL w środowisku produkcyjnym z Delphi

PostgreSQL jest często wybierany w przedsiębiorstwach, gdy potrzebna jest solidna baza open-source z dobrą funkcjonalnością SQL i przejrzystymi narzędziami operacyjnymi. W środowisku Delphi istotne są: poprawna konfiguracja sterowników, określona izolacja transakcji oraz jasna procedura migracji zmian schematu (np. wersjonowane migracje bazy danych, które są uruchamiane w procesie wydania). Dla administratorów ważne jest także wczesne zaplanowanie monitoringu (blokady, wolne zapytania) oraz strategii tworzenia kopii zapasowych i przywracania, zamiast odkładania tego do wystąpienia problemów z wydajnością.

SQL Server: stabilny, aber oft mit technischem Ballast

Jeśli Delphi od lat jest powiązany z SQL Server, konfiguracja często jest zasadniczo stabilna, ale niekoniecznie łatwa w utrzymaniu. Typowe problemy to dynamicznie składane instrukcje SQL, niejednolita kontrola transakcji lub brak parametryzacji (co dotyczy bezpieczeństwa i wydajności). Modernizacja często koncentruje się zatem na:

  • Jednolite granice transakcji: kto rozpoczyna/zatwierdza/wycofuje – i gdzie?
  • Parametryzacja: w celu uniknięcia SQL injection i dla stabilniejszych planów zapytań.
  • Czytelne wzorce błędów: timeouty, deadlocki i konflikty blokad muszą być widoczne w logach.

Również tutaj można wewnętrznie odwołać się do pogłębionego artykułu, np. „Modernizacja połączenia SQL Server z Delphi”, jeśli czytelnicy utknęli właśnie w tym obszarze.

Migracje baz danych: Firebird, Paradox, stare struktury

Jeśli w grę wchodzą bazy legacy (np. Paradox lub starsze instalacje Firebird), modernizacja szybko staje się projektem danych. Dla eksploatacji kluczowe są następujące kwestie:

  • Równoległa eksploatacja i plan przełączenia (cutover): Jak długo stare i nowe będą działać równolegle? Jak wykrywa się różnice?
  • Jakość danych: Duplikaty, nieprawidłowe wartości dat, problemy z kodowaniem znaków pojawiają się przy migracjach z dużą pewnością.
  • Uprawnienia i audyt: Kto może co widzieć/zmieniać? Jak rejestruje się zmiany w sposób możliwy do odtworzenia?
  • Możliwość wycofania (Rollback): Co się stanie, jeśli w dniu uruchomienia krytyczny proces nie będzie działał?

Modernizacja Delphi jest zatem automatycznie także dyscypliną w obszarze release i change management: jasne wersje, reprodukowalne wdrożenia, porządne kopie zapasowe i zdefiniowane kryteria akceptacji.

Interfejsy i integracja: REST-API, tożsamości, protokoły

Największym funkcjonalnym dźwigniem nowoczesnej IT korporacyjnej często nie jest interfejs użytkownika, lecz zdolność do integracji. Aplikacje istniejące muszą dziś dostarczać i odbierać dane: portale klienta, DMS/ECM, ERP, BI, bramki e-mail, usługi podpisu, maszyny czy bramki IoT.

Dołożenie REST-API: czego potrzebują eksploatacja i bezpieczeństwo

REST-API rozszerza aplikację Delphi o znormalizowane punkty końcowe HTTP. Dla decydentów korzyść jest jasna: oddziela się nowe kanały (portal, mobile, partnerzy) od cyklu wydań desktopowych. Dla eksploatacji obowiązek również jest jasny: API to publiczne zobowiązanie, które musi być stabilne, monitorowane i zabezpieczone.

W praktyce następujące aspekty warto ustalić wcześnie:

  • Uwierzytelnianie/autoryzacja: oparte na tokenach, najlepiej zintegrowane z istniejącymi tożsamościami (np. SAML 2.0 jako standard Single-Sign-on w przedsiębiorstwach albo późniejsza emisja tokenów).
  • Wersjonowanie: Nowe pola i punkty końcowe nie mogą łamać istniejących integracji.
  • Ograniczenia szybkości i ochrona przed nadużyciami: Ważne nie tylko zewnętrznie — także systemy wewnętrzne mogą generować obciążenie przez nieprawidłową konfigurację.
  • Strukturyzowane logowanie: Request-ID, kontekst użytkownika, czasy wykonania, kody błędów — dla wsparcia i audytu.

TCP/IP, interfejsy plikowe i „niewidzialne” integracje

Obok REST w istniejących środowiskach występuje wiele pragmatycznych integracji: TCP/IP-gniazda do urządzeń, importy plików (CSV/XML), przekazy oparte na e-mailach lub workflowy drukowania/skanowania. Są one często krytyczne dla biznesu, ale słabo udokumentowane. Modernizacja w tym kontekście często oznacza: zinwentaryzować interfejsy, wersjonować formaty, zdefiniować ścieżki błędów i wprowadzić alarmy operacyjne. To mniej efektowne niż nowe UI, ale znacząco zmniejsza przestoje i czas wsparcia.

Eksploatacja na co dzień: wdrożenia, aktualizacje, monitoring, zdolność do wsparcia

System Delphi może być merytorycznie doskonały, a mimo to kosztowny w utrzymaniu, jeśli eksploatacja nie jest uporządkowana. Typowe czynniki kosztotwórcze to ręczne aktualizacje, nieokreślone miejsca konfiguracji, brak telemetrii oraz wsparcie ograniczające się do „proszę wysłać zrzut ekranu”.

Reprodukowalne wdrożenia zamiast „ręcznej konfiguracji”

Dla aplikacji korporacyjnych powtarzalne wdrożenia są kluczowe: taki sam stan w testach, staging i produkcji, możliwe do prześledzenia rollbacki, jasne zależności. W kontekście Delphi dotyczy to typowo:

  • Client-Deployment: MSI/Setup, mechanizmy auto‑update lub dystrybucja oprogramowania za pomocą istniejących narzędzi.
  • Service-Deployment: konto usługi, uprawnienia, typ uruchomienia, opcje odzyskiwania, zależności.
  • Konfiguration: oddzielona od pakietu binarnego, wersjonowana, sterowana per środowisko.

Szczególnie w przypadku usług istotne jest, pod jakim kontem one działają i jak przechowuje się sekrety (np. hasła do baz danych, klucze API). „W postaci jawnego tekstu w pliku“ jest operacyjnie wygodne, ale z punktu widzenia bezpieczeństwa rzadko akceptowalne. Lepsze są operacyjnie ugruntowane secret‑store’y lub przynajmniej mechanizmy chronione przez system operacyjny.

Monitoring i logowanie, które rzeczywiście pomaga wsparciu

W wielu istniejących instalacjach są logi, ale nie da się ich analizować: zbyt dużo szumu, brak korelacji, brak danych kontekstowych. Dla eksploatacji sprawdza się standard minimalny:

  • Strukturierte Logs: znacznik czasu, komponent, poziom istotności (Severity), Request/Job‑ID, użytkownik/najemca (jeśli występuje).
  • Metriken: czasy wykonywania zadań, długości kolejek, wskaźniki błędów, przerwania połączeń.
  • Health-Checks: Czy serwis może osiągnąć bazę danych i zależne systemy?

To przekłada się bezpośrednio na dostępność: zakłócenia są szybciej ograniczane, a wiele „sporadycznych błędów” staje się odtwarzalnych, ponieważ dane kontekstowe już nie będą brakować.

Bezpieczeństwo i compliance: co systemy Delphi muszą dziś spełniać

Bezpieczeństwo w aplikacjach korporacyjnych to mniej pojedyncza funkcja, a raczej zestaw minimalnych standardów. Delphi samo w sobie nie jest automatycznie bezpieczne ani niebezpieczne; kluczowe są architektura i dyscyplina operacyjna.

Typowe problemy bezpieczeństwa w aplikacjach istniejących

  • SQL‑Injection i nieparametryzowane zapytania: Szczególnie istotne, gdy dane wejściowe pochodzą z importów lub interfejsów.
  • Koncepcja uprawnień: Role rosną historycznie bez jasnej dokumentacji. Odbija się to przy audytach i obsłudze wielu najemców.
  • Szyfrowanie transportu: Interfejsy i połączenia z bazą danych muszą w wielu środowiskach być szyfrowane.
  • Zależności: stare DLL, przestarzałe biblioteki kryptograficzne, niejasne statusy licencyjne lub komponenty, które już nie są utrzymywane.

W przedsięwzięciach modernizacyjnych warto traktować bezpieczeństwo nie jako „ostatni punkt na liście kontrolnej”, lecz jako przekrojowy aspekt: dostęp do danych, API, deployment, logowanie i zarządzanie użytkownikami muszą do siebie pasować. W szczególności w przypadku REST‑API poprawna autoryzacja (np. SSO przez SAML 2.0 lub centralnie zarządzane tożsamości) często jest tym punktem, w którym projekt przechodzi z „działa” do „operacyjnie uporządkowany”.

Kiedy Delphi jest właściwym wyborem – a kiedy nie

Dla decydentów pytanie o technologię rzadko ma charakter ideologiczny; jest napędzane oceną ryzyka. Delphi może pozostać sensowną bazą w aplikacjach korporacyjnych, jeśli spełnione są określone warunki.

Dobre powody, by zachować i zmodernizować Delphi

  • Duże dopasowanie procesowe w istniejącym środowisku: Aplikacja odzwierciedla procesy w obszarze biznesowym, które trudno zastąpić.
  • Zarządzalne kroki modernizacji: dostęp do danych, 64‑Bit/Unicode, interfejsy i architekturę można realizować etapami.
  • Jasne wymogi operacyjne: usługi, monitoring, wdrażanie i standardy bezpieczeństwa dają się zdefiniować i zrealizować.
  • Znaki ostrzegawcze, przy których należy wcześnie reagować

    • Niejasne zależności: „Irgendeine DLL“ z dawnych czasów jest krytyczna dla biznesu, ale nikt nie wie dlaczego.
    • Brak dyscypliny testów i wydań: zmiany są bezpośrednio w produkcji „naprawiane“.
    • UI i logika danych nierozerwalne: każda zmiana generuje efekty uboczne i długie pętle wsparcia.
    • Integracja staje się przymusem: jeśli nowe portale/partnerzy/wymagania BI możliwe są tylko przez obejścia, często brakuje strategii API i warstw.

    „Nicht Delphi“ nie jest jednak automatycznie rozwiązaniem. Często prawdziwa decyzja brzmi: czy chcemy kontrolowaną ścieżkę modernizacji z planowalnymi wydaniami – czy przebudowę z dłuższą fazą równoległą, podwójnymi testami i tarciami organizacyjnymi? Ta ocena powinna opierać się na ryzyku procesowym, ryzyku danych i ryzyku operacyjnym, a nie na trendach technologicznych.

    Pragmatyczny plan działania: jak firmy rozpoczynają prace w sposób uporządkowany

    Sensowny start unika zarówno pochopnych działań („Alles neu!“), jak i bierności („Läuft doch!“). W praktyce sprawdza się podejście w wyraźnych pakietach roboczych:

    1. Inwentaryzacja techniczna: zależności, bazy danych, sterowniki, usługi, interfejsy, ścieżki wdrożeniowe, krytyczne zadania wsadowe.
    2. Priorytetyzacja ryzyk operacyjnych: co powoduje awarie, ręczne interwencje lub ryzyka bezpieczeństwa?
    3. Podział modernizacji na etapy: np. najpierw dostęp do danych/BDE-Ablosung mit nativer Anbindung, potem logowanie/monitoring, następnie REST-API, a następnie moduły architektury.
    4. Zdefiniować proces wydania i wycofania: włącznie z migracjami baz danych, kopiami zapasowymi, planami przełączeń (Cutover).
    5. Dokumentacja wspierająca eksploatację: nie w formie powieści, lecz jako klarowne Runbooks: Start/Stop, typowe błędy, odzyskiwanie.

    Ten plan jest celowo ukierunkowany na eksploatację. Zapewnia, że modernizacja nie kończy się w folderze projektu, lecz w oprogramowaniu, które w codziennym użytkowaniu można czysto wdrożyć i serwisować.

    Wniosek: Delphi jest mniej „stary“ niż „zorientowany na eksploatację“ – jeśli modernizacja jest zaplanowana

    Delphi dla aplikacji korporacyjnych jest silny tam, gdzie liczą się stabilność, kontrola danych i procesowe przepływy. Prawdziwa dźwignia nie tkwi w języku, lecz w podejściu do modernizacji, które traktuje równorzędnie eksploatację, bezpieczeństwo i dane: BDE-zastąpienie i FireDAC-strategia, 64-Bit/Unicode, czyste warstwy (Layer-3), REST-APIs z uwierzytelnianiem, powtarzalne wdrażanie oraz logowanie i monitoring, które skracają czas obsługi zgłoszeń.

    Kto działa w ten sposób, może zachować rozwinięte fachowo systemy i doprowadzić je technicznie do stanu, który będzie trwały przez kolejne lata – bez ryzykownego Big-Bang i bez zmuszania organizacji do nieskończonego świata równoległego starego i nowego. Jeśli chcą Państwo strukturalnie ocenić stan swojej Delphi-landskap i wyprowadzić ścieżkę modernizacji, techniczne spotkanie wstępne jest często najszybszą drogą do jasności:

    W obszarze merytorycznym ważną rolę odgrywa też Delphi Modernizacja, gdy integracje, przepływy danych i dalszy rozwój muszą ze sobą ściśle współgrać.

    Omówić projekt lub przedsięwzięcie modernizacyjne z Net-Base.

    Następny krok

    Jeżeli temat stanie się rzeczywistym projektem, architektura, stan istniejący i eksploatacja powinny być rozpatrywane razem na wczesnym etapie.

    Wspieramy nie tylko w pojedynczych zagadnieniach, lecz także wtedy, gdy z fragmentów kodu źródłowego, kwestii związanych z systemami legacy lub koncepcji portalu ma powstać solidny projekt dla przedsiębiorstwa.

    • Stan istniejący, obraz docelowy i ryzyka techniczne są oceniane łącznie.
    • REST, dostęp do danych, portale i Rollout nie będą przesuwane na później.
    • Wcześnie widzą Państwo, która droga jest ekonomicznie i operacyjnie wykonalna.

    Udostępnij wpis

    Udostępnij ten wpis bezpośrednio

    LinkedIn, X, XING, Facebook, WhatsApp i e-mail są natychmiast dostępne. Dla Instagrama przygotowujemy bezpośrednio link i krótki tekst.

    E-mail

    Instagram otwiera się w nowej karcie. Link i krótki tekst są wcześniej kopiowane do schowka.