Duet muzyczny potrzebuje w sieci kilku rzeczy: miejsca, gdzie widać i słychać, jak gra, repertuaru, informacji o terminach i sposobu, żeby łatwo poprosić o ofertę. Zaczynałem od takiej zwykłej wizytówki, a skończyłem na stronie z panelem do zarządzania treścią, biblioteką zdjęć i nagrań, ofertami w PDF i wysyłką maili. Z perspektywy czasu to właśnie na Duostrings nauczyłem się wielu rzeczy, które dziś składają się na Panel Biznesu.
Początek, czyli znowu serwer
Pierwsza wersja strony powstała na początku lutego 2026 roku i trafiła do tej samej darmowej usługi do uruchamiania stron, z której korzystała wtedy Algebra. Już pierwszego dnia chciałem, żeby formularz kontaktowy wysyłał mi maila przez skrzynkę Gmaila. Zmieniałem sposób łączenia się ze skrzynką i wydłużałem czas oczekiwania, ale nic nie pomagało, aż wyszło, że darmowa wersja tej usługi po prostu blokuje taką wysyłkę poczty. Tego samego dnia wyłączyłem maile, a później przeniosłem całą stronę do Cloudflare, firmy, która udostępnia miejsce na strony i dane.
Po przenosinach treści strony i zgłoszenia trafiły do bazy danych, a zdjęcia, nagrania i pliki do osobnego magazynu, jedno i drugie w Cloudflare. Tym razem dane od początku leżały poza samą aplikacją, a nie na jej dysku, jak kiedyś przy rezerwacjach w Algebrze. Strona działa na serwerach rozsianych po świecie, więc odpowiada odwiedzającemu z miejsca, które jest blisko niego.
Treść, którą zmienia się bez programisty
Strona muzyków żyje: zmieniają się terminy, repertuar, nagrania i zdjęcia z koncertów. Nie chciałem, żeby każda taka zmiana wymagała poprawki w kodzie, więc strona dostała własny panel do zarządzania. Treść edytuje się w nim jak w zwykłym edytorze tekstu, zdjęcia i filmy trafiają do biblioteki, a przy każdym utworze w repertuarze jest krótka, czterdziestopięciosekundowa próbka. Jest też kalendarz dostępności, z którego odwiedzający od razu widzi, czy termin jest wolny, i przełącznik między stroną duetu a osobną ofertą ślubną.
W maju doszło jeszcze zapisywanie całej treści do pliku Word i wczytywanie jej z powrotem. Brzmi to jak drobiazg, ale pozwala poprawić wszystkie teksty naraz w wygodnym edytorze i wgrać je jednym kliknięciem.
Podobny pomysł miałem już wcześniej w Algebrze, gdzie cennik był osobnym plikiem, który zmieniałem bez ruszania reszty strony. W Duostrings poszedłem dalej, bo edytować dało się już wszystko. Od takiego panelu do Panelu Biznesu, w którym treść swojej strony zmienia właściciel dowolnej małej firmy, droga okazała się krótka.
Zdjęcia i filmy, które same się dopasowują
Przy stronie z nagraniami szybko wychodzi, że to właśnie zdjęcia i filmy ważą w niej najwięcej. Trafiłem wtedy na usługę, która je przechowuje, a każdemu urządzeniu podaje w odpowiednim rozmiarze i formacie: telefon dostaje mniejsze zdjęcie niż monitor, a przeglądarka format, z którym radzi sobie najlepiej. Od połowy maja wszystkie nowe pliki szły właśnie tam, a dotychczasowy magazyn służył za zapas. Stare adresy plików prowadziły automatycznie pod nowe, więc żaden link na stronie się nie zepsuł.
Filmy trzeba było jeszcze obrabiać, więc postawiłem do tego osobny serwer w chmurze Oracle, który przygotowywał nagrania i odsyłał gotowy plik. Działało to dobrze, tylko elementów, które musiały ze sobą współpracować, było coraz więcej: strona, magazyn plików, usługa do zdjęć i filmów, serwer do wideo i kolejka zadań między nimi. Pod koniec czerwca uprościłem to wszystko. Usługa do zdjęć i serwer do obróbki wyleciały, a pliki trafiają dziś przez samą stronę prosto do magazynu. Zapłaciłem za to niższym limitem wielkości pliku w bibliotece, ale każdy element, którego nie ma, to element, który nie może się zepsuć.
Oferty w PDF
Najwięcej nauczyłem się na ofertach. W panelu powstało miejsce do przygotowywania ofert: pisze się w nim jak w zwykłym edytorze tekstu, wybiera jeden z kilku gotowych wzorów i ustawia wygląd tekstu, a jeden przycisk dopasowuje całość do strony A4. Każdy odbiorca dostaje własny plik PDF z datą, miejscem i rodzajem wydarzenia, a PDF powstaje w samej przeglądarce, bez żadnej usługi z zewnątrz. W czerwcu doszły wersje niemieckie: strona po niemiecku, wzory ofert w panelu i oferty z cenami w euro, bo część wydarzeń odbywa się po drugiej stronie granicy.
Maile z własnego adresu
Skoro oferty, to i maile, i to nie z prywatnej skrzynki, tylko z adresu w domenie strony. Poczta przychodząca na adres kontaktowy trafia do zwykłej skrzynki, a wychodząca idzie przez usługę, która wysyła maile w imieniu strony. Żeby taka poczta nie lądowała w spamie, domena musi mieć ustawiony elektroniczny podpis, po którym serwer odbiorcy poznaje, że mail naprawdę przyszedł z tej domeny. Każde zgłoszenie z formularza jest zapisywane, a mnie przychodzi o nim powiadomienie mailem i na WhatsAppa.
Do tego doszły kampanie: wczytywanie listy kontaktów z pliku, wiadomości dopasowane do każdego odbiorcy i niewidoczny znacznik, który mówi, czy mail został otwarty, i odróżnia prawdziwe otwarcie od automatów, które same zaglądają do maila, takich jak skanery poczty. Przy wysyłce wyszły limity, bo darmowa wersja usługi do maili przyjmuje dwa maile na sekundę i sto dziennie, a sama strona może za jednym razem wykonać tylko ograniczoną liczbę operacji. Skończyło się na wysyłce po jednym mailu, z ponowną próbą, gdy serwer odmówi, i domyślnym odstępem dwóch minut, żeby nie zepsuć domenie opinii u dostawców poczty.
Błąd, którego już nie powtórzę
Mając gotowe oferty i działającą wysyłkę, zrobiłem to, co wydawało mi się naturalne: rozesłałem oferty mailem do lokali, które mogły być zainteresowane. Nie wiedziałem wtedy, że w Polsce wysłanie oferty handlowej mailem wymaga wcześniejszej zgody odbiorcy, także wtedy, gdy odbiorcą jest firma. Od listopada 2024 roku reguluje to Prawo komunikacji elektronicznej, a za tak zwany cold mailing, czyli wysyłanie ofert do kogoś, kto o nie nie prosił, grozi kara.
Technicznie wszystko działało bez zarzutu, a mimo to cała kampania była pomyłką. Wyciągnąłem z tego wniosek i zmieniłem podejście: zamiast wysyłać oferty tam, gdzie nikt o nie nie prosił, strona dostała osobną podstronę dla lokali z formularzem, w którym właściciel sam prosi o ofertę i zgadza się na kontakt. Dopiero wtedy oferta w PDF ma do kogo pójść. To lekcja, której nie nauczy żaden kurs programowania: zanim coś zautomatyzujesz, sprawdź, czy wolno to w ogóle robić.

Co z tego zostało
Z Duostrings wyniosłem cały zestaw rzeczy, których wcześniej nie znałem: pocztę z adresu we własnej domenie, wysyłkę maili ze strony, przechowywanie zdjęć i nagrań, tworzenie dokumentów w przeglądarce i panel, w którym treść zmienia się bez programisty. Z tych samych klocków składam teraz Panel Biznesu, w którym mała firma dostaje stronę, oferty w PDF i kontakt z klientami w jednym miejscu.

