Aplikacja na magisterkę - Część 1 - Wstęp

Aplikacja na magisterkę - Część 1 - Wstęp

Pisząc ten wpis jestem jeszcze studentem, na pierwszym roku studiów magisterskich. Przede mną zostało napisanie pracy złożonej z części teoretycznej, a także aplikacji przypadającej na część praktyczną. Z racji studiowania na kierunku Informatyka, nie powinno być zaskoczeniem, że zdecydowałem się napisać aplikacje internetową starając się wykorzystać w miarę nowe technologię, ewentualnie nowości w już istniejących. Zaznaczę, że identyczne plany miałem również w przypadku pisania licencjatu, gdzie aplikacja na papierze była dość ambitnym, ale niezbyt skomplikowanym projektem. Ot co zwykły CRUD. Jednakże mój zapał, ilość wolnego czasu, a także po części podejście i wsparcie promotora spowodowało, że plany zostały wyłącznie na papierze, a finalna wersja aplikacji była pisana w stylu: "Żeby tylko skończyć". Generalnie wyszedł projekt, który oczywiście działał, wyglądał w miarę dobrze sądząc po opinii osób trzecich. Nawet zapewnił mi rozpoczęcie swojej pierwszej pracy w zawodzie, jednakże jest to projekt którym nie chce się chwalić, a najlepiej chciałbym jak najszybciej o nim zapomnieć. Tyle rzeczy zostało tam źle napisanych, tyle błędów zostało tam popełnionych, że dzięki temu wiem czego powinienem uniknąć w tym projekcie.

Garść informacji o projekcie

Opisać aplikacje najprościej będzie na podstawie historyjki, która przedstawi praktyczne zastosowanie systemu. Być może część z was ujrzy wady takiego zastosowania, które w mojej ocenie nie istnieją albo są na tyle minimalne, że nie warto się nimi przejmować. Jednakże to już czysto biznesowe podejście, a nie stricte związane z tworzeniem aplikacji. A więc zaczynajmy.

Zdjęcie autorstwa Startup Stock Photos z Pexels
Pan Nowak posiada laptopa firmy DELL. Zwykły sprzęt biurowy kupiony niecały rok temu. Nowsze rozwiązania, a także architektura przemówiły za tym wy wydać część oszczędności na coś nowego niż przejmować się naprawą starego sprzętu. Nagle pewnego wieczoru laptop się wyłączył i nie reagował na ponowne naciskanie przycisku włączenia. Sprzęt gorący w okolicach dysku, a także wejść na USB. Następnego dnia właściciel sprzętu udaje się do pobliskiego serwisu, w którym przedstawia swój problem. Właściciel serwisu uważnie słucha i analizuje co mogło spowodować usterkę. Następnie sporządzany jest protokół przyjęcia sprzętu do serwisu i Pan Nowak proszony jest o podanie adresu email-owego w celu utworzenia jego "zamówienia" w serwisie do monitorowania statusu realizowanej usługi. Poszkodowany podaje adres swojej skrzynki pocztowej, a następnie jest wyszukiwany w bazie danych aplikacji w celu sprawdzenia, czy nie ma już istniejącego konta na taki adres email-owy. Następnie użytkownik jest przypisywany do konkretnego zlecenia, które jest z kolei wykonywane przez odpowiednią firmę. W zależności czy konto zostało znalezione czy nie, końcowy proces rejestracji jest kończony po przez adres email i można normalnie zalogować się do swojego konta w celu uzyskania informacji o realizacji usługi. Tym sposobem Pan Nowak może zobaczyć, że na przykład tego samego dnia, kilka godzin później serwis wymienił dysk twardy w celu sprawdzenia czy powodował usterkę albo usunął jeden z elementów na płycie głównej, który mógł stwarzać napięcie uniemożliwiając uruchomienie maszyny. Dodatkowo w każdej chwili właściciel laptopa jest w stanie przerwać wykonywanie zlecenia płacąc jedynie za to co zostało już zrobione.

Jest to ogólny zamysł, który w niektórych aspektach jest rozbudowany o wiele bardziej, lecz z uwagi na to, że jest to wyłącznie szkic, wiele z nich może się jeszcze zmienić. Pomysł narodził się w momencie gdy przypomniałem sobie sam, jak to jest chodzić po serwisach komputerowych i pisząc maile bądź dzwoniąc czasem w nieodpowiednim momencie chcąc uzyskać jakiekolwiek informacje.

Podsumowanie

W tym wpisie nie przedstawię ani jednej linijki kodu, ponieważ chciałem w nim przedstawić wyłącznie pomysł, który po części już zacząłem realizować, dlatego kolejne posty pojawią się w najbliższych dniach lub tygodniach. Jednocześnie chciałbym poinformować, że nie będzie to regularna seria, a bardziej luźne sprawozdanie z postępów prac. Do kodu siadam wtedy kiedy mam czas i przede wszystkim ochotę i siłę, niestety nie łatwo jest pogodzić jedne programowanie z drugim i człowiek szybko się zniechęca. Do realizacji aplikacji wybrałem następujące narzędzia i technologie:

  • NestJS, jako framework back-endowy
  • PostgreSQL, zamiast zwykle przeze mnie wybieranego MySQL
  • TypeScript, kiedyś trzeba zacząć w nim pisać :)
  • ReactJS, do tworzenia widoków zarówno w wersji klasowej jak i hooki
  • SCSS, który przyspieszy mi proces stylowania interfejsów użytkownika
  • Github, jako miejsce w którym chce trzymać swój kod oraz informacje o projekcie

W przyszłych wpisach udostępnię odnośniki do repozytorium, a także liczę na pouczający code review, który pozwoli mi wyeliminować błędy, które być może popełniam bardzo często, a nawet nie jestem tego świadomy.

Uszanowanko o/