Studium przypadku – od pomysły na program, programowanie, marketing do sprzedaży
Wszystko zaczęło się w ogrodzie Kamili, program do katalogowania zdjęć i filmów ma być jej podstawowym narzędziem pracy.
Narodziny pomysłu na program do katalogowania zdjęć i filmów
Wszystko zaczęło się od pomysłu mojej żony na nasz przy domowy ogródek, gdzie od wielu lat starannie pielęgnowany trawnik, może zostać sukcesywnie zmieniany na miejsce do uprawy warzyw. Widząc jak pasja bierze górę nad działaniami mojej małżonki, zacząłem mocno zachęcać ją do prowadzenia kanału na youtube gdzie będzie mogła dzielić się swoimi doświadczeniami. Nie było łatwo, ale z czasem sama żona przyznała że jej się to podoba. Link do kanału znajdziecie tutaj.
Jako, że na potrzeby projektowania ogrodów żona uzyskała dotację z urzędu pracy, i w ramach dotacji zakupiony został laptop „mac book” niestety szybko okazało się że 1 terabajt dysku w jaki był wyposażony to trochę mało.
Problemy z NAS’em
Mieliśmy też dysk, zewnętrzny tzw NAS o składający się z 4 dysków o łącznej pojemności 12 TB. Kilka razy w życiu doświadczyłem już awarii dysku i wiem jak bolesne jest utracenie danych, szczególnie tych filmowo / zdjęciowych. NAS działający w trybie RAID dawał nam to bezpieczeństwo, że nawet jak jeden dysk „padnie” to można go po prostu wymienić i całość dalej będzie działać tylko trochę wolniej, aż się odbuduje.
Niestety oczywiście mac, szbyki i piękny, ale problem z NAS’em miał, z racji nieprawidłowego systemu plików (w jego ocenie) nie możliwy był zapis danych. Skłoniło mnie to do poszukiwań innych rozwiązań. To czego nie znalazłem, to program który umożliwił by mi łatwy dostęp do dysku wspólnego, działając w sieci wewnętrznej, jednocześnie z iphone, android, maca i windows. Bo każdy z domowników używa innego sprzętu i pogodzenie ich stało się koszmarem.
Uświadomiłem sobie też, że na moim NAS’ie mam już ponad 3 TB danych, filmów i zdjęć, i bardzo dużo duplikatów. Wiadomo, za każdym razem gdy kończy się miejsce na telefonie robimy wielki zrzut do komputera, i czasem cześć zdjęć pozostaje bo trzeba je zgrać też gdzieś indziej. Więc kolejny zrzut owocuje filmami i zdjęciami zduplikowanym. Ciężko nad tym zapanować.
Poszukiwania alternatywnych rozwiązań
Dlatego podjąłem decyzję o tym że poszukam rozwiązań pozwalających zaadresować wszystkie moje potrzeby. I jak to zwykle ciężko był mi je znaleźć. W każdym brakowało czegoś. Pojawiała się zatem idea, by napisać nowy soft i połączyć go z hardware by stworzyć swego rodzaju przenośny nas, działający szybko w sieci lokalnej, do którego będą automatycznie synchronizować się zdjęcia i filmy robione naszymi smartfonami.
Projekt ma charakter hobbystyczny, choć do jego realizacji wykorzystujemy naszą firmę. Wydzieliliśmy skromne zasoby na potrzeby realizacji tego projektu, ale korzystając z okazji możemy pokazać Ci jak tworzymy produkty cyfrowe od 0. Proces ten nie wiele różni się od innych komercyjnych projektów które tworzymy.
Zatem do dzieła!
Krok 1 : Analiza problemu i spisanie wymagań
Nagranie filmu na kanał Youtube w praktyce
Nagranie kilkuminutowego filmu o sadzeniu warzyw, iphonem (iphone niestety w amatorskich warunkach radzi sobie w naszej ocenie najlepiej) to nie lada wyzwanie. Nagrywać trzeba w jakości 4K bo przecież takie treści promowane są lepiej przez Youtube. Tym samym jedna minuta filmu to 1GB danych.
Dlatego nagranie 3 minutowego filmu w kilku próbach, i najlepiej z dwóch urządzeń (by było bardziej dynamiczne i ciekawie) tworzy całkiem spore ilości danych, może to być nawet około 10GB danych. Nagrywając na ogródku, często tworzymy wiele materiały pod rząd, by wykorzystać ładną pogodę, i dobre oświetlenie. Następnie gdy już jest ciemniej, rozpocząć obróbkę materiałów w bardziej komfortowych warunkach, na komputerach stacjonarnych.
Docelowy efekt – minutowy short na Youtube
Zgrane materiały lądują na dysku, cięcie, obróbka, tworzenie opisu i miniatury, publikacja we wszystkich social mediach i efekt końcowy na przykładzie naszych cukiń :
Niestety w ferworze walki nagraniowej – duplikaty stają się normą, mozolne podpinanie urządzeń i ciągłe zgrywanie staje się frustrującym koszmarem. Skoro wiem że można lepiej to czemu nie?
Filmowy haos
W branży filmów ogrodniczych mamy sezonowość. To oznacza że jeśli film stworzony dziś, nie opublikujemy szybko to raczej jego publikacja będzie miała sens dopiero w następnym sezonie. Niestety wiele razy nie zdążyliśmy obrobić filmów w wystarczająco krótkim czasie, dlatego zostały zaparkowane i wyjdą w kolejnych latach. Kluczowe zatem staje się możliwe łatwe przeglądanie, klasyfikowanie zdjęć, nadawanie kategorii, oraz kasowanie, kasowanie, kasowanie.
Materiały które referują do innych materiałów
Tworząc filmy, np. o sadzeniu pomidorów, chcielibyśmy pokazać jakie plony udało się uzyskać w zeszłym sezonie. Materiałów jest masa i w praktyce, jeśli nie znajdziemy czegoś szybko, rezygnujemy. Choć w głębi duszy wiemy, że nasz materiał finalny mógłby być dla widza ciekawszy. Clipcraze ma nam w tym pomóc. Oczywiście mamy w Apple aplikację „zdjęcia” ale limit 1TB jak już pisałem wykorzystaliśmy dawno temu. Podłączanie w to miejsce innych dysków jest mega kłopotliwe, i to ciągłe kopiowanie, kopiowanie, kopiowanie i usuwanie – dramat…
Przecież są chmury Jakub! Po co wymyślać koło na nowo!
Oczywiście są rozwiązania chmurowe, ale płacenie za 3 terabajtową chmurę co miesiąc to trochę zbyt duży wydatek, szczególnie gdy działalność youtubową, jeszcze nie przynosi zysków. Przesyłanie do chmury terabajtów danych i pobieranie na kolejnych urządzenia to dramat czasowy. Tu potrzebne jest rozwiązanie które działa szybko, w wewnętrznej sieci. Nawet przy szybki Internecie 10 GB z jednej krótkiej sesji trwa i trwa, przecież musi się wysłać do chmury z smartfonów a następnie pobrać z chmury na komputerach. To ciągłe czekanie nas wykańcza…
Spisujemy wymagania
Na razie na „brudno”, ale czas spisać pierwszy draft wymagań, posłuży on naszej designerce do zaprojektowania interfejsu aplikacji. Dokumenty googlowe pozwalają ja wspólną edycje i śledzenie zmian, dlatego doskonale nadają się do takich zadań.
Krok 2 : Zaprojektowanie makiet aplikacji w figmie
Figma jest programem do przygotowywani projektów aplikacji można, dedykowanego zespołom programistycznym i projektowym, ClipCraze w figmie możesz zobaczyć po tym linkiem.
Po konsultacji z designerka, na podstawie roboczego draftu wymagań powstały pierwsze designy aplikacji w FIGMA. Całość zaczyna nabierać kształtu dając paliwo do kolejnych działań.
Tylko sprawdźmy czy to zadziała?
Ponieważ jakiś czas wcześniej tworzyliśmy oprogramowanie do zarządzania parkingami, miałem już doświadczenie w przygotowywaniu obrazów linuksowych, dla dedykowanych mini komputerów. Krótkie poszukiwania dostępnych na rynku rozwiązań pozwoliły na skonstruowanie pierwszego prototypu urządzenia.
Krok 3 : POC (proof of concept) – hardware – udowodnij że się da!
Nie mamy całej wieczności, dlatego konieczne jest by w rozsądnej jednostce czasu zdobyć elementy pozwalające na zbudowanie prototypu sprzętowego rozwiązania, które pozwoli nam na bezpieczne przechowywanie danych (duplikacja na 2 dyskach). Dodatkowo będzie możliwe łatwe spięcie z siecią domowa WIFI przy użyciu kabla sieciowego, by zapewnić maksymalnie wydajny przesył danych.
Przygotowałem zestaw który spełnił moje oczekiwania. Dwa dyski 8 Terabajtów i obudowa, porty sieciowy, możliwość podłączenia kabla hdmi. System operacyjny linux, zapewnia stabilne działanie.
Dyski specjalnie się nie grzeją więc i wentylator włącza się bardzo rzadko, a to oznacza że urządzenie pracuje bardzo cicho.
Zależało mi na tym by wpinać je bezpośrednio w domowy ruter bezprzewodowy.
Etap zakończył się sukcesem, poskładany zestaw pokazał konsolę linkusową, dlatego możemy przejść do kolejnego kroku.
Krok 4 : Wybór technologii – program do katalogowania zdjęć i filmów
Wybór technologii był trochę oczywisty, z racji największej liczby modułów gotowych w naszych zasobach jako software housu, na backend wyrusza C#, a na froncie działa Angular. Na tym etapie zastanawiam się jeszcze i ta decyzja nie została podjęta czy aplikacja natywna dla smartfonów napisana będzie w Angular z Capacitorem, czy może wykorzystamy .NET MAUI (Xamarin). Wynika to z tego że może on sobie trochę lepiej radzić z obsługą procesów w tle mocno obciążających iphone.
Na androidzie nie spodziewam się zbyt dużych problemów w tym zakresie.
Jednakże decyzje te podejmiemy później.
Krok 5 : Rozpoczęcie developmentu
Indeksator plików
Rozpoczynamy pierwszy etap developmentu, zaczynamy od aplikacji konsolowej która skanuje wskazaną ścieżkę na dysku, i buduje indeks plików, oraz kalkuluje unikalny hash danego pliku. To pozwoli nam na łatwe odnalezienie zduplikowanych plików.
Serwer webapi
Następnie tworzymy serwer webapi, którego rolą będzie przyjmować pliki, wyszukiwać i zwracać odfiltrowane wyniki. To będzie serduszko naszego systemu. Zaczniemy od prostego filtrowania a jeśli uda nam się znaleźć kolejnych użytkowników będziemy wzbogacać go o kolejne funkcje.
Krok 6 : Doprecyzowanie MVP (Minimum Viable Product)
To co ma wchodzić w skład mvp (czyli produkt z minimalną ilością funkcjonalności, który dostarcza wartość swojemu odbiorcy i jest gotowy do działania) zawsze staramy się ustalić na początku. Wyjątkiem są projekty gdzie tak jak tutaj (program do katalogowania zdjęć i filmów), nie do końca wiemy czy uda się w rozsądnym koszcie przygotować produkt ze względu na potencjalne komplikacje hardware’owe (sprzętowe). Nie miałem pewności czy sprzęt potrzeby do zbudowania NAS’a nie będzie zbyt drogi, czy transfery między urządzeniami będą wystarczająco szybkie dlatego tym razem krok mvp powędrował trochę dalej w kolejce.
Najważniejszy problem do rozwiązania
Wbrew pozorom, ustalenie co jest najbardziej palącym problemem do rozwiązania, tak żebyśmy wraz z małżonką czuli że aplikacja daje nam realną wartość nie było takie proste. Gdzie kiedyś usłyszałem hasło, że jeśli nie wstydzisz się swojej aplikacji którą wypuściłeś jako pierwszą wersje, to zrobiłeś to zdecydowanie za późno. Konieczne jest zatem ucięcie wszelkich możliwych funkcjonalności jakie planujemy dla całej aplikacji i skupienie na pierwszych które pozwolą nam uzyskać benefit w codziennej pracy. Jednocześnie przygotujemy infrastrukturę, serwery, procesy wdrażania oprogramowania (continues delivery i contiues integration) by szybko rozbudowywać clipcraze o kolejne funkcje, zapewniając jego ciągłe, nieprzerwane działanie. Dodatkowo, nie możemy pozwolić sobie na zbyt duża inwestycję w pomysł, który nie koniecznie mają inni Youtuberzy.
Na tym etapie inwestycja czasowa to około 33 godzin, a zakupione materiały niezależnie od powodzenia projektu wykorzystamy w innym zakresie, dlatego dlatego nie liczymy ich do budżetu projektu (poniżej print screen z timeroom – naszej aplikacji do rejestrowania czasu pracy)
Doprecyzujmy nasze wymagania :
Mamy zatem dysk z 3 terabajtami danych, zacznijmy od przeglądarki która pozwoli nam zrobić indeks plików. On zdecydowanie ułatwi nam wyszukiwanie i nadawanie kategorii. Zaproponowany widok wyszukiwarki zdjęć i filmów wygląda tak:
Główne problemy
- Duplikacja plików i puchnące repozytorium filmów. Ilość miejsca nie wystarczająca na macbooku, którego rozszerzanie w Apple kosztuje majątek, a w przypadku laptopa jest nie możliwe.
- Trudne w przeszukiwaniu gigantyczne archiwum
- Bałagan w trakcie tworzenia materiałów – brak łatwej możliwości grupowania filmów i zdjęć podczas kręcenia materiałów
- Materiały „rozsiane” na wielu urządzeniach (Smartfon Galaxy, IPhone i Huawei P30) – żmudne zgrywanie, przez co bardzo pracochłonne.
Najbardziej palącym problemem, jednocześnie wydającym się najłatwiejszym w rozwiązaniu jest rozpoczynanie sesji zdjęciowej.
Problem : wiele filmów i zdjęć z których złożymy jeden materiał do publikacji na youtube, tiktok, fb, instagram.
Pomysł na rozwiązanie :
Kiedy jesteśmy na ogrodzie, na jednym ze smartfonów wciskamy „Start sesji” i nadajemy jej nazwę np : „sadzenie ogórków”. W każdym z naszych urządzeń uruchomiana jest aplikacja której zadaniem jest łączenie się z „serwerem” i automatyczne wrzucanie filmów. Lądują one w katalogu o podanej przez nas nazwie projektu. Po skończonym nagrywaniu sadzenia ogórków przechodzimy do nagrywania kompostownika. Jeden przycisk na smartfonie i nasz program do katalogowania zdjęć i filmów tworzy kolejny projekt. Smartfony w tle od razu wysyłają nagrane materiały na nasz serwer z użyciem szybkiego wifi.
Często nagrania w ogrodzie dzielą się na wiele krótkich tematycznych filmików. Takie rozdzielenie pozwoli nam zachować porządek i skupić się na obróbce wideo.
Potrzebne jest też miejsce w którym widzimy który projekt został już obrobiony i załadowany na różne platformy social mediowe. Bo wiele razy tworząc dużo materiałów nagle któryś zestaw filmików został przeoczony.
Widok wszystkich projektów multimedialnych – program do katalogowania zdjęć i filmów.
Zaprojektowaliśmy widok który ma w tym pomóc:
Z powyższego widoku, chcemy móc łatwo zobaczyć które projekty filmowe nie zostały jeszcze opublikowane na poszczególnych platformach, łatwo odszukać wewnątrz nich fragmenty filmów które posłużą do tworzeni nowych projektów, lub zdjęcia na podstawie których wykonamy miniatury.
Krok 7 : Określamy buyer personę
Na etapie mvp nie będziemy robić rozbudowanych analiz dla stworzenia buyer persony. Uproszczona definicja pozwoli nam na zbudowanie.
Kontynuacja już w krótce... nie przegap kolejnych wpisów i zapisz się na nasz newsletter
Zapisz się na nasz newsletter w którym raz na dwa tygodnie dzielimy się doświadczeniami z tworzenia aplikacji publicznie.