Mundialowa zabawa – typer już dostępny!

Simple-Coding-wc-2018

Cześć, jak zapewne już zdążyłeś zauważyć, Mistrzostwa Świata w piłce nożnej w Rosji już są tuż tuż! Jest to okres, w którym wszystkie reklamy kręcą się wokół tego tematu, wydarzenia również mocno nawiązują do tego tematu. Za namową kolegi z pracy podchwyciłem temat i stworzyłem aplikacje, prostego typera, w którym każdy z was może obstawiać mecze mundialu!

 

Prediction App

Aplikacja jest dostępna W TYM MIEJSCU. Nazwa może nie do końca fortunna, ale nie jest to najważniejsza rzecz. Po przejściu ekran logowania może być nieprzyjemny, tylko tytuł i guzik z logowaniem, ale nie to jest najwazniejsze. Sama aplikacja prezentuje się następująco:

wc-ss

Jak już wspomniałem, jest to prosta aplikacja, w której możemy obstawiać różne mecze. Na podstawie typów dostajemy punkty – 3 za dobrze wytypowany wynik, 1 za dobrze wytypowanego zwycięzce, w innym przypadku 0. Każdy mecz ma swój “kafelek”, który zmienia kolor po przeliczeniu punktów dla nas za dany typ. Suma punktów wszystkich typów decyduje o tym kto jest najlepszym typerem. To w zasadzie z perspektywy użytkownika tyle. Dość proste, prawda? 😉 Do zabawy może przyłączyć się więc każdy, kto posiada konto na Facebooku.

 

Zabawka na Mundial z perspektywy programisty

Trochę z technicznego punktu widzenia – aplikacja została napisana w tydzień, fajerwerków na pewno spodziewać sie nie można. Repozytorium jest dostępne tutaj. Kod jest “otwarty”, jak znajdziesz czas to jesteś w stanie nawet uruchomić aplikację u siebie lokalnie. Część backendowa została napisana w Kotlinie (kolejny dowód, że język się sprawdza i można tworzyć w zawrotnym tempie aplikacje!) z użyciem frameworka Spring oraz bazującym na Facebookowym OAuth. Do stworzenia klienta webowego użyłem Angulara w wersji 6, dość standardowy stos w moim przypadku. Chodziło o to, aby było jak najszybciej, to nie był czas na eksperymenty, niestety.

Aplikacja jest hostowana na AWSie, link wyżej jest tak naprawdę tylko przekierowaniem z bloga do strony na tej chmurze. Aplikacja prawdopodobnie po mundialu będzie uśpiona (tymczasowo?), tak więc szkoda czasu i środków na takie technikalia jak domena pod spodem. Korzystam z usługi Elastic Beanstalk, gdzie hostowany jest aplikacja jako plik jar. Aplikacja wymaga połączenia z bazą danych. W tym przypadku zdecydowałem się także na AWS, a dokładniej na usługę RDS, gdzie uruchomiona jest baza MySQL.

 

Obecny stan aplikacji

Póki co aplikacja działa i ma się dobrze. Mam już paru graczy, pierwsze typy i kalkulacje przeszły pomyślnie. Oby tak dalej! Możesz zobaczyć już niektóre mecze i punkty, mimo że mundial się nie zaczął. Aby nie czekać tak długo, urozmaicam zabawę poprzez możliwość typowania meczów towarzyskich przed mundialem. Oczywiście, to tylko w ramach testu i zabawy, typy te i wyniki zostaną usunięte przed mundialem, tak więc nie będą miały one wpływu na wynik końcowy. Niestety, póki co zwycięzca będzie miał conajwyżej satysfakcję, nagród póki co nie przewiduję… jeżeli jednak znajdzie się sponsor zainteresowany reklamą w aplikacji w zamian za nagrody dla najlepszej trójki to na pewno takie urozmaicenie dodam 🙂

 

Dalsze plany

Hm, nie jestem pewien. Nastaw się proszę na jednorazową zabawę. Nie wykluczam jednak dodania później innych rozgrywek, ekstraklasy, ligi hiszpańskiej etc. Jest co obstawiać. Kwestia zainteresowania Twojego i innych użytkowników. Aplikacja jednak wymaga lekkich usprawnień (co jest opisane w repozytorium), więc wejdą one już prawdopodobnie po Mistrzostwach Świata. AWS dla mnie nie jest już darmowy, dołożyłem więc wszelkich starań aby aplikacja była jak najbardziej używalna i żebyś czerpał radość z jej korzystania. Tydzień czasu (mundial niebawem + Devoxx w Krakowie) na stworzenie czegoś takiego to nie  dużo. Jeżeli zauważysz jakiś błąd, chciałbyś usprawnień albo po prostu chcesz do mnie napisać, śmiało! Jest wiele możliwości kontaktu ze mną, wszystkie dostępne w panelu po prawej stronie, tam pod moją facjatą 😉

Póki co, do przeczytania i miłej zabawy w typowanie!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *