Archiwa kategorii: projekt

#6 Projekt: API cz.1

Projekt muszę zacząć oczywiście od zaprojektowania serwera, a konkretnie od API. Zdecydowałam się na REST API, które będzie bardzo proste, oraz na bazę danych MongoDB, aby dane mieć zawsze zapisywane w json.

Rozplanowałam sobie mniej więcej, jak będą wyglądały zapytania oraz odpowiedzi. Póki co, na razie chciałabym, żeby była opcja wysyłania nowych pytań z serii „Co wolisz?” oraz odpowiadania na nie (wyborze jedną z dwóch możliwych odpowiedzi).

Przykładowe zapytania/odpowiedzi

//POST	/questions
{
  "questions" : "Gdybyś był producentem telewizyjnym, wolałbyś",
  "options": 
  [ 
    "anulować znienawidzony przez siebie serial", 
    "przywrócić swój ulubiony serial na czas 1 sezonu" 
  ]
}
//GET	/questions/123
{
  "id" : 123,
  "questions" : "Co wolisz",
  "options": 
  [ 
    "mieć klawiaturę bez podpisanych klawiszy", 
    "być w stanie pisać tylko dwoma palcami na klawiaturze" 
  ],
  "votes": 
  [ 
    123, 
    87 
  ],
  "createdAt" : "2017-31-03"
}

Zastanawiałam się, jak to powinno wyglądać, jeśli chodzi o wysyłanie odpowiedzi. Póki co, to wymyśliłam coś takiego, że jeśli się wyśle „true”, to oznacza, że się zagłosowało na pierwszą opcję do danego pytania, a jeśli „false”, to na drugą opcję. Jednak mam trochę wątpliwości, może jakieś rady?

//POST	/vote/123
{
  "answer": true
}

Razem ze swoimi znajomymi z ciekawości sprawdzaliśmy, jak to wygląda w przypadku either.io. Poszperaliśmy trochę dzięki narzędziom developerskim w przeglądarce Chrome, oto fragment odpowiedzi:

{  
   "questions":[  
      {  
         "id":"2004",
         "live_id":"1029",
         "user_id":"5438",
         "option_1":"overdose on every drug at the same time",
         "option_2":"fall off a 100 story building",
         "option1_total":"571131",
         "option2_total":"504254",
         "comment_total":"905",
         "featured":"0",
         "published":"1",
         "slug":"ending-on-a-high-note",
         "prefix":"",
         "twitter_sentence":"Would you rather overdose on every drug at the same time or fall off a 100 story building?",
         "short_url":"http://wyr.be/Ap9DYg",
         "is_adult":"0",
         "gender":"b",
         "moreinfo":"If you need to ask about survival, you haven't thought this one through.",
         "created_on":"1329921220",
         "updated_on":"1330007989",
         "updated_by":"2788",
         "comments_enabled":"1",
         "title":"Ending on a High Note",
         "is_anonymous":"0",
         "device_id":"d29f4fdff1ab2556f73c59b01fc39201de0ba70f",
         "platform":"iPhone OS",
         "platform_version":"5.0.1",
         "liked":"0",
         "disliked":"0",
         "email":"ericschuey@aol.com",
         "user_is_deleted":"0",
         "display_name":"EpicLibido",
         "favorited":"0",
         "tags":[  
            {  
               "id":"5",
               "name":"Pain & Suffering",
               "published":"1",
               "created_on":"1326212553",
               "slug":"pain-suffering"
            }
         ]
      }
   ]
}

Nie wiem, co o tym myśleć, zastanawiam się, co tu robi informacja o numerze urządzenia, email czy nazwa platformy oraz jej wersja? Możecie to sami sprawdzić i się przekonać na własne oczy, wysyłając zapytanie GET na http://either.io/questions/next/100 np. za pomocą Postmana. A wy co myślicie o tym?

P.S. Postman jest właśnie klientem REST API, można zainstalować go jako wtyczkę do Chrome. Polecam, bo przydaje się szczególnie przy korzystaniu z API, żeby sprawdzić, co zwraca. Ja najczęściej korzystam z Postmana do testowania swojego api.

#4 Projekt: Albo Albo – co to takiego?

Chciałam zrobić prostą grę w trudne pytania z serii “Co wolisz?”. Wiem, że są już takie aplikacje webowe czy mobilne, jednakże większość z nich jest w języku angielskim. Są polskie wersje, ale one są dość ubogie i pomyślałam, że moja aplikacja byłaby bardziej rozbudowana niż te aplikacje mobilne, które są już na rynku.

Generalnie dla mnie inspiracją jest either.io, z której będę czerpać pomysły. Jednak mój projekt nie będzie tak rozbudowany ze względu na ograniczenie czasowe, ale jestem ciekawa, jak mi pójdzie i jak moja gra się rozwinie przez te 2 miesiące.

Przykładowe pytania z tej gry: Co wolisz..

  • mieć umiejętność czytania w myślach, ale mieć naprawdę duży ból głowy po każdym użyciu tej umiejetności czy potrafić latać, mając lęk wysokości?
  • wygłosić mowę przed całym narodem czy spać z tarantulami?
  • kontrolować emocje innych w otoczeniu czy pogodę?
  • zjeść 20 kostek lodu w ciągu minuty czy zapomnieć cały ostatni rok?
  • mieć osobistego szofera czy szefa kuchni?
  • przeprowadzić się na 10 lat i nie mieć kontaktu z rodziną czy żyć z rodziną przez kolejne 20 lat?

Nie miałam zbytnio pomysłu na nazwę projektu, a nie chciałam, żeby nazywał się po prostu „Co wolisz?’, więc tak na szybko wymyśliłam „Albo Albo”. Plan jest taki, że aplikacja będzie bardzo prosta – po prostu każdy użytkownik będzie mógł odpowiedzieć na pytanie „Co wolisz” oraz te odpowiedzi będą zapisywane, żeby każdy mógł zobaczyć statystyki. Dzięki temu mam okazję nauczyć się budować cały projekt od początku do końca, poznając tehcnologie. Bardziej mnie interesuje frontend, więc chciałabym później dużo się skupić na responsive web design. Jeśli chodzi o frameworki frontendowe to najczęściej korzystałam z Bootstrapa, więc pomyślałam, że tym razem skorzystam z czegoś innego – ale to się zobaczy później.

Na pewno aplikacja będzie w większości napisana w JavaScripcie lub jego frameworkach. Konkretnie to backend bedzie w Node i Express, aby łatwiej mi się pisało serwer. Frontend oczywiście w Angularze. Co do bazy danych oczywiście wybrałam MongoDB, aby łatwiej było mi pisać zapytania w JS.

Mam nadzieję, że będę miała dość czasu, aby skończyć ten projekt do końca trwania konkursu, trzymajcie za mnie kciuki :)