Skip to content

Tom002/TemalabTaskManagement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projekt felépítése

Az elkészült program egy .Net Core backendből és egy React frontend alkalmazásból áll.

A .Net Core alkalmazás a TaskManagement mappában található és az alábbi 3 projektből épül fel.

  • TaskManagement.Web:

    • Az alkamazás belépési pontja

    • Itt található a REST api ami kiszolgálja a beérkező HTTP kéréseket

    • Két Controller-t tartalmaz amik a kéréseket feldolgozzák, TodosController és StatesController

    • Itt találhatóak a különböző DTO-ok is, az ezek közötti átalakítást az Automapper NuGet csomag végzi el

  • TaskManagement.DAL:

    • Az alkalmazás adatelérési rétege

    • Entity Framework Core-t használ az adatelérés megvalósításához

    • Megvalósítja a Repository pattern-t

  • TaskManagement.Test:

    • Unit teszteket tartalmaz

    • XUnit NuGet csomagot használja a teszteléshez

    • InMemory providert használ a teszteléshez

A React alkalmazás a client-app mappában található, vázlatos felépítése, az src mappából indulva:

  • app

    • api/agent.ts: Itt vannak definiálva a lehetséges API hívások és itt van megadva az API alapértelmezett címe (http://localhost:52126/api). Valamint itt történik a szerver által visszaküldött hibát jelző HTTP válaszok kezelése. Axios HTTP klienst használ.

    • models: Alkalmazásban használt Typescript interfészek itt vannak definiálva.

    • stores/taskStore.ts: Állapotkezelés megvalósítása Mobx alapon.

    • App.tsx: Itt vannak felsorolva a különböző route-ok, és hogy melyik route esetén melyik komponenst kell kirenderelni.

  • features: Itt találhatók az alkalmazás React komponensei, kategóriánként külön mappában

    • home/HomePage.tsx: Landing page, egy gomb van rajta egyből a TasksGrid komponensre továbbít

    • nav/NavBar.tsx: A navbar-t megvalósító komponens

    • state/StateCreateForm.tsx: Állapot létrehozó form komponens

    • NotFound.tsx: Akkor kerül megjelenítésre ha semmilyen más route nem aktiválódott, illetve az Axios 404-es válasz esetén ide irányít át.

    • task

      • TasksGrid.tsx: Lekérdezi a Task-okat és State-eket a taskStore-ból. Minden State Task-jait egy külön oszlopban jeleníti meg, egy Task adatainak megjelenítéséhez a TaskCard.tsx komponenst használja. Lehetővé teszi a Taskok State-jének megváltoztatását drag & drop módon, a react-beautiful-dnd npm csomag segítségével

      • TaskCard.tsx: Az url-ben lévő id alapján betölt egy Taskot a taskStore ból , megjeleníti röviden az adatait és a hozzá tartozó Edit és View gombokat.

      • TaskDetails.tsx: id alapján betölt egy Taskot a taskStore ból és megjelníti az adatait

      • EditForm.tsx: Az url-ben lévő id alapján betölt egy Taskot a taskStore ból és a betöltött Task szerkesztését teszi lehetővé. Semantic UI form elemeket használ illetve a react-datepicker npm csomagoból származó dátum választót

      • CreateForm.tsx: Az EditFormhoz hasonlóan működik, csak nem tölt be Taskot, hanem egy üres Task-al inicilizálja magát

      • TaskPriority.tsx: Taskok prioritásának változtatását teszi lehetővé drag & drop módon, a Taskok adatait TaskPriorityCard.tsx segítségével jeleníti meg

Fejlesztéshez szükséges eszközök

React alkalmazás beüzemelése

Navigáljunk a client-app mappába egy terminálban és adjuk ki az npm install parancsot, ez majd letölti a szükséges függőségeket. Ezután az alkalmazás az npm start paranccsal indítható el. Az alkalmazás alapértelmezetten a localhost:3000/ url-en fut.

.Net Core alkalmazás beüzemelése

Az alkalmazásnak egy SQL Server alapú adatbázisra van szüksége a működéshez. A TaskManagement.Web/appsettings.json fájlban kell átírni a connection string-et. Az alkalmazás indítás után egy TaskManagement nevű adatbázist keres az adatbázis szerveren, ha nincs ilyen nevű adatbázis akkor létrehoz egyet majd végrehajtja rajta a TaskManagement.DAL/Migrations mappában lévő migrációkat.

Megnyitva TaskManagement.sln fájlt, a Visual Studio automatikusan letölti a függőségeket, ezután egyből futtathatjuk az alkalmazást a beépített IIS webszerveren.

  • Visual Studio nélkül Navigáljunk terminálban a Task management/TaskManagement.Web mappába és adjuk ki a dotnet run parancsot. Ez a parancs automatikusan letölti a függőségeket, le buildeli, majd elindítja az alkalmazást.

(.Net Core 2.0 előtt manuálisan kellett kiadni dotnet restore parancsot a függőségek letöltéséhez, de a mostani verzióban ez implicit megtörténik)

Az alkalmazás mindkét esetben a http://localhost:52126/api url-en fog futni. Ezt át lehet írni TaskManagement.Web/Properties/launchSettings.json fájlban, ekkor azonban ezt a React alkalmazásban is át kell írni az src/app/api/agent.ts fájlban.

Unit tesztek futtathatóak fordítás után a Visual Studio Test/TestExplorer ablakában. Vagy ha nem használunk Visual Studio-t akkor a Task management mappába navigálva terminálból kiadható a dotnet test parancs a tesztek futtatásához.

Debug

A React alkalmazás debugolásához jól használható a React DevTools böngésző bővítmény, ami letölthető Chrome és Firefox böngészőkhöz. Chrome devtools extension Firefox devtools extension

A .Net Core alkalmazás könnyen debugolható a Visual Studio beépített debuggerét használva.