Zadanie – system zamówień restauracji

====================================================

SPIS TREŚCI APLIKACJI RESTAURACJA

1.Instalacja Node.js i Angular CLI
2.Utworzenie nowego projektu Angular w Visual Studio 2022
3.Instalacja i konfiguracja Bootstrapa
4.Tworzenie komponentów aplikacji
5.Instalacja JSON Server (backend)
6.Pobieranie menu restauracji z API
7.Uruchamianie aplikacji
8.Najczęstsze problemy i porady

====================================================

KROK 1: INSTALACJA NODE.JS I ANGULAR CLI

1.Zainstaluj Node.js (wersja LTS) z https://nodejs.org
2.Sprawdź wersje Node.js i npm w terminalu (PowerShell lub CMD):
node -v
npm -v

3.Zainstaluj Angular CLI globalnie:
npm install -g @angular/cli

4.Zweryfikuj instalację Angular CLI:
ng version

====================================================

KROK 2: UTWORZENIE NOWEGO PROJEKTU ANGULAR

W VISUAL STUDIO 2022

1.Uruchom Visual Studio 2022.

• Możesz wybrać „Plik / File” -> „Otwórz / Open” -> „Folder…” i wskazać folder, gdzie chcesz utworzyć projekt Angular.
• Alternatywnie możesz utworzyć „Blank Solution” i w nim otworzyć folder.

2.Otwórz Terminal w Visual Studio 2022 (Widok / View -> Terminal).
3.Przejdź w terminalu do wybranego katalogu, np.:
cd C:\MojeProjekty

4.Utwórz nowy projekt Angular:
ng new RestauracjaZamowienia

• Odpowiedz „Yes” na pytanie o routing.
• Wybierz CSS lub SCSS.

5.Przejdź do utworzonego folderu:
cd RestauracjaZamowienia

6.Uruchom projekt, aby sprawdzić czy działa:
ng serve –open

• Aplikacja będzie dostępna pod adresem http://localhost:4200/

====================================================

KROK 3: INSTALACJA I KONFIGURACJA BOOTSTRAPA

1.W terminalu (będąc w folderze projektu) zainstaluj Bootstrap:
npm install bootstrap

2.Otwórz plik angular.json i w sekcji “styles” oraz “scripts” dopisz:

“styles”: [

“src/styles.scss”,

“node_modules/bootstrap/dist/css/bootstrap.min.css”

],

“scripts”: [

“node_modules/bootstrap/dist/js/bootstrap.bundle.min.js”

]

Upewnij się, że używasz prostych cudzysłowów.

3.Zrestartuj serwer:
ng serve

(lub przerwij bieżący ng serve klawiszami Ctrl + C i uruchom ponownie).

4.Sprawdź działanie Bootstrapa. W pliku src/app/app.component.html wstaw np.:

<div class=”container-mt-5″>
<h1 class=”text-primary”>System zamówień w restauracji</h1>
<button class=”btn-btn-success”>Kliknij mnie</button>
</div>

Jeśli przycisk ma styl Bootstrapa, wszystko jest w porządku.

====================================================

KROK 4: TWORZENIE KOMPONENTÓW APLIKACJI

(Upewnij się, że jesteś w folderze RestauracjaZamowienia.)

1.Komponent menu restauracji:
ng generate component components/menu

2.Komponent koszyka zamówień:
ng generate component components/cart

3.Komponent szczegółów zamówienia:
ng generate component components/order-details

4.Komponent nawigacji (navbar):
ng generate component components/navbar

====================================================

KROK 5: INSTALACJA JSON SERVER (BACKEND)

1.Zainstaluj JSON Server globalnie:
npm install -g json-server

2.W katalogu głównym projektu utwórz plik db.json z przykładowymi danymi:

{

“menu”: [

{ „id”: 1, “name”: „Pizza Margherita”, „price”: 25 },

{ „id”: 2, „name”: „Spaghetti Carbonara”, „price”: 30 },

{ „id”: 3, „name”: „Lasagna”, „price”: 28 }

],

„orders”: []

}

Upewnij się, że używasz prostych cudzysłowów w JSON.

3.Uruchom serwer JSON:
json-server –watch db.json –port 3000

