Projekt „Notatki” – baza danych (MongoDB)
Drugi odcinek z serii projekt praktyczny „Notatki”. Jest to projekt praktyczny oparty na Node + React + MongoDB.
W dzisiejszym odcinku podpinamy bazę danych (MongoDB).
Dosyć kompleksowo buduję małą aplikację. Tworzę zarówno backend, który łączy się z bazą danych MongoDB. Następnie przez API komunikuje się z frontem zbudowanym na React.js.
Całość pokazuje jak może wyglądać taki projekt, układ plików, konfiguracja, czy jak w ogóle zabrać się do tworzenia full stackowej aplikacji.
Starałem się pokazywać dobre nawyki i sposoby na organizacje kodu 🙂
Poprzednie odcinki:
odc. 1
Node.js – kurs w 60 minut
Strasznie długo zabierałem się do tego odcinka, ale w końcu udało mi się go nagrać 🙂
Odcinek jest przede wszystkim dla tych, którzy z nodem jeszcze nie pracują, ale założę się, że zaawansowani też mogą dowiedzieć się kilku ciekawostek.
Np, czy wiesz:
- po co i kiedy właściwie powstał node.js?
- w jakim celu powstał sam JavaScript?
- co ma wspólnego z przeglądarkami?
- w czym jest lepszy od innych technologii backendowych?
- dlaczego warto go stosować?
- czy node.js jest wielowątkowy?
- jakie (duże) marki obecnie go używają?
- jak umieścić aplikacje node.js na serwerze bez praktycznie żadnej konfiguracji?
Na te i inne pytania odpowiadam w poniższym odcinku 🙂
Zapraszam cię również do bardzo powiązanych filmów, czyli:
MongoDB + Node.js – kurs w 60 minut
Jak postawić aplikację Node.js na własnym serverze
Backend – nie jesteś już mi potrzebny
-Oczywiście chciałbym móc sam edytować treści na mojej nowej stronie
-Jak najbardziej. Przygotuję panu stronę na autorskim CMSie, wszystko będzie niesamowicie łatwe w zarządzaniu.
-Super, ile to trwa?
-Standardem przy takich zleceniach jest jakiś miesiąc
-Dobrze, czekam w takim razie na propozycje
Jedno z pierwszych zleceń
Nie było to moje pierwsze zlecenie, ale na pewno jedno z pierwszych, na przygotowanie strony internetowej. Jaram się! Prawdę powiedziawszy nie jestem pewien czy pamiętam w tym momencie pierwszy projekt dla prawdziwego klienta. Pamiętam moją pierwszą stronę w życiu, była to informatyka w….. podstawówce? Niby miałem już w domu komputer, nawet z Windowsem XP więc nie byle co, ale jedyne co potrafiłem na nim robić to odpalić Heroes Might and Magic 4 (wszyscy lubią 3-cią część, ja się jaram czwórką – przecież jest o niebo lepsza!). Owa strona www była chyba najgorszą w całej szkole. Od początku jej istnienia…
Nie potrafiłem nawet utworzyć tabelki jak robili to wszyscy. Nie. Jedyne co udało mi się zrobić to ustawić stałą wysokość i szerokość strony oraz nadać jej grafikę jako tło. Grafika imitowała prawdziwą stronę. Nauczyciel się nie zorientował i dostałem 5. Wystarczyłoby żeby kliknął „wyświetl źródło” a zobaczyłby 2 tagi: <title> i <body> z tłem. Na szczęście tego nie zrobił. Kto by pomyślał, że typ, który zrobił najgorszą stronę i nie wiedział nawet jak wstawić tekst, prowadzi dzisiaj o tym bloga.
Mój własny CMS
Wróćmy do tematu. Jako pilny PHPowiec przygotowałem już nawet swój CMS, pełna profeska. Lubiłem robić strony na swoim CMSie bo miałem nad tym niesamowitą kontrolę. Nie zastanawiałem się jaka funkcja wypisze mi posty, jaka doczepi style w nagłówku, nie musiałem szukać żadnego API. Wydawało się to takie proste.
Nie musiałem jeszcze płacić za mieszkanie, prąd czy wodę. Siedziałem więc wieczorami przy komputerze i potrafiłem kodzić całymi dniami. Tak samo siedziałem tamtego dnia i spokojnie pisałem kod. Pierwsze zlecenia były tragiczne, ale już wtedy wiedziałem, żeby najpierw pokazać grafikę. Na szczęście została ona już zaakceptowana, więc kodze, kodze i kodze.
Kodziłem naprawdę długo…
Pierwsze oznaki, że coś się dzieje
Tak sobie kodziłem, aż zakodziłem, a przynajmniej tak mi się wydawało. Klient zażyczył sobie kilku dodatkowych bajerów: jakiś slider, formularz i coś tam jeszcze. Ok, nie ma sprawy, biorę się do pracy.
Stworzenie tych kilku bajerów na swoim CMSie zajęło mi bodajże kilka dni. Teraz zrobiłbym to dużo szybciej, ale i tak trwało by to minimum kilka godzin. Nie wspomnę, że na takim WordPressie zrobiłbym to w paraneście minut, a końcowy efekt wcale nie byłby gorszy.
Nic to, robiłem co do mnie należy ceniąc się taniej niż kopacz dołów, bo mam autorski CMS, a to tak profesjonalnie brzmi. Koniec końców stronę oddałem, klient klepnął, poszło. Wszystko ok, nie licząc tego, że gdyby miał za to zapłacić rachunki to pewnie zostałoby mi tylko na zupke chińską.
W takim stanie trwałem dosyć długo. W międzyczasie pojawiały mi się wachania typu „od dziś tylko backend”, tydzień później „od dziś tylko frontend” i tak w kółko. Skończyło się na takim full-stacku. Tworzyłem strony zarówno na darmowych silnikach jak i na autorskim, ale takie szerokie spektrum technologiczne zaczynało mnie przybijać i zacząłem się poważnie nad tym zastanawiać.
Decyzja
Po wielu miesiącach takich przemyśleń przyszła mi do głowy jedna myśl:
Może jako freelancer (powiedzmy taki full-stack z przewagą frontu) w czasach WordPressów, Wixów i innych …ów, nie ma już sensu uczyć się backendu. Może warto zainwestować ten czas w inne, ważniejsze rzeczy, a może nawet na pozorne głupoty jak wyjście ze znajomymi na piwo. Żyć też trzeba. Zawsze byłem tym, który pierwszy rzucał się na nowe technologie czy języki. Zarówno front jak i back. Do tego dochodziła grafika, administracja serwera, bezpieczeństwo, ale w końcu w głowie pojawia się pytanie, które pojawić się musi: do czego to prowadzi?
Powinniśmy dążyć do optymalizacji wszystkich procesów. Klient nie zapłaci więcej za stronę dlatego, że będę ją dłużej robił. Czy można dziś postawić stronę bez znajomości technologii backendowych? Jak najbardziej. Czy trzeba znać PHP, aby dodać na stronie slider, formularz czy zablokować rejestrację? Nie.
Może skoro w 80% przypadków cały backend możemy mieć „z głowy”, to czy warto zawracać sobie głowę i inwestować czas na naukę technologii dla tych 20%? Kiedyś powiedziałbym stanowcze tak, ale z drugiej strony czytałeś wpis 80/20 zasada Pareto a Freelancer, czyli mniej za więcej?