Projekt OneQuestion

Dzisiaj opiszę mój nowy projekt, który tworzę już od jakichś 2 tygodni. Wszystko zaczęło się od tego, że chciałem na poważnie zaznajomić się z technologią ASP.NET MVC, a jak wiadomo najwięcej się wynosi z praktyki. Postanowiłem wykonać coś niewielkiego, co pozwoli szybko zobaczyć efekty i poćwiczyć niektóre zagadnienia. Tak narodził się pomysł strony OneQuestion. Oferowane funkcje pewnie nie powalają na kolana, ale pisząc coś samemu trzeba znaleźć rozsądną granicę między ilością i czasem. Mówiąc w skrócie, strona OneQuestion Umożliwia zarejestrowanym użytkownikom tworzyć mini-ankiety zawierające jedno pytanie z zamkniętymi odpowiedziami. Wyniki są później dostępne w szczegółach pytania.

Strona główna prezentuje się w chwili obecnej następująco:

onequestion1

Postawiłem na prostotę i ograniczoną kolorystykę ponieważ im więcej chce się umieścić na stronie tym trzeba mieć większe doświadczenie w odpowiednim układaniu layoutu żeby wszystko wyglądało spójnie, a tego doświadczenia jeszcze mi brakuje :P Dlaczego akurat takie szaro-czarne kolory? z banalnego powodu, akurat taką kolorystykę łatwo było uzyskać z wykorzystaniem Bootstrapa, więc tylko dostosowałem do niej logo. A jako, że chciałem żeby wszystko powstało w rozsądnym czasie to nie było sensu kombinować. To jeszcze warto pokazać jak wyglądają szczegóły pytania, dostępne dla zalogowanych:

OneQuestion2

Jak widać w tej chwili znajdują się tylko podstawowe informacje. takie jak łączna ilość udzielonych odpowiedzi, link do pytania, treść pytania i odpowiedzi. W przypadku pytań prywatnych można też tutaj zobaczyć jakie podało się dla nich hasło. Na końcu jest też wykres prezentujący jakie ludzie udzielali odpowiedzi.

Nie ma co dalej rozwodzić się nad wyglądem, czas na jakieś techniczne konkrety.

Strona powstała w oparciu o ASP.NET MVC 4, backend był pisany w języku C#. Baza danych to MS SQL Server 2012. Jako ORMa użyłem Entity Framework, z którym dobrze mi się pracowało i dawał wszystko co potrzebowałem. Jestem świadomy, że pewnie nie poznałem jeszcze nawet połowy możliwości ASP.NET i Entity Framework, ale strona nadal będzie rozwijana więc i moja wiedza na ich temat, mam nadzieję, będzie się powiększać ;) W tej chwili portal stoi na hostingu oferowanym przez Webio. Jeśli ktoś myśli o korzystaniu z niego to od razu mówię, że panel administracyjny działa bardzo wolno, ale cena i dostęp do nowych wersji serwerowego oprogramowania Microsoftu rekompensują tą niedogodność, chociaż jeśli strona by się jakimś cudem rozrosła to zapewne zmieniłbym serwer na inny. Jako frontend użyty został framework Bootstrap, więc ogólnie wizualna część portalu to połączenie HTML5, CSS i JavaScriptu + JQuery.

Wspominam o rozwoju, ale właściwie co jest do zrobienia?

Otóż tak, poza oczywiście poprawianiem znajdowanych na bieżąco błędów, planuję dodać więcej statystyk i wykresów do szczegółów pytania. W tej chwili można zbierać informacje na temat płci i wieku odpowiadających, ale te dane nie są w żaden sposób uwzględniane. W przyszłości powinna pojawić się możliwość zobaczenia np. jak odpowiadała dana płeć, jaki był stosunek mężczyzn do kobiet, jak prezentował się przedział wiekowy odpowiadających, jak odpowiadały osoby z wybranego przedziału wiekowego, lub jak kształtowała się w czasie ilość udzielanych odpowiedzi. To będzie chyba największa z planowanych funkcjonalności. Dodatkowo prawdopodobnie zmieni się nieznacznie sposób sprawdzania czy ktoś już w danym dniu głosował. Muszę też dodać jakiś panel administracyjny, bo na dłuższą metę dodawaniu lub usuwanie czegokolwiek bezpośrednio w bazie danych jest mało wygodne, przy tej okazji być może pojawi się też opcja wysyłania przez admina informacji do użytkowników i jakiś formularz pozwalający użytkownikom zgłaszać błędy i sugestie bezpośrednio z poziomu strony. Pewnie jeszcze jakieś pomysły będą się pojawiać w trakcie pracy z kodem. No i właśnie na koniec sam kod. Strona powstawała wg idei „najpierw ma działać, potem ma działać dobrze”. Portal już działa, więc teraz pora, żeby właśnie działał dobrze. A z tym związana jest jakość kodu jaki powstał. O ile sam ASP.NET MVC wymusza pewne standardy przy tworzeniu kodu to jednak ciężko uchronić się przed bałaganem. Tak więc w trakcie prac nad stroną będzie też prowadzona refaktoryzacja, bo w tym momencie nie jestem zadowolony z tego co znajduje się w plikach źródłowych. Po prostu wiem, że można to zrobić lepiej, wydajniej, krócej, i na pewno niektóre zmiany będą odczuwalne również dla użytkowników np. kiedy skróci się czas ładowania kolejnych podstron.

Zawsze jak coś uda się dociągnąć do etapu kiedy nie wstyd pochwalić się tym światu to jest ta wewnętrzna radość. I w tym wypadku też jestem szczęśliwy, że udało mi się zmotywować i zakończyć ważny etap prac :) Fragment funkcjonalności strony OneQuestion można zobaczyć oceniając ją pod tym linkiem: http://onequestion.pl/1.

Dodaj komentarz

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