En moderne vanilla JavaScript frontend-applikation, der demonstrerer bedste praksis for web-komponenter, API-integration og brugergrænsefladedesign. Bygget med HTML5, CSS3 og moderne JavaScript ES6+ moduler. Denne applikation forbruger Northwind Backend API.
- ✅ Progressive Web App (PWA) - Installerbar på desktop og mobile enheder
- ✅ Web-komponenter - Genanvendelige brugerdefinerede elementer uden frameworks
- ✅ Vanilla JavaScript - Ingen framework-afhængigheder, kun moderne ES6+
- ✅ Responsivt Design - Fomantic UI til konsekvent styling
- ✅ API-integration - REST API-klient til Northwind backend
- ✅ Kunde Dashboard - Top-kunder sorteret efter omsætning
- ✅ Kundestyring - Komplet CRUD-operationer for kunder (Create, Read, Update, Delete)
- ✅ JWT Autentificering - Login-system og adgang til beskyttede endpoints
- ✅ Kodekvalitetsværktøjer - ESLint, HTMLHint og Stylelint
- ✅ Modulær Arkitektur - Organiseret komponentstruktur
Frontend: https://devcronberg.github.io/Northwind.App.Frontend
Frontend-applikationen forbinder til den deployede backend API:
Backend API: https://northwind-backend-b088.onrender.com
⚠️ Bemærk: Backend API'en er hostet på Render.com's gratis niveau og lukker ned efter 15 minutters inaktivitet. Den første forespørgsel kan tage 30-50 sekunder.
- HTML5 - Semantisk markup med brugerdefinerede elementer
- CSS3 - Moderne styling med CSS Grid og Flexbox
- JavaScript ES6+ - Moduler, klasser, async/await
- Fomantic UI - Responsivt CSS framework (fork af Semantic UI)
- jQuery - Krævet af Fomantic UI
- Web Components - Custom Elements API
- Fetch API - Moderne HTTP-klient
- Moderne webbrowser (Chrome, Firefox, Edge, Safari)
- Lokal webserver (f.eks. Live Server, http-server eller VS Code Live Server extension)
- Node.js og npm (til udviklingsværktøjer og linting)
git clone https://github.com/devcronberg/Northwind.App.Frontend.git
cd Northwind.App.Frontendnpm install- Højreklik på
index.html - Vælg "Open with Live Server"
npx http-server -p 8080python -m http.server 8080Naviger til: http://localhost:8080
Northwind.App.Frontend/
├── index.html # Dashboard-side
├── customers.html # Kundestyring-side
├── auth.html # Autentificering-side (JWT login demo)
├── about.html # Om-side
├── manifest.json # PWA web app manifest
├── sw.js # Service worker (minimal, ingen cache)
├── package.json # NPM-afhængigheder og scripts
├── eslint.config.mjs # ESLint-konfiguration
├── assets/
│ ├── favicon.ico # Favicon (32x32)
│ ├── favicon.svg # SVG favicon
│ ├── icon-192.png # PWA app ikon (192x192)
│ ├── icon-512.png # PWA app ikon (512x512)
│ └── apple-touch-icon.png # iOS app ikon (180x180)
├── css/
│ └── styles.css # Brugerdefineret styling
├── js/
│ ├── app.js # Applikations indgangspunkt
│ ├── config/
│ │ └── settings.js # API og app konfiguration
│ └── components/
│ ├── app-header.js # Header-komponent
│ ├── app-footer.js # Footer-komponent
│ ├── customer-table.js # Kundeliste-tabel med CRUD
│ ├── login-form.js # Login-formular med JWT
│ ├── protected-customers.js # Beskyttet endpoint demo
│ ├── customer-revenue-table.js # Omsætningsdashboard-tabel
│ └── form-text-input.js # Genanvendelig formular-input
└── .github/
├── copilot-instructions.md # GitHub Copilot instruktioner
└── workflows/
└── deploy.yml # Automatisk deployment til GitHub Pages
Applikationen bruger moderne Web Components (Custom Elements):
Navigations-header med logo og menu-links.
Footer med copyright-information.
Viser alle kunder i en tabel med komplet CRUD-operationer (Create, Read, Update, Delete).
Funktioner:
- Opret nye kunder via "Create Customer" knap
- Rediger eksisterende kunder
- Slet kunder med bekræftelse
- Responsiv tabel med Fomantic UI styling
Attributter:
limit(valgfri) - Maksimalt antal kunder der skal vises
Dashboard-tabel med top-kunder sorteret efter omsætning.
Attributter:
limit(påkrævet) - Antal top-kunder der skal vises
Genanvendelig formular-inputfelt-komponent.
Attributter:
label- Feltetiket
Login-formular til JWT-autentificering.
Funktioner:
- Login med email og password
- Token-lagring i localStorage
- Logout-funktionalitet
- Visuel feedback ved login/logout
Demonstrerer adgang til beskyttede API-endpoints med JWT token.
Funktioner:
- Fetch kunder fra beskyttet endpoint
- Automatisk inkludering af Authorization header
- Fejlhåndtering for udløbne/ugyldige tokens
- Viser kundedata i tabel
name- Formularfeltnavn
GET /api/public/customers- Hent alle kunderGET /api/public/customers-with-revenue- Hent kunder med omsætningGET /api/public/customers/{id}- Hent specifik kundePOST /api/public/customers- Opret ny kundePUT /api/public/customers/{id}- Opdater kundeDELETE /api/public/customers/{id}- Slet kunde
POST /api/auth/login- Login og modtag JWT token- Request body:
{ "username": "string", "password": "string" } - Response:
{ "token": "jwt-token-string" }
- Request body:
GET /api/customers- Hent kunder (kræver Authorization header)- Header:
Authorization: Bearer {token}:
- Header:
API-endepunkter er konfigureret i js/config/settings.js:
export const API_CONFIG = {
BASE_URL: 'https://northwind-backend-b088.onrender.com/api',
TIMEOUT: 30000,
};GET /api/public/customers- Hent alle kunderGET /api/public/customers-with-revenue- Hent kunder med omsætningGET /api/public/customers/{id}- Hent specifik kundePOST /api/public/customers- Opret ny kundePUT /api/public/customers/{id}- Opdater kundeDELETE /api/public/customers/{id}- Slet kunde
Applikationen bruger Fomantic UI til konsekvent styling:
- Responsivt grid-system
- For-stylede komponenter (knapper, tabeller, formularer)
- Ikoner via Fomantic UI icon font
- Brugerdefineret styling i css/styles.css
Applikationen er bygget som en Progressive Web App og kan installeres på både desktop og mobile enheder.
🚨 VIGTIGT: Kør altid lint før commit eller deployment!
# Lint HTML
npm run lint:html
# Lint CSS
npm run lint:css
# Lint JavaScript
npm run lint:js
# Lint alt
npm run lintDeployment til GitHub Pages vil fejle hvis linting ikke passerer.
- Åbn applikationen i browseren
- Klik på install-ikonet i adresselinjen (eller "..." menu → "Install Northwind Traders")
- Appen åbnes i et selvstændigt vindue uden browser-chrome
- Åbn applikationen i Safari (iOS) eller Chrome (Android)
- iOS: Tryk "Share" → "Add to Home Screen"
- Android: Tryk menu → "Add to Home Screen" eller følg installation-prompt
- Appen vises som et ikon på hjemmeskærmen
manifest.json- Web app manifest med app-metadatasw.js- Service worker (pass-through, ingen cache)assets/icon-192.png- App ikon 192x192 (blå baggrund, hvidt "N")assets/icon-512.png- App ikon 512x512 (blå baggrund, hvidt "N")assets/apple-touch-icon.png- iOS specifikt ikon 180x180assets/favicon.ico- Browser favicon
Service workeren er minimal og implementerer kun grundlæggende install/activate events for at opfylde PWA-kravene, men cacher ikke ressourcer eller API-kald.
Vi bruger automatiske værktøjer til at sikre høj kodekvalitet. Sørg for at køre disse før hver commit.
- **Autentificering (auth.html)
- JWT-baseret autentificering demo
- Login-formular med token-lagring
- Fetch beskyttede kunde-endpoints med Authorization header
- Demonstrerer forskel mellem public og protected endpoints
- HTMLHint - Tjekker HTML for korrekthed
- Stylelint - Tjekker CSS for fejl
# Lint HTML
npm run lint:html
# Lint CSS
npm run lint:css
# Lint JavaScript
npm run lint:js
# Kør alle tjek (påkrævet før deployment)
npm run lintDashboard (index.html)
- Viser velkomst og oversigt
- Præsenterer top-kunder sorteret efter omsætning via
<customer-revenue-table>
Kundestyring (customers.html)
- Hovedside for kunde-administration
- Implementerer fuld CRUD (Create, Read, Update, Delete) via
<customer-table>
Om (about.html)
- Information om projektet, teknologistakken og udviklingsprocessen
API-endepunkter er konfigureret i js/config/settings.js.
Standardkonfigurationen peger på den live backend:
export const API_CONFIG = {
BASE_URL: 'https://northwind-backend-b088.onrender.com/api',
TIMEOUT: 30000,
};For lokal udvikling med Northwind.App.Backend, ændr URL'en til:
export const API_CONFIG = {
BASE_URL: 'http://localhost:5000/api',
TIMEOUT: 30000,
};- ✅ Separation of Concerns - Komponenter, konfiguration og styling adskilt
- ✅ Genanvendelige Komponenter - Web Components med brugerdefinerede attributter
- ✅ Moderne JavaScript - ES6 moduler, klasser, async/await
- ✅ Fejlhåndtering - Try/catch blokke og bruger-feedback
- ✅ Loading States - Visuel feedback under API-kald
- ✅ Responsivt Design - Mobile-first tilgang
- ✅ Kodekvalitet - Linting og konsekvent kode-stil
- ✅ Semantisk HTML - Korrekt brug af HTML5 elementer
- ✅ Tilgængelighed - ARIA labels og semantiske tags
Frontend-applikationen kan deployes til enhver statisk hosting-tjeneste:
Dette projekt inkluderer en GitHub Actions workflow, der automatisk deployer til GitHub Pages ved hvert push til main branchen.
Engangs-setup:
- Gå til repository Settings → Pages
- Under "Build and deployment", vælg "GitHub Actions" som kilde
- Push til
mainbranchen for at udløse deployment - Siden vil være tilgængelig på:
https://devcronberg.github.io/Northwind.App.Frontend
Workflow'en (.github/workflows/deploy.yml) gør automatisk:
- Installerer afhængigheder
- Kører linting-tjek (HTML, CSS, JavaScript)
- Deployer applikationen til GitHub Pages
Efter setup, vil hvert push til main automatisk deploye den seneste version.
# Alternativ: Aktiver GitHub Pages i repository-indstillinger
# Vælg main branch og rod-mappe# Træk mappen til netlify.com
# eller forbind dit GitHub repositorynpx vercel# render.yaml eksempel
services:
- type: web
name: northwind-frontend
env: static
buildCommand: "echo 'No build needed'"
staticPublishPath: .- Backend API: Northwind.App.Backend
- Live Backend: https://northwind-backend-b088.onrender.com
- Swagger API Docs: https://northwind-backend-b088.onrender.com/swagger
Dette er et demo-projekt til læringsformål. Du er velkommen til at:
- Forke repository'et
- Oprette feature branches
- Indsende pull requests
- Rapportere problemer
- Foreslå forbedringer
Dette projekt er open source og tilgængeligt til undervisningsformål.
- Northwind Database - Klassisk eksempel-database fra Microsoft
- Fomantic UI Team - For det fremragende CSS framework
- Web Components Community - For standarder og best practices
- Repository: https://github.com/devcronberg/Northwind.App.Frontend
- Backend API: https://github.com/devcronberg/Northwind.App.Backend
- Live Demo: https://northwind-backend-b088.onrender.com
God Kodning! 🚀
Dette er en demo-applikation til undervisningsformål. Til produktionsbrug skal du implementere ordentlig sikkerhed, fejllogning, overvågning og performance-optimering.