Am participat anul acesta pentru prima dată la Startup Weekend Cluj. Și nu oricum, am mers pregătit să prezint propria mea idee. La primul pitch, această idee se numea TaskList pentru ca la sfârșitul evenimentului să se transforme în Do it for. Am pornit cu ideea unui site prin care să poți externaliza acele sarcini pe care nu știi, nu poți sau nu vrei să le faci tu. Mă gândeam aici la curățenie, spălat haine, făcut de mâncare, stat la coadă, spălat mașina, etc.
Alături de o echipă numeroasă și energică am luat locul 3 la acea competiție. Având acest feedback pozitiv și fiind foarte motivați să realizăm acest site care să ne ajute să avem mai mult timp liber am continuat să lucrăm la Doitfor în timpul liber. Din echipa inițială am rămas eu, Codin, Gabi si Victor.
Motivați și dornici să facem ceva care să fie folositor și altor oameni am lucrat cu bucurie la realizarea site-ului. După trei luni, pe 1 iunie, am lansat site-ul doitfor.co (cred că am fost prima echipă de la StartupWeekend care au lansat după eveniment). Așa cum este el acum, site-ul rezolvă două probleme mari: nevoia de mai mult timp și nevoia de venituri în plus. Cine vrea să externalizeze o activitate, oricare ar fi ea, este cel mai avantajat, postează un task și cei dornici să îl ajute și să câștige bani în plus licitează pentru acest task cu suma și detaliile necesare (când, cum și în ce condiții poate realiza taskul). Cel care a postat taskul e singurul care vede cu ce sumă au licitat cei interesați, utilizatorii care licitează văd doar câte licitări sunt, nu și valoarea lor. Astfel evităm goana după cel mai mic preț, care nu avantajează pe nici una dintre părți.
Câteva statistici interesante de pe site: până acum au fost postate 150 de task-uri cu valori cuprinse între 10 si 3500 lei. Avem aproape 1000 de utilizatori îscriși pe site care au licitat de peste 500 de ori pe task-urile postate. În cele patru luni de la lansare site-ul a fost vizitat de aproape 10.000 de vizitatori unici, care au făcut peste 17.000 de vizite și au vizualizat de 73.000 de ori paginile site-ului. Aproape 60% au navigat pe site folosind browserul Chrome, 25% cu Firefox si doar 6% cu Internet Explorer, iar 90% din utilizatori au folosit un PC pentru a vizita site-ul, 8% un telefon mobil si 2% o tabletă.
Au fost realizate cu succes o multitudine de activități: platou sushi, montat tapet, administrat pagini de facebook, redactare de documente, prăjitură tiramisu, activități de merchandising și multe altele.
Suntem abia la începutul activității noastre și mai avem multe de făcut pe toate planurile: marketing, design, programare. Chiar dacă este multă muncă și mult timp în care am putea să ne odihnim după orele de muncă full time pe care toți le avem, satisfacția pe care ne-o aduce este pe măsură. E super să știi că ai făcut ceva care le face oamenilor viața un pic mai ușoară.
Momentan doitfor este complet gratuit, oamenii își schimbă banii direct între ei. Sperăm ca în această toamnă să reușim să implementăm un sistem de plată electronic.
Din punct de vedere tehnic în primul rând aveam nevoie de un limbaj de programare care să ne ajute să ne miscăm rapid. În echipa inițială erau programatori Java (Android), .NET și Python. Am ales Python pentru aplicația web, iar programatorii pentru mobil au dezvoltat în Java pentru Android o aplicație prototip care a fost prezentată la sfârșitul evenimentului. Aplicația prezentată la Startup Weekend a avut nevoie de funcționalitate minimă pentru a demonstra ideea de bază a proiectului: două formulare, unul de înscriere în site și unul de adăugare a unui task, iar pentru mobil, un API simplu compus din două funcții: una pentru a obține lista de task-uri din jurul tău, respectiv pentru a putea licita pe un task.
Pentru partea de web am ales ca framework Django. Dar pentru că aveam nevoie să interogam baza de date în funcție de locația utilizatorului, am folosit o variantă a framework-ului - GeoDjango impreuna cu PostgreSQL cu extensia PostGIS ca și bază de date. Am cumpărat o bază de date de IP-uri de la MaxMind și împreună puteam să determinăm în primul rând locația utilizatorului în funcție de IP, iar apoi să căutăm în baza de date task-uri relevante pentru utilizator sortate după distanța fată de acesta.
Tot pe partea de back-end aveam nevoie de o modalitate de a executa funcții asincron, ca de exemplu, trimiterea de mailuri sau backup la baza de date. Pentru asta am folosit Celery configurat cu un broker bazat pe Redis. Redis va fi foarte foarte probabil folosit în viitor pentru diferite sarcini în aplicație, inclusiv pentru cache, de aceea am optat pentru el în defavoarea brokerului default RabbitMQ.
Pentru partea de front-end am integrat puternica librărie de la Twitter, Bootstrap, împreună cu un limbaj dinamic pentru prezentare, numit LESS. Interacțiunea cu utilizatorul este deocamdată statică, dar pe masură ce complexitatea va creste vom alege un framework pentru front-end de asemenea, cel mai probabil AngularJS.
Deployment-ul a fost făcut pe infrastructura de la Amazon. În prima fază folosim trei micro instanțe de EC2: una pentru webserver, una pentru baza de date, iar a treia pentru sarcini administrative si asincrone. Webserverele sunt în spatele unui load balancer ELB, deși nu a fost implementată funcționalitatea de scalare automată încă.
Tot de la Amazon se folosește Route 53 pentru serviciul de DNS, SES pentru trimitere de e-mailuri și S3 pentru fișiere statice. Dacă se va adăuga suport pentru PostgreSQL la serviciul RDS, probabil vom migra spre acesta pentru baza de date.
Deja avem o multitudine de tehnologii interesante pentru un proiect la început de drum!
Vă invit să folosiți platforma și să ne spuneți cum putem să o îmbunătățim.