Wielu moich przyjaciół zostało ostatnio rodzicami. Taki wiek. I jeden z nich podsunął pomysł na prosty serwis internetowy dla rodziców. A że pracuję w startupie, to hej!, nie muszę czekać na decyzję zarządu i zmianę strategii na drugie półrocze, tylko ziuuu, wczoraj pomysł, dziś pisanie, jutro do sieci. Co prawda - jak wiecie - ostatnio czas mam wypełniony zadaniami w stylu zakup masy akrylowej kolor biały, bieganie z kartonami po schodach na czas i wstawianie ich gdzie się tylko zmieszczą oraz skręcanie miliarda śrubek w meblach, ale przecież trochę relaksu też jest potrzebne
Pomysł: z pobieżnej obserwacji wynika, że debiutujący rodzice dzielą się oni zasadniczo na dwie grupy - tych, którzy uważają, że ich dzieci jedzą za mało, oraz tych, którzy martwią się tym, że ich dzieci jedzą za dużo. I mają potrzebę upewnienia się, czy dziecko przybiera na wadze w takim tempie jak inne dzieci w tym samym wieku. W tym celu wymyślono siatki centylowe (pojęcie ogólne, ale zasadniczo spotkałem się z nim tylko w kontekście rozwoju niemowlaków), na których można sprawdzić, że jeśli dziecko jest chłopcem, ma 3 miesiące i 7 kg wagi, to “jest w 25 centylu”, czyli po ludzku co czwarte dziecko jest lżejsze od niego a trzy na cztery cięższe. Aż kusi się, żeby zrobić to w postaci prostego formularza na stronie internetowej.
I tak w pięć wieczorów powstała prototypowa stronka siatkicentylowe.pl. Wykonana w Cake PHP, baza w mySql, wykresy generowane przez Google Charts API. Pozwala sprawdzić wagę dziecka (do roku), a także wrócić do niej za kilka tygodni i dopisać nowe pomiary, dzięki czemu można kontrolować tendencje zmian wagi.
Czy pomysł ma taki potencjał, by warto było go stworzyć? No cóż, uznałem, że przy dostępnych technologiach stworzenie takiej strony jest tańsze niż zastanawianie się nad tym czy warto. Spróbujemy, popatrzymy jak ludzie będą ją odbierali, zadecydujemy co dalej. Na razie to dla mnie poletko do eksperymentów i uporządkowania wszystkich narzędzi, które są potrzebne przy tworzeniu większych serwisów, typu repozytorium kodu, bugtracker, hosting, pomiary ruchu, publikacja reklam itp.
Cały serwis powstał w pięć wieczorów, w kuchni u rodziców
Wieczór pierwszy
Zaczynam od rysunku na kartce. Jak wyglądają główne strony, jakie są przyciski, jaka nawigacja pomiędzy nimi. Po wypróbowaniu wielu narzędzi jestem wciąż zdania, że kartka i ołówek sprawdzają się najlepiej. W tym przypadku wystarczyła kuchenna chusteczka.
Instalacja cake php. Bliżej tego frameworku nie znam (pisałem już, że php też bliżej nie znam?) ale kiedyś przemknął mi przed oczami i sprawił pozytywne wrażenie.
Schemat bazy danych, dwie tabele jeno.
Zakup domen (siatkicentylowe, siatki-centylowe, siatkacentylowa). Są wolne, kojarzą się wszystkim rodzicom jednoznacznie z kontrolą wagi i wzrostu maluchów, łatwe do zapamiętania, bez polskich znaków, chyba ok, jak myślicie?
Wieczór drugi
Napisanie prototypu aplikacji - formularz do wprowadzenia danych, przetworzenie i wygenerowanie odpowiedniego linku do Google Charts API. Wykresy w google znakomicie udokumentowane i o fajnych możliwościach. Dokumentacja do cake’a też przyzwoita. Jak już miałem kawałek kodu, wrzucam to wszystko do svn (hostuję na projectlocker.com, dostęp poprzez TortoiseSVN i z poziomu Eclipse’a; całkiem przyzwoicie działa poprzez sieć, przeciętne commity lub ściągnięcie całego repozytorium trwająja max. kilkadziesiąt sekund co nie jest specjalnym problemem).
Wieczór trzeci
Dostęp do bazy z poziomu cakephp to prościzna. Dla relaksu (to już podwójny, bo samo programowanie to relaks
) siadam do projektu graficznego. Jak na garażowy startup przystało robię go w gimpie (głównie dlatego, że go znam dość dobrze). Przy wyborze koloru posiłkuję się serwisem colorhunter.com, który pozwala wygenerować paletę ze zdjęcia, wybieram zdjęcie z maluchem
Potem przygotowanie cssa. To przeskakuję szybko, bo strona jest trywialna, a na dodatek nie zamierzam się martwić drobnymi różnicami między przeglądarkami. Niemniej przeglądam, czy się strona nie rozsypuje się w kilku podstawowych przeglądarkach (FF2.0, IE7, Opera 9) i dodatkowo sprawdzam pierwszą stronę na większej puli przeglądarek w serwisie browsershots.org (muszę tam wykupić w końcu jakiś pakiet płatny, w bezpłatnych na wygenerowanie obrazków czeka się około pół godziny).
Uff, fajnie jak po długiej pracy można wreszcie zobaczyć swój produkt
Wieczór czwarty
Dokładanie kolejnych klocków aplikacji - logowanie (na razie proste, hasło jest opcjonalne, nie możliwości jego zmiany i nie ma opcji przypominania - wszystko do dorobienia później). Formularz kontaktowy, chcę słuchać, co mają odbiorcy do powiedzenia. Bo skąd inaczej wiedzieć czy lepiej dodać przypomnienie hasła, możliwość wprowadzania danych historycznych, czy np. dodanie siatek wzrostu? Oprócz tego poprawki, poprawki, poprawki.
Wieczór piąty
Kod nie jest jeszcze całkiem skończony, da się wprowadzić dziecko z wiekiem albo wagą ujemną, ale raczej nie ma co czekać. Dołączam do wzorca strony kod wygenerowany z Google Analytics, przygotowuję skrypt Ant do wysyłania kodu na docelowy serwer (czemu ftp się cały czas wysypuje?), i wprowadzam krytyczne poprawki. I serwis wystawiony!
Wieczór szósty
Wpis na bloga
Na razie ten serwis zasadniczo zostawiam na boku i wracam do moich innych pomysłów (napiszę o nich wkrótce). Ale jakby ktoś z Was miał jakieś sugestie to śmiało, zwłaszcza jeśli też jesteście właśnie w tym pięknym okresie nieprzespanych nocy i walających się wszędzie śpioszków, pieluszek i grzechotek
Jeśli kochasz programowanie, zrobienie aplikacji online do obsługi siatek centylowych zajmuje Ci maksymalnie połowę czasu co mi i chciałbyś móc realizować fajne pomysły nie czekając na akceptację zarządu, to zapraszam do współpracy