• Serwer ruszy na http://localhost:3000/
• Dostęp do menu będzie pod http://localhost:3000/menu

====================================================

KROK 6: POBIERANIE MENU RESTAURACJI Z API

1.Utwórz serwis do obsługi API:
ng generate service services/menu

2.Otwórz plik src/app/services/menu.service.ts i wklej:

import { Injectable } from ‘@angular/core’;

import { HttpClient } from ‘@angular/common/http’;

import { Observable } from ‘rxjs’;

@Injectable({

providedIn: ‘root’

})

export class MenuService {

private apiUrl = ‘http://localhost:3000/menu’;

constructor(private http: HttpClient) { }

getMenu(): Observable {

return this.http.get(this.apiUrl);

}

}

lub

import { Injectable } from „@angular/core”;
import { HttpClient } from „@angular/common/http”;
import { Observable } from „rxjs”;

@Injectable({
providedIn: 'root’
})
export class MenuService {
private apiUrl = „http://localhost:3000/menu”;

constructor(private http: HttpClient) { }

getMenu(): Observable<Menu[]> {
return this.http.get<Menu[]>(this.apiUrl);
}
}

3.W pliku src/app/app.module.ts dołącz HttpClientModule:

import { BrowserModule } from „@angular/platform-browser”;

import { NgModule } from „@angular/core”;

import { HttpClientModule } from „@angular/common/http”;

import { AppComponent } from „./app.component”;

// importy innych komponentów

@NgModule({

declarations: [

AppComponent,

// twoje komponenty…

],

imports: [

BrowserModule,

HttpClientModule,

// inne moduły…

],

providers: [],

bootstrap: [AppComponent]

})

export class AppModule { }

4.W pliku src/app/components/menu/menu.component.ts pobierz menu:

import { Component, OnInit } from „@angular/core”;

import { MenuService } from „../../services/menu.service”;

@Component({

selector: „app-menu”,

templateUrl: „./menu.component.html”,

styleUrls: [„./menu.component.scss”]

})

export class MenuComponent implements OnInit {

menuItems: any[] = [];

constructor(private menuService: MenuService) {}

ngOnInit(): void {

this.menuService.getMenu().subscribe(data => {

this.menuItems = data;

});

}

}

5.W src/app/components/menu/menu.component.html wyświetl menu:

<div class=”container mt-4″>
<h2>Menu Restauracji</h2>
<div class=”row”>
<div class=”col-md-4″ *ngFor=”let item of menuItems”>
<div class=”card p-3 mb-3″>
<h4>{{ item.name }}</h4>
<p>Cena: {{ item.price }} PLN</p>
<button class=”btn btn-primary”>Dodaj do koszyka</button>
</div>
</div>
</div>
</div>

====================================================

KROK 7: URUCHAMIANIE APLIKACJI

1.Uruchom JSON Server (backend):
json-server –watch db.json –port 3000

2.Uruchom Angular (frontend):
ng serve –open

Aplikacja powinna być dostępna na http://localhost:4200/, a API na http://localhost:3000/menu

====================================================

KROK 8: NAJCZĘSTSZE PROBLEMY I PORADY

1.„Krzywe” cudzysłowy i myślniki
• Zamiast – (półpauza) używaj – (dwa minusy).
• Upewnij się, że w JSON czy kodzie TS masz “ (proste cudzysłowy), a nie „ (cudzysłowy polskie).

2.Literówki w klasach Bootstrapa
• Używaj np. class=“btn btn-success” zamiast class=“btn-btn-success”.
• Używaj class=“container mt-5” zamiast class=“container-mt-5”.

3.Node.js / npm w Visual Studio 2022
• Czasem VS 2022 używa innej wersji Node. W terminalu sprawdź node -v, npm -v, ng version.

4.Projekt Angular + .NET
• Jeśli masz szablon „ASP.NET Core + Angular”, to Angular zwykle jest w folderze ClientApp. Tam uruchamiaj npm install, ng serve itd.

5.Debugowanie i przeglądarka
• Frontend standardowo: http://localhost:4200/
• Backend (JSON Server): http://localhost:3000/

====================================================