Pomysł na projekt: Edytor agendy

Jaki powinien być projekt?

W związku z konkursem „Daj Się Poznać”, musiałem znaleźć pomysł na projekt. Jakie warunki powinien według moich założeń spełniać?

  • Rozwiązywać jakiś realny problem. Pisząc projekt, który może się do czegoś przydać, mamy większą motywację. Poza tym po co marnować czas, na coś, co będzie leżało nieprzydatne?
  • Być dosyć małym projektem, żeby jedna osoba w ciągu 2,5 miesiąca dała radę go napisać (po za innymi zajęciami i projektami chociażby na studia). Ale musiał być na tyle duży, żeby mieć o czym pisać w 20 wpisach.
  • Muszę chcieć opublikować kod projektu. Nie może to być pomysł, na którym chciałbym w przyszłości zarabiać. Kod chcę pisać dosyć powoli, żeby jego jakość była na tyle wystarczająca, aby komuś mógł się przydać.
  • Projekt powinno dać się zrobić w technologiach, które już chociaż trochę znam. Niby mógłbym wziąć coś nowego (np. Scala) i ucząc się pisać projekt. Jednak jakość projektu zapewne byłaby sporo niższa, niż w wypadku, gdy użyję poznanej już wcześniej technologii. Chciałbym wykorzystać język programowania Java, najlepiej framework Spring. Ostatnio poznałem także AngularJS, w którym przyjemnie tworzy się aplikacje klienckie w stylu architektonicznym REST.

Czy jest coś takiego, co byłoby przydatne i ktoś mógłby to zrobić, ale nigdy nie ma na to czasu? A jednocześnie spełniałoby powyższe warunki? Niech ktoś

Oczywiście tak. Na co dzień przychodzi do głowy kilka pomysłów. Wybrałem według mnie najodpowiedniejszy na ten moment.

Zarys projektu: Edytor Agendy (AgendaEditor)

Aplikacja webowa do tworzenia i generowania agendy dla seminariów i konferencji. 

Jaki jest realny problem? Jaki proces biznesowy chciałbym zautomatyzować? Przeprowadźmy jego krótką analizę.

Analiza problemu – tworzenie agendy

Na początek dwa słówka:
Prelegent – osoba, która wygłasza prelekcję czyli wykład dla słuchaczy (publiczności).
Agenda – ustalony plan wystąpień zawierający listę: imię i nazwisko prelegenta, temat, godzinę rozpoczęcia i zakończenia.

Na uczelniach często organizowane są konferencje i seminaria naukowe. Ich celem jest zazwyczaj prezentacja wyników badań naukowych i wymiana informacji. Również firmy często biorą udział w konferencjach branżowych. Cel jest podobny, lecz celem jest skupienie trochę innej grupy ludzi. Zamiast naukowców, prelekcje wygłaszają praktycy, ludzie z danej branży.

Jak zazwyczaj wygląda przebieg procesu tworzenia agendy (w uproszczeniu, ograniczając się do powstawania samego dokumentu)?

  1. Ogłaszana jest możliwość zgłaszania tematów (tzw. Call For Papers, CFP).
  2. Prelegenci rejestrują się, przysyłają swoje tematy wystąpień (również z innymi danymi np. afiliacja, abstrakt itd.). Czasem również jest możliwość wyboru ile czasu będzie przeznaczone na wystąpienie.
  3. Organizatorzy konferencji układają agendę (plan wystąpień). Często pojawiają się w niej zmiany (np. któryś z prelegentów ma prośbę, aby przesunąć go na inną godzinę).
  4. Agenda jest publikowana. Zazwyczaj w formie dokumentu PDF (lub rzadziej DOC). Niekiedy jest potrzebny także plik graficzny (jeśli chcemy np. wstawić jako zdjęcie, aby ładnie wyświetliło się w wydarzeniu na Facebooku).

Sam również brałem udział w organizacji kilku konferencji. Jeśli mamy do ułożenia jedną agendę na kilka miesięcy i jest tylko kilku prelegentów, z powodzeniem można to zrobić ręcznie (np. w Wordzie lub Excelu). Nie ma potrzeby tworzenia narzędzia, jeśli jego zrobienie zajmie więcej czasu niż ręczne wykonanie zadania.

Jednak gdy wydarzeń i prelegentów jest więcej, tworzenie agendy jest bardziej czasochłonne. Dla przykładu, organizowałem konferencję, której agenda miała 7 stron, a wystąpień było ponad 50. Pomyśl, że policzyłbyś godziny wystąpień ręcznie, a potem następuje zmiana, np. pierwszy wykład ma trwać dłużej lub krócej albo chcesz jedną osobę przesunąć na początek dnia. Poprawa zajęłaby dużo czasu. Ja zrobiłem sobie tabelkę w Excelu, w której automatycznie przeliczało mi godziny wystąpień. Ale wiem, że wiele osób robi to ręcznie (szczególnie na innych kierunkach niż informatyka).

Innym przykładem są seminaria koła naukowego. Jest ich wiele, a zmiany często wprowadzane w ostatniej chwili. Aż chciałoby się przyspieszyć i zautomatyzować proces tworzenia wynikowej agendy. To właśnie wtedy zrobiłem tabelkę w Excelu, dzięki której mogłem w szybki sposób wprowadzać zmiany (napiszę o niej w którymś w kolejnych wpisów). Jednak ona ma też wady, które dałoby się wyeliminować tworząc dedykowaną aplikację do tworzenia agendy.

Podstawowa funkcjonalność AgendaEditor

Projekt edytora agendy nazwałem mało kreatywnie, po prostu: AgendaEditor. Interfejs aplikacji będzie w języku polskim, gdyż jest przeznaczony w pierwszej kolejności głównie dla osób, które wiem jak organizują konferencje. Kod projektu będzie umieszczony na GitHubie, a nazwy klas, zmiennych i metod będą w języku angielskim. Jest to dobra praktyka, a być może dzięki temu, że projekt jest opensource, kiedyś będzie rozwijany nie tylko przeze mnie. Jeśli aplikacja się sprawdzi będzie można dodać tłumaczenie interfejsu, aby ludzie z całego świata mogli szybciej tworzyć agendy wydarzeń.

Wiem, że nie mogę poświęcić zbyt dużo czasu na projekt. Ale równocześnie chcę go skończyć, aby dało się go używać. Kończmy projekty, gdyż takie nierealizowane zadania dosyć mocno demotywują do dalszej pracy. Dlatego zaplanuję minimalną użyteczną wersję oraz możliwość jej rozbudowy (gdy będę mógł dłużej nad nim pracować).

Wersja minimalna

Przerzucenie funkcjonalności z Excela oraz wprowadzenie kilku usprawnień.

  • Wprowadzenie godziny rozpoczęcia wydarzenia.
  • Wprowadzenie listy wystąpień: tematu, imienia i nazwiska, długości.
  • Możliwość łatwej zmiany kolejności wystąpień (najlepiej drag&drop lub chociaż przyciski ze strzałkami).
  • Generowanie listy wystąpień z policzonymi godzinami wystąpień (na podstawie godziny rozpoczęcia i długości wystąpień) w formie tekstowej gotowej do skopiowania i wklejenia np. do Worda.

Taką aplikację w sumie można by napisać w samym JavaScripcie (np. AngularJS). Jednak to jeszcze nie koniec 😉

Możliwość rozbudowy

Pomysłów do głowy przychodzi tyle, że aplikacji można nie skończyć nigdy. Wymienię jednak kilka funkcjonalności, które mogłyby się pojawić:

  • Generowanie pliku DOC z listą wystąpień.
  • Generowanie gotowej agendy w pliku DOC na podstawie szablonu (pliku DOC z nagłówkami, stopkami itd.).
  • Generowanie pliku PDF i PNG.
  • Dodawanie szablonów i ich edycja (np. zmiana logo, nagłówka itd.).
  • We wprowadzanych danych dodanie obszaru tematycznego. Na jego podstawie będzie następował automatyczny podział na panele.
  • Możliwość zgłaszania się prelegentów. Może być bezpośrednio w aplikacji. Albo poprzez ankiety z Google Sheets, z których dane będą pobierane do aplikacji i na ich podstawie tworzona agenda.

Tu już potrzebna jest część serwerowa. Chciałbym ją napisać w Javie (z wykorzystaniem frameworka Spring i kilku bibliotek). Umieścić mogę ją na jakimś serwerze aplikacyjnym, być może Azure.

Propozycje technologii do wykorzystania

Jak już wyżej pisałem, chciałbym napisać aplikację w Javie z wykorzystaniem frameworka Spring. Po stronie klienta będzie AngularJS (oczywiście z JavaScript, jQuery, HTML, CSS, Bootstrap). Całość w stylu architektonicznym REST (będzie możliwość napisania aplikacji np. na Androida z wykorzystaniem tej samej części serwerowej). A aplikację chciałbym wrzucić na serwer Azure.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *