Jak zrobić startup w dwa i pół tygodnia?

Autor: nme · środa, 18 Sierpień, 2010 · Brak komentarzy ·

Słowo wstępu — będąc na urlopie odwiedziłem rodzinne strony. W międzyczasie wylegiwania się na słońcu i robienia kilometrów na rowerze, namówiłem moją mamę do zmianę podejścia do publikacji treści w Internecie. Ma ona dużo pomysłów, content generuje ciekawy i unikalny, po różnych stronach go rozmieszcza, ale nie ma z tego żadnych korzyści. Wszystko co publikuje w różnych serwisach jest własnością tych serwisów. Strata czasu. Postanowiliśmy, że podzielę się moim hostingiem, na którym mam dużo wolnego miejsca i będzie mogła sobie zacząć w normalny sposób blogować — w Wordpressie. Musiałem tylko wymyślić nazwę domeny... I wymyśliłem. :)

W sobotę 31 lipca kupiłem domenę chwila-dla-siebie.pl. Coś poszło nie tak i strefa w DNSie po stronie panelu administracyjnego mojego providera się nie utworzyła jak należy. Konfiguracja DNS'ów musiała więc poczekać do poniedziałku, kiedy ostatecznie zgłosiłem błąd i został on rozwiązany ręcznie.

Pomysł i realizacja

Kiedy oczekiwałem na dostęp do strefy, przypomniało mi się, że 10 lat temu pewien człowiek na swojej stronie z przepisami kucharskimi obwieścił wszem i wobec, że stronę zamyka, zabiera swoje wiaderko, grabki i opuszcza piaskownice. Stwierdziłem wtedy, że szkoda, żeby się to wszystko zmarnowało, bo korzystałem z tej strony czasami. Cała strona przeleżała u mnie w archiwach jakieś 10 lat. Jako dodatek do bloga, stwierdziłem, że taka strona z przepisami będzie strzałem w dziesiątkę... i zacząłem pisać... :)

Po ponad dwóch tygodniach aplikacja prezentuje się następująco:

Poniżej zamieszczam loga dzień po dniu jej tworzenia

dzień 1, niedziela
  • Napisałem pierwotną wersję parsera do przepisów, analizujący dokumenty html i wypluwający łatwiejsze do przetwarzania za pomocą wyrażeń regularnych pliki tekstowe. Okazało się, że dysponuję 6182 przepisami.
  • Przygotowałem sobie szkielet aplikacji. Wykorzystałem do tego kod mojego bootstrapa Django / JavaScript / CSS (link do opisu na innym moim blogu, w języku angielskim) — zwłaszcza Buildera JavaScript. Dla interfejsu użytkowników wykorzystałem mój bazowy template — z layoutem pionowym (nagłówek, treść, stopka).
dzień 2, poniedziałek
  • modele — przygotowałem modele dla kategorii i przepisów i spędziłem trochę czasu na dopracowanie wyświetlania tych informacji w panelu admina Django.
dzień 3, wtorek
  • Zdeployowałem aplikację na serwerze. Przygotowałem konfigurację serwera www, wrzuciłem sztampowe template'y do wyświetlania błędów. Aplikacja póki co działała na screenie, a serwer WWW obsługiwał zapytania jako reverse proxy.
dzień 4, środa
  • Dodałem layout poziomy (kategorie, przepisy, sidebar). Strona dostosowuje swój rozmiar do szerokości okna przeglądarki, chyba, że jest ona mniejsza niż zadeklarowana minimalna szerokość.
dzień 5, czwartek
  • Napisałem sobie kod do obsługi paginatora przepisów i opisałem to w poprzednim wpisie
dzień 6, piątek
  • Zaimplementowałem wyświetlanie kategorii, paginację przepisów i wyświetlanie konkretnego przepisu.
dzień 7, sobota
  • Napisałem obsługę wyszukiwania przepisów. kod póki co nie jest specjalnie wydajny, ale został napisany tak, aby zastosowanie cache'owania było proste.
  • Zrobiłem też prosty, brzydki design dla layoutu. Jakieśtam obrazki, żeby strona nabrała kształtów, które mnie osobiście dają motywację do dalszej pracy. :)
dzień 8, niedziela
  • Dodałem templatkę do dodawania przepisów i jej obsługę, następnie uzupełniłem obsługę o mailowanie do mnie przez aplikację informacji o nowym przepisie.
  • Dodałem do przepisu przyciski "lubię to" z Facebooka i "dodaj na Śledzika".
dzień 9, poniedziałek
  • Trochę się przyłożyłem, pomyślałem i narysowalem nowy design dla layoutu. Narysowałem kilka podstawowych backgroundów i ustawiłem je w css'ie. Wyszło wystarczająco zadawalająco, żebym mogło tak zostać :)
dzień 10, wtorek
  • Podzieliłem logo na dwie części i poprawiłem je od strony kodu — chciałem aby po wyłączeniu styli, dokument wyglądał tak jak powinien (tagi h1).
  • Dodałem model News'ów, dodałem możliwość edycji do interfejsu Django Admin, news początkowo wpisany w templatkę przeniosłem do skryptu inicjalizującego bazę, a do templatki wstawiłem kod wyświetlający Newsy z bazy. To akurat pamiętam, bo całe mieszanie z newsami zajęło mi tyle ile trwały Fakty na TVN'ie ;)
  • Zrobiłem trochę porządków w modelach, dodałem obsługę vars'ów i memcache, również z mojego frameworka, które wcześniej uznałem za tymczasowo zbędne.
dzień 11, środa
  • Wyczyściłem bazę i zaimportowałem ponownie przepisy. Założyłem też konto mojej koleżance (którą z tego miejsca gorąco pozdrawiam :)), która pomogła mi tego dnia sprawdzić 150 przepisów :)
  • Dodałem osoby które to lubią z Facebooka (ta większa wersja, z ryjkami) do strony głównej.
dzień 12, czwartek
  • Dodałem funkcjonalność zapisywania historii zmian w przepisach z interfejsem dla superusera w Django Adminie, umożliwiającym przeglądanie wprowadzonych zmian i ich cofania (Undo).
dzień 13, piątek
  • Zarejestrowałem się w jednej z sieci afiliacyjnych, a następnie w jednym z programów partnerskich. W międzyczasie weryfikowaliśmy kolejne przepisy, których było już 320.
  • Dodałem reklamę z Google Adsense, przycisk "Share" z Facebooka.
  • Wrzuciłem też na stronę favicona.
dzień 14, sobota
  • Weryfikacja kolejnych 100 przepisów.
  • Usunąłem z głownej Facebookowe osoby które to lubią, założyłem kuchni stronę na Facebooku i dodałem "Like Boxa" do ów Facebookowej strony.
  • Dodałem do strony kod śledzenia Google Analytics oraz dodałem stronę do Google Webmaster Tools
dzień 15, niedziela
  • Zmieniłem obsługę aplikacji przez serwer WWW, obecnie pracuje jako wsgi. Bawiłem się też w zmienianie Suzuki Hayabuzy we włochatego potwora w Gimpie (efekty pracy udostępnione na moim profilu Facebookowym ;))
dzień 16, poniedziałek
  • Gimp i przygotowanie trzech obrazków reklam do sidebara. Wrzuciłem obrazki na serwer, przygotowałem szkielet modułu adbox, który zawierał tablicę z reklamami i parametrami ich wyświetalnia i zaimplementowałem statyczne wyświetlanie losowej reklamy z tablicy.
dzień 17, wtorek
  • Napisałem fadera do reklam w javascripcie, który dzięki wspomnianemu na początku bootstrapowi, eksportował mi je z pythona za pomocą jsona do javascriptu, automagicznie się includował, rozpoznawał które to reklamy ma animować, a następnie je animował :) Chodziło mi to po głowie od jakiegoś już czasu, coś podobnego ma Allegro na głównej.

A tymczasem...

W międzyczasie oczywiście chodziłem do pracy i robiłem tam inne rzeczy. Musiałem też trochę czasu poświęcić mojemu samochodowi, który w trakcie tych dni ucierpiał przed parkingiem pod pracą, bo w moje drzwi wjechało Mondeo. Spisywanie, telefony, oględziny, lakiernik, pisma itp. Straszne pożeracze czasu. No ale dałem radę. :) Acha, i spałem. ;)

Startup nie startup

Zdaję sobie sprawę, że specjaliści od Web 2.0 i social networkingu, np. Grzegorz Marczak z Antyweb'a prawdopodobnie mieliby zastrzeżenia do określania tej aplikacji mianem startupu, a gdyby miał go na swoim blogu opisywać, zebrałbym jako autor więcej batów niż ta aplikacja ma linijek kodu, ale co tam. :) Wszystkich Was na stronę aplikacji serdecznie zapraszam — jest ona dostępna pod adresem kuchnia.chwila-dla-siebie.pl (oraz jako skrót z tej domeny: nme.pl/kuchnia).

W następnym wpisie przedstawię jak wygląda obecna konfiguracja panelu Django Admina aplikacji.

Zostaw komentarz