Menu Zamknij

Kurs JavaScript / TypeScript Fullstack

Opis kursu

  • Płacisz za jeden miesiąc nauki.
  • Uczysz się tak długo, jak potrzebujesz.
  • Pełne wsparcie na każdym etapie nauki.
  • Pytasz o wszystko, tyle razy, ile potrzebujesz i wtedy, kiedy chcesz. Szybko otrzymasz odpowiedź.
  • Spotkania 1:1 online + nagranie ze spotkania.
  • Plan nauki dopasowany do Ciebie.
  • Dużo zadań i projektów praktycznych.
  • Stały feedback na Twój kod i strukturę projektów.
  • Uczysz się w swoim tempie.
  • Motywuję Cię do pracy i dbam o Twoje postępy.
  • Portfolio w kilka miesięcy.
  • Szukasz pracy w trakcie kursu.
  • Otrzymasz certyfikat ukończenia kursu.
promocja ikona
PROMOCJA – pierwsze spotkanie GRATIS

Już teraz

zapisz się na kurs​

Zostaw swoje namiary, a skontaktuję się z Tobą w sprawie kursu

    * - pola obowiązkowe

    Administratorem danych osobowych jest KM PROGRAMS KRZYSZTOF MAKOWSKI z siedzibą przy ul. Cicha 7, 42-454 Niegowonice, Polska. Dane osobowe osób korzystających z formularza kontaktowego przetwarzane są w celu identyfikacji nadawcy oraz obsługi zapytania przesłanego przez udostępniony formularz. Więcej informacji o przetwarzaniu danych osobowych, w tym o przysługujących Ci uprawnieniach, znajduje się w Polityce Prywatności.

    Plan kursu

    Kurs jest przeznaczony dla osób, które mają podstawową wiedzę z HTML, CSS i chcą pójść krok dalej, ucząc się JavaScript oraz TypeScript – od podstaw po zaawansowane, komercyjne rozwiązania. Od początku stawiam na praktykę. Tworzysz realne aplikacje z wykorzystaniem HTML, CSS, JavaScript, TypeScript i Vite. Jeszcze przed wprowadzeniem React-a przygotujesz kilkanaście przykładowych interfejsów graficznych, które w dalszych etapach rozwiniesz, dodając kolejne funkcjonalności i potem dodasz kolejne aplikacje do swojego portfolio. Jeśli wcześniej uczyłeś się ze mną backend-u i tworzenia REST API, w tym kursie możesz kontynuować swoją ścieżkę i rozwijać się jako fullstack developer.

    W tej sekcji poznasz zestaw narzędzi, z których będziemy korzystać do tworzenia nowoczesnych aplikacji w JavaScript i TypeScript. Dowiesz się, jak przebiegają kolejne etapy budowania programów w tych językach, oraz wybierzesz wygodne, nowoczesne środowisko IDE dopasowane do Twojej pracy. Zobacz pierwsze minuty naszej wspólnej nauki

    • V8, Node
    • Alternatywy Node (Deno, Bun)
    • Etapy budowania programu napisanego w JavaScript (JIT, parsing, AST)
    • Wersje JavaScript
    • Porównanie JavaScript oraz TypeScript
    • Przegląd IDE
    • Przygotowanie środowiska programistycznego

    W tej sekcji poznasz podstawy JavaScript – fundament, bez którego trudno rozpocząć tworzenie praktycznych aplikacji do swojego portfolio. To wprowadzenie przygotuje Cię do dalszej nauki, a omawiane tu zagadnienia będziemy pogłębiać w kolejnych modułach.

    • Zmienne, stałe, literały, let, const
    • Konwencje nazewnicze
    • Typowanie dynamiczne
    • Przegląd typów danych prostych i złożonych
    • Liczby, Number
    • Napisy
    • Różnica między null oraz undefined
    • Falsy, truthy
    • Sprawdzanie rodzaju typu
    • Operatory (arytmetyczne, logiczne, relacji, nullish coalescing, podwójna negacja, chaining, spread i inne)
    • Math
    • Instrukcje warunkowe, pętle, break, continue
    • Wprowadzenie do obiektów (w tym do tablic)
    • Konwersje pomiędzy obiektami różnych typów
    • Kopiowanie płytki oraz głębokie
    • Organizacja pamięci w aplikacji JavaScript
    • Rzucanie i obsługa wyjątków

    W tej sekcji poznasz narzędzia, które pozwolą Ci sprawnie budować i zarządzać strukturą projektu. Nauczysz się korzystać z npm, npx i Vite, aby usprawnić pracę i przyspieszyć proces tworzenia aplikacji. Jeśli zajdzie taka potrzeba, omówimy również Webpack. To właśnie tutaj przygotujesz szablon projektu, który posłuży jako baza dla Twoich pierwszych aplikacji w portfolio.

    • npm, npx
    • Vite
    • Webpack (opcjonalnie)
    • CommonJS, ESM
    • Omówienie struktury projektu utworzonego za pomocą Vite
    • Zarządzanie projektem utworzonym za pomocą Vite
    • Instalacja i zarządzanie dependencies

    W tej sekcji stworzysz swoje pierwsze projekty do portfolio. W pełni wykorzystamy dotychczas zdobytą wiedzę i rozpoczniemy pracę nad programami w konfiguracji JavaScript + HTML + CSS + Vite. Od samego początku pracujemy z DOM. Przykładowe aplikacje, które tutaj zrealizujemy, to: Kalkulator cen VAT   Panel rejestracji i logowania  Na bazie tych projektów, z moją pomocą, będziesz mógł tworzyć kolejne aplikacje. Od początku zadbam o to, aby Twoje portfolio było atrakcyjne i przyciągało uwagę potencjalnych pracodawców.

    Najwyższa pora wprowadzić funkcje. Nasze programy stają się coraz bardziej rozbudowane, a funkcje pozwolą uporządkować kod i podzielić go na mniejsze, logiczne fragmenty. To podstawa każdej aplikacji – dzięki nim kod staje się czytelniejszy, łatwiejszy w utrzymaniu i możliwy do ponownego wykorzystania w innych częściach projektu.

    • Function declaration
    • Parametry / argumenty funkcji
    • Function expression
    • Anonymous function
    • Arrow function
    • IIFE

    W tej sekcji stworzysz kolejne projekty do portfolio, w których wykorzystasz funkcje. Dodasz je również do wcześniej napisanych programów, aby uczynić kod jeszcze bardziej profesjonalnym. Przykładowa aplikacja, którą tutaj zrealizujemy, to: Walidacja formularza Na bazie tych projektów, z moją pomocą, będziesz mógł tworzyć kolejne aplikacje i rozwijać swoje portfolio.

    Znasz już podstawy JavaScript i potrafisz wykorzystywać go w swoich projektach. To idealny moment, aby wprowadzić TypeScript i równolegle z zagadnieniami JavaScript pokazywać jego możliwości. Od tej chwili będziesz używać TypeScript także w swoich projektach, co sprawi, że Twoje portfolio stanie się jeszcze bardziej wartościowe i profesjonalne.

    • Dlaczego używamy TypeScript?
    • Konfiguracja projektu Vite + TypeScript
    • Plik tsconfig.json
    • Etapy kompilacji TypeScript
    • Typowanie statyczne
    • Wykaz podstawowych typów
    • Określanie typu obiektów
    • Typ any
    • Tuple
    • Unie
    • Określanie typu parametrów i typu zwracanego funkcji
    • Budowanie typów złożonych za pomocą type
    • Utility types
    • Enum, as const, enum as const
    • Typy unknown, never
    • Typy intersekcyjne
    • Type guards
    • Function overloads

    W tej sekcji stworzysz kolejne projekty do portfolio, w których wykorzystasz TypeScript. Przykładowe aplikacje, które tutaj zrealizujemy, to: Quiz  Konwerter jednostek Na bazie tych projektów, z moją pomocą, będziesz mógł tworzyć kolejne aplikacje i rozwijać swoje portfolio.

    W tej sekcji kontynuujemy temat funkcji, poznając wzorce, które wykorzystują ich możliwości do tworzenia czytelniejszego i lepiej zorganizowanego kodu. 

    • Factory function
    • Closures
    • Constructor function

    W tej sekcji stworzysz kolejne projekty do portfolio, w których wykorzystasz TypeScript i funkcje. Przykładowa aplikacja, którą tutaj zrealizujemy, to: Generator haseł Na bazie tych projektów, z moją pomocą, będziesz mógł tworzyć kolejne aplikacje i rozwijać swoje portfolio.

    W tej sekcji szczegółowo omówimy tablice. Poznałeś je i używałeś już wcześniej, jednak teraz sięgniemy po pełen zakres możliwości, jakie JavaScript oferuje w pracy z tablicami.

    • Klasa Array
    • Sposoby tworzenia tablic
    • Dostęp do elementów tablic
    • Filtrowanie
    • Mapowanie
    • Sortowanie
    • Grupowanie
    • Redukcja
    • Przegląd pozostałych operacji na tablicach
    • Tablice wielowymiarowe
    • Klasa String
    • Właściwości napisów
    • Różne rodzaje napisów – wielowierszowe, raw strings
    • Sposoby tworzenia napisów
    • Kodowanie napisów
    • Zarządzanie napisem jako tablicą znaków
    • Porównywanie napisów
    • Parsowanie
    • Wyrażenia regularne
    • Wykorzystanie wyrażeń regularnych podczas pracy z napisami

    Kolejne sekcje pochodzą ze starszej wersji kursu. Możesz je realizować od razu, w międzyczasie będę stopniowo zastępował je nowymi lekcjami, tak aby cały kurs był spójny i jeszcze bardziej praktyczny. Dzięki temu możesz zacząć naukę już teraz, korzystając z aktualnych materiałów i płynnie przejść do świeżo dodanych treści, gdy tylko się pojawią.

    • Omówienie założeń programowania obiektowego
    • Obiekty jako rekordy oraz jako słowniki
    • Tworzenie obiektu z wykorzystaniem notacji literału
    • Tworzenie obiektu z wykorzystaniem konstruktora
    • Zarządzanie właściwościami obiektu
    • Dynamiczne wyznaczanie nazwy klucza / właściwości w obiekcie
    • Zarządzanie atrybutami właściwości
    • Wykorzystanie operatora spread do pracy z obiektami
    • Definiowanie metody w obiekcie
    • Przegląd wbudowanych metod obiektu
    • Przesłanianie metod wbudowanych
    • Sposoby kopiowania obiektów
    • Zarządzanie tablicą obiektów
    • Przegląd metod klasy Object
    • Właściwość __proto__
    • Tworzenie klasy z wykorzystaniem podejścia class declaration
    • Tworzenie klasy z wykorzystaniem podejścia class expression
    • Pola składowe w klasie
    • Metody składowe w klasie
    • Sposoby definiowania składników prywatnych klasy
    • Konstruktory
    • Składniki i bloki statyczne
    • Dziedziczenie
    • Słowo kluczowe super
    • Przesłanianie metod w klasach pochodnych
    • Prototypy w kontekście dziedziczenia
    • Symulowanie dziedziczenia wielokrotnego – mixin classes
    • Zarządzanie this w pracy z klasami oraz obiektami
    • Przykłady użycia metod call oraz bind
    • Zagadnienia uzupełniające
    • Omówienie hierarchii kolekcji
    • Wzorzec projektowy iterator
    • Zarządzanie obiektami klasy Array – przypomnienie
    • Pętle for-of oraz for-await-of w pracy z kolekcjami
    • Zarządzanie obiektami klasy ArrayBuffer
    • Widoki klasy ArrayBuffer: Typed Array oraz DataView
    • Konwersje pomiędzy Typed Array oraz zwykłą tablicą
    • Łączenie kilku obiektów Typed Array
    • Tworzenie i zarządzanie obiektami typu Map
    • Konwersja pomiędzy mapą oraz obiektem
    • Tworzenie i zarządzanie obiektami typu WeakMap
    • Implementowanie mechanizmu cache za pomocą typu WeakMap
    • Zarządzanie prywatnymi składnikami klasy za pomocą typu WeakMap
    • Tworzenie i zarządzanie obiektami typu Set
    • Unia, intersekcja oraz różnica kolekcji typu Set
    • Tworzenie i zarządzanie obiektami typu WeakSet
    • Mechanizm destrukturyzacji w pracy z kolekcjami
    • Uzupełnienie wiadomości o generatorach
      Zagadnienia uzupełniające
    • Omówienie założeń programowania asynchronicznego
    • Event loop
    • Callbacks
    • Zdarzenia jako jeden z mechanizmów asynchroniczności
    • Typ Promise
    • Metody resolve oraz reject
    • Metody then oraz catch
    • Omówienie stanów obiektu typu Promise
    • Sposoby zwracania danych z poziomu obiektu typu Promise
    • Rzucanie wyjątków przez obiekt typu Promise
    • Implementacja funkcji asynchronicznych w oparciu o typ Promise
    • Wywołania kaskadowe bytów asynchronicznych
    • Promise.all
    • Implementacja mechanizmu fork-join z wykorzystaniem Promise.all
    • Słowa kluczowe async oraz await
    • Natychmiastowe wywołania asynchronicznych funkcji strzałkowych
    • Sekwencyjne wywołania funkcji asynchronicznych
    • Słowa kluczowe async oraz await w pracy z Promise.all
    • Generatory asynchroniczne
    • Iteracja asynchroniczna uzupełnienie
    • Przykłady użycia funkcji fetch
    • Konwersja funkcji callback do funkcji opartych o typ Promise
    • Używanie słowa kluczowego await w głównym skrypcie aplikacji
    • Zagadnienia uzupełniające
    • Klasyfikacja sposobów dzielenia kodu aplikacji
    • Skrypty
    • Moduły CommonJS oraz AMD
    • Moduły ECMAScript
    • Named exports oraz named imports
    • Importowanie z wykorzystaniem przestrzeni nazw
    • Różne sposoby wykorzystania mechanizmu default exports
    • Default imports
    • Moduły zewnętrzne oraz narzędzie npm
    • Konwencje nazywania modułów
    • Module specifiers
    • Dynamiczne ładowanie modułów – operator import()
    • Omówienie właściwości import.meta
    • Polyfills
    • Zagadnienia uzupełniające
    • Interpretacja strony internetowej jako model DOM
    • Sposoby uzyskiwania dostępu do elementów modelu DOM
    • Przetwarzanie elementów modelu DOM
    • Zarządzanie kolekcją węzłów elementów typu NodeList
    • Poruszanie się po drzewie elementów modelu DOM
    • Problem węzłów znaku odstępu
    • Elementy równorzędne, potomne, nadrzędne
    • Zarządzanie węzłami tekstowymi elementów modelu DOM
    • Zarządzanie węzłami atrybutów elementów modelu DOM
    • Zarządzanie zawartością HTML elementów w modelu DOM
    • Dodawanie elementów do modelu DOM
    • Usuwanie elementów z modelu DOM
    • Zagadnienia uzupełniające
    • Klasyfikacja typów zdarzeń
    • Przepływ zdarzeń w DOM
    • Różne sposoby obsługi zdarzeń
    • Obserwatory zdarzeń
    • Przechwytywanie zdarzeń a różne wersje przeglądarek
    • Przekazywanie parametrów do metod obsługi zdarzeń
    • Przepływ zdarzeń
    • Zarządzanie obiektem zdarzenia
    • Delegacja zdarzeń
    • Zmiana zachowania domyślnego elementu DOM
    • Zatrzymanie procesu propagowania zdarzenia
    • Obsługa zdarzeń generowanych przez urządzenia wskazujące
    • Obsługa zdarzeń generowanych przez klawiaturę
    • Obsługa zdarzeń generowanych przez przeglądarkę
    • Obsługa zdarzeń generowanych przez formularz sieciowy
    • Obsługa zdarzeń generowanych przez zmiany w modelu DOM
    • Obsługa innych rodzajów zdarzeń
    • Zagadnienia uzupełniające
    • Walidacja formularza
    • Implementacja klienta REST API
    • Local storage oraz session storage
    • Przykłady innych bibliotek zewnętrznych
    • Zagadnienia uzupełniające
    • Interfejsy
    • Typy indeksowalne
    • Rozszerzanie interfejsów przez inne interfejsy oraz klasy
    • Typy hybrydowe
    • Klasa oraz jej składniki
    • Blok statyczny w klasie
    • Enkapsulacja
    • Dziedziczenie
    • Przesłanianie metod
    • Słowo kluczowe override
    • Klasy abstrakcyjne
    • Typy generyczne
    • Interfejsy generyczne
    • Generyczne typy funkcyjne
    • Klasy generyczne
    • Konkretyzacja typów generycznych
    • Ograniczenia konkretyzacji typów generycznych
    • Aliasy
    • Mapped type
    • Typy warunkowe
    • Typ Symbol
    • Iteratory
    • Generatory
    • Modułowość – eksportowanie, importowanie, default export, opcjonalne ładowanie modułów
    • Przestrzenie nazw
    • Dekoratory
    • Implementacja własnych dekoratorów
    • Praktyczne przykłady wykorzystanie dekoratorów
    • Mixins
    • Przegląd innych typów wbudowanyc
    • Omówienie struktury i zasady działania biblioteki React
    • Omówienie zasady działania aplikacji SPA
    • Przegląd wersji biblioteki React
    • Omówienie zasady działania aplikacji SPA
    • Przygotowanie aplikacji do pracy z biblioteką React
    • Omówienie składni JSX
    • Tworzenie pierwszego komponentu
    • Konfiguracja aplikacji React do pracy z TypeScript
    • Konteneryzacja aplikacji React do pracy w trybie developerskim oraz w trybie produkcyjnym
    • Zagadnienia uzupełniające
    • Tworzenie komponentu jako klasa
    • Tworzenie komponentu jako funkcja
    • Dynamiczne parametry komponentu – props
    • Stan komponentu
    • Modyfikacja stanu za pomocą metody setState
    • Wyjaśnienie problemu wskazania this w komponencie
    • Zagnieżdżanie komponentów
    • Higher Order Component
    • Zarządzanie elementami zagnieżdżonymi – React.Children
    • Identyfikacja zagnieżdżonych komponentów
    • Omówienie cyklów życia komponentu
    • Metody cyklu życia komponentu w zarządzaniu stanem komponentu
    • Tworzenie komponentu na podstawie tablicy danych
    • Komponenty prezentacyjne oraz komponenty logiki
    • Zagadnienia uzupełniające
    • Komponenty kontrolowane
    • Komponenty niekontrolowane
    • Dynamicznie generowane pól formularza
    • Praca ze zdarzeniami formularza
    • Wykorzystanie stanu komponentu do pracy z formularzem
    • Walidacja elementów formularza
    • Osadzanie informacji o błędach walidacji w formularzu
    • Obsługa plików z wykorzystaniem chmury
    • Przygotowanie danych formularza do pracy z backendem
    • Komunikacja HTTP ze zdalnym API
    • Zagadnienia uzupełniające
    • Klasyfikacja sposobów zarządzania stanem aplikacji
    • Struktura i zasada działania architektury Flux
    • Redux jako implementacja architektury Flux
    • Konfiguracja aplikacji do pracy z Redux
    • Store
    • Akcje
    • Reducery
    • Selektory
    • Podłączenie mechanizmów Redux do aplikacji React
    • Zarządzanie wywoływaniem akcji za pomocą Redux Thunk
    • Komunikacja HTTP z API za pomocą Redux Thunk
    • Implementacja Higher Order Reducer
    • Implementacja Higher Order Action Creator
    • Zarządzanie stanem aplikacji z wykorzystaniem Context API
    • Wprowadzenie do mechanizmu React Hooks
    • Konfiguracja stanu dla komponentów funkcyjnych
    • Funkcja useState
    • Funkcja useEffect
    • Funkcja useRef
    • Funkcja useReducer
    • Funkcja useCallback
    • Funkcja useMemo
    • Funkcja useContext
    • Dobre praktyki wykorzystania mechanizmu React Hooks
    • Implementacja własnych hooks
    • Implementacja formularza z wykorzystaniem React Hooks
    • Dynamiczna wersja formularza z wykorzystaniem React Hooks
    • Komunikacja HTTP z API za pomocą React Hooks
    • Biblioteka react-use
    • Biblioteka react-hook-form
    • Biblioteka react-fetch-hook
    • Biblioteka react-use-form-state
    • Biblioteka Formik
    • Biblioteka Hook Router
    • Biblioteka use-http
    • Rozpoznawanie mowy z wykorzystaniem biblioteki react-speech-recognition
    • Prezentacja innych bibliotek do pracy z React Hooks
    • Zagadnienia uzupełniające
    • Konfiguracja aplikacji do pracy z React Router
    • Podejście deklaratywne budowania routingu
    • Nawigacja pomiędzy komponentami w aplikacji React
    • Odczytywanie parametrów z URL
    • Routing zagnieżdżony
    • Implementowanie przekierowań w kodzie aplikacji React
    • Implementacja routingu dla błędu http 404
    • Wykorzystanie React Hooks do implementacji routingu (useParams, useLocation, useHistory, useRouteMatch)
    • Zagadnienia uzupełniające
    • Omówienie mechanizmu autentykacji oraz autoryzacji
    • Omówienie standardu JWT
    • Sposoby przechowywania tokena po stronie klienta
    • Rejestracja użytkowników
    • Implementacja mechanizmu logowania
    • Zarządzanie tokenami
    • Implementacja mechanizmu wylogowania
    • Konfiguracja routingu pod kątem bezpieczeństwa aplikacji
    • Dostosowanie aplikacji do pracy z użytkownikami o różnych uprawnieniach
    • Zagadnienia uzupełniające
    • Omówienie zagadnień związanych z testowaniem aplikacji
    • Omówienie właściwości frameworka Jest
    • Omówienie właściwości biblioteki Enzyme
    • Konfiguracja aplikacji React do przeprowadzania testów
    • Przedstawienie różnych metod testowania komponentów
    • Testowanie właściwości oraz stanu komponentów
    • Testowanie stanu reprezentowanego przez framework Redux
    • Testowanie mechanizmów implementowanych w ramach Redux Thunk
    • Testowanie komunikacji asynchronicznej (fetch, axios)
    • Testowanie mechanizmów implementowanych w ramach hooks
    • Testowanie kontekstu aplikacji
    • Zagadnienia uzupełniające
    • Lazy loading komponentów
    • Debuggowanie aplikacji opartej o bibliotekę React
    • Timery
    • Wykorzystanie biblioteki RxJS w aplikacjach React
    • React.memo
    • React Fragment
    • Portale
    • React Interceptors
    • React-Async
    • Zagadnienia uzupełniając
    • Architektura i zastosowanie Node.js
    • Instalacja potrzebnych komponentów
    • Mechanizm Event Driven Code Execution
    • Uruchamianie podstawowych skryptów – REPL
    • Przygotowanie aplikacji Node.js do pracy z JavaScript ES6+
    • Przygotowanie aplikacji Node.js do pracy z TypeScript
    • Omówienie systemu modułowości Node.js
    • Omówienie wzorca MVC na potrzeby aplikacji webowej
    • Cykl życia serwera Node.js – moduł http
    • Implementacja serwera Node.js – moduł http
    • Implementacja routingu dla serwera Node – moduł http
    • Instalacja frameworka Express
    • Omówienie zasady działania middleware
    • Zarządzanie żądaniami i odpowiedziami http
    • Parametry żądań http
    • Nagłówki żądań http
    • Przetwarzanie ciała żądania
    • Implementacja routingu
    • Obsługa zasobów statycznych
    • Konfiguracja loggerów
    • Walidacja danych
    • Obsługa błędów
    • Zarządzanie sesją oraz cookies
    • Konteneryzacja aplikacji webowej (patrz punkt 42)
    • Osadzenie aplikacji webowej w chmurze (patrz punkt 43)
    • Zagadnienia uzupełniające
    • Prezentacja bibliotek do pracy relacyjnymi bazami danych
    • Konfiguracja połączenia z bazą danych – mysql2
    • Zarządzanie tabelą w bazie danych – mysql2
    • Implementacja relacji pomiędzy tabelami – mysql2
    • Zarządzanie danymi w bazie danych – mysql2
    • Przygotowanie warstwy bazodanowej – mysql2
    • Charakterystyka mechanizmu ORM
    • Konfiguracja połączenia z bazą danych – Sequelize
    • Zarządzanie modelem tabeli w bazie danych – Sequelize
    • Migracje – Sequelize
    • Walidacja modelu tabeli – Sequelize
    • Definiowanie relacji bazodanowych – Sequelize
    • Zarządzanie danymi w bazie danych – Sequelize
    • Zarządzanie transakcyjnością – Sequelize
    • Przygotowanie warstwy bazodanowej – Sequelize
    • Przygotowanie warstwy serwisowej do pracy z warstwą bazodanową
    • Konfiguracja połączenia z bazą danych – TypeORM
    • Zarządzanie modelem tabeli w bazie danych – TypeORM
    • Migracje – TypeORM
    • Walidacja modelu tabeli – TypeORM
    • Definiowanie relacji bazodanowych – TypeORM
    • Zarządzanie danymi w bazie danych – TypeORM
    • Zarządzanie transakcyjnością – TypeORM
    • Praca z Query Builder – TypeORM
    • Tworzenie własnych repozytoriów z wykorzystaniem TypeORM
    • Przygotowanie warstwy bazodanowej – TypeORM
    • Zagadnienia uzupełniające
    • Omówienie architektury bazy danych NoSql
    • Prezentacja bibliotek do pracy z bazami danych NoSql
    • Konfiguracja połączenia z bazą danych NoSql – mongodb
    • Przygotowanie modelu do pracy z bazą danych NoSql – mongodb
    • Implementacja relacji w bazie danych NoSql – mongodb
    • Zarządzanie danymi w bazie danych NoSql – mongodb
    • Przygotowanie warstwy bazodanowej – mongodb
    • Przygotowanie aplikacji do pracy z mongoose
    • Konfiguracja połączenia z bazą danych NoSql – mongoose
    • Przygotowanie modelu do pracy z bazą danych NoSql – mongoose
    • Implementacja relacji w bazie danych NoSql – mongoose
    • Zarządzanie danymi w bazie danych NoSql – mongoose
    • Implementacja kompletnej warstwy do komunikacji z bazą danych
    • Przygotowanie warstwy bazodanowej – mongoose
    • Przygotowanie warstwy serwisowej do pracy z warstwą bazodanową
    • Zagadnienia uzupełniające
    • Omówienie standardu REST
    • Konfiguracja aplikacji Node.js do pracy z REST
    • Integracja aplikacji REST z warstwą bazodanową
    • Przechwytywanie parametrów oraz ciała żądania HTTP
    • Walidacja danych przekazywanych w ciele żądania HTTP
    • Implementacja routingu w aplikacji REST
    • Implementacja kompletnej aplikacji REST API
    • Rejestracja użytkowników w aplikacji REST Node.js
    • Osadzenie warstwy security w aplikacji REST Node.js
    • Implementacja serwisu do wysyłania wiadomości email
    • Zarządzanie zasobami statycznymi w chmurze
    • Implementowanie mechanizmu CORS
    • Testowanie aplikacji REST Node.js
    • Zagadnienia uzupełniające
    • Omówienie standardu GraphQL
    • Prezentacja różnic pomiędzy standardami REST oraz GraphQL
    • Konfiguracja aplikacji Node.js do pracy z GraphQL
    • Integracja aplikacji GraphQL z warstwą bazodanową
    • Przygotowanie schematu danych dla aplikacji GraphQL
    • Zarządzanie queries w aplikacji GraphQL
    • Zarządzanie mutations w aplikacji GraphQL
    • Wykorzystanie dodatkowych narzędzi GraphQL – np. variables
    • Implementacja kompletnej aplikacji GraphQL
    • Rejestracja użytkowników w aplikacji GraphQL
    • Osadzenie warstwy security w aplikacji GraphQL
    • Implementacja serwisu do wysyłania wiadomości email
    • Zarządzanie zasobami statycznymi w chmurze
    • Implementacja mechanizmu CORS
    • Testowanie aplikacji REST Node.js
    • Zagadnienia uzupełniające
    • Konfiguracja warstwy testującej dla aplikacji webowej
    • Instalacja frameworka Mocha do zarządzania uruchamianiem testów
    • Instalacja frameworka Chai do zarządzania asercjami
    • Instalacja frameworka Sinon do wykorzystywania mocków
    • Przygotowanie struktury projektów do pracy z warstwą testującą
    • Przegląd i wykorzystanie różnych rodzajów asercji
    • Grupowanie testów
    • Hooks (akcje wykonywane pomiędzy testami)
    • Mockowanie obiektów
    • Testy jednostkowe oraz intergacyjne
    • Testowanie metod serwisowych
    • Testowanie kontrolerów
    • Testowanie mechanizmów asynchronicznych
    • Przygotowanie warstwy bazodanowej na potrzeby testów
    • Testowanie REST API z wykorzystaniem narzędzi zewnętrznych
    • Testowanie warstwy security
    • Zagadnienia uzupełniające

    Ten moduł realizujesz równolegle z kursem – poinformuję Cię, kiedy należy go przerobić

    • Omówienie architektury platformy Docker
    • Zasada działania obrazu oraz kontenera
    • Różnica pomiędzy kontenerem Docker oraz maszyną wirtualną
    • Instalacja platformy Docker
    • Praca z Docker CLI
    • Tworzenie i zarządzanie obrazami platformy Docker
    • Image Layers
    • Wprowadzenie do pracy z Docker Hub
    • Osadzenie przygotowanego obrazu w repozytorium Docker Hub
    • Tworzenie i zarządzanie kontenerami w platformie Docker
    • Omówienie cyklu życia kontenera
    • Kopiowanie plików z maszyny lokalnej do kontenera
    • Kopiowanie plików z kontenera do maszyny lokalnej
    • Klasyfikacja rodzajów danych przechowywanych w kontenerach
    • Tworzenie i zarządzanie volumes w platformie Docker
    • Różnica pomiędzy anonymous volumes oraz named volumes
    • Tworzenie i zarządzanie bind mounts w platformie Docker
    • Omówienie różnic pomiędzy volumes oraz bind mounts
    • Tworzenie volumes tylko do odczytu
    • Instalacja i uruchamianie przykładowych narzędzi z wykorzystaniem platformy Docker
    • Omówienie struktury pliku konfiguracyjnego Dockerfile
    • Praca z argumentami oraz zmiennymi środowiskowymi
    • Konteneryzacja aplikacji webowej z wykorzystaniem Docker
    • Komunikacja kontenera z zewnętrznym REST API
    • Komunikacja kontenera z narzędziami osadzonymi w localhost
    • Komunikacja container to container z użyciem networks w platformie Docker
    • Przegląd sterowników do konfiguracji zachowania networks
    • Omówienie zasady działania narzędzia Docker Compose
    • Instalacja narzędzia Docker Compose
    • Struktura pliku konfiguracyjnego narzędzia Docker Compose
    • Przygotowanie kontenera bazy danych
    • Konfiguracja kontenerów do pracy z wieloma bazami danych
    • Konteneryzacja przykładowej aplikacji
    • Przykład tworzenia utility containers

    Git to jedno z najważniejszych narzędzi w pracy programisty – pozwala zarządzać kodem, kontrolować zmiany i bezpiecznie rozwijać projekt w zespole. W tym module poznasz również GitHub, czyli platformę, która umożliwia przechowywanie repozytoriów w chmurze, współpracę z innymi programistami oraz prezentowanie swojego kodu potencjalnym pracodawcom. Ten moduł będziesz realizować równolegle z kursem – dam Ci znać w odpowiednim momencie, kiedy warto go przerobić, aby w pełni wykorzystać jego możliwości w swoich projektach.

    • Podstawowe informacje na temat systemów kontroli wersji
    • Working area, staging area, local / remote repository
    • Instalacja Git
    • Inicjalizacja repozytorium
    • Konfiguracja i personalizacja ustawień Git (3 poziomy konfiguracji)
    • Dokumentacja Git
    • Struktura katalogu .git
    • Plik .gitignore
    • Plik .gitattributes
    • Śledzenie stanu, porównywanie plików projektu zarządzanego przez Git
    • Tworzenie commitów
    • Reset, restore, revert
    • Prezentowanie informacji na temat commitów
    • Hooks
    • Tworzenie i zarządzanie gałęziami
    • Merge, rebase, squash
    • Git Flow, TBD
    • Praca zespołowa z wykorzystaniem GitHub
    • Clone, push, fetch, pull
    • Dobre praktyki przygotowania repozytorium na GitHub
    • Struktura pliku README.md
    • Praktyczny przykład pracy zespołowej z wykorzystaniem GitHub
    • Worktree
    • Submodules
    • Subtree
    • Stash
    • Bisect
    • Tags
    • Inne komendy Git (o których nie wspomniałem w tym opisie, a których użyłem w kursie)
    • Praca z Git, GitHub z wykorzystaniem komercyjnego IDE
    • Fork
    • Tworzenie pull requests
    • GitHub Desktop

    Newsletter