Een interactieve kaartapplicatie voor het beheren en visualiseren van fietsgerelateerde onderwerpen in Deventer. Dit project stelt gebruikers in staat om knelpunten, suggesties en projecten op een kaart te plaatsen en te beheren.
Deze applicatie is gebouwd met Nuxt 4 en biedt:
- Interactieve kaart met OpenLayers voor het weergeven van onderwerpen
- Gebruikersbeheer met authenticatie en autorisatie
- Admin dashboard voor het beheren van onderwerpen, categorieën en gebruikers
- Real-time updates via WebSockets
- Meerdere kaartlagen (luchtfoto, fietskaart, etc.)
- Responsive design voor mobiel en desktop
- Framework: Nuxt 4 (Vue 3 met TypeScript)
- UI Components: Vuetify 3
- Kaarten: OpenLayers via vue3-openlayers
- State Management: Pinia
- Authenticatie: @sidebase/nuxt-auth
- Database: SQLite (via server/database)
- Testing: Vitest
- Package Manager: pnpm
- Node.js: versie 22.2 of hoger
- pnpm: versie 10.11.0 of hoger
-
Clone de repository
git clone https://github.com/fietsersbond-deventer/issues-kaart.git cd issues-kaart -
Installeer dependencies
pnpm install
-
Configureer environment variabelen Maak een
.envbestand aan in de root van het project en vul de vereiste waarden in op basis van het.env.examplebestand. -
Database migraties uitvoeren
pnpm run migrate
Start de development server:
pnpm run devDe applicatie is nu beschikbaar op http://localhost:3000
# Linting
pnpm run lint
# Type checking
pnpm run typecheck
# Tests uitvoeren
pnpm run test
# Tests met coverage
pnpm run test:coverage
# Tests met UI
pnpm run test:ui# Build de applicatie
pnpm run build
# Start de productie server
pnpm run startHet project bevat een deploy.sh script voor geautomatiseerde deployment naar een remote server via rsync en PM2.
Gebruik:
DEPLOYMENT_TARGET=user@host:/path/to/deploy ./deploy.shHet script:
- Bouwt de applicatie (
npm run build) - Synchroniseert
package.jsonnaar de remote server - Synchroniseert de
.outputdirectory (server, public, nitro.json) - Herstart de applicatie via PM2 op de remote server
Vereisten voor deployment:
- SSH toegang tot de remote server
- PM2 geïnstalleerd op de remote server
- De
DEPLOYMENT_TARGETenvironment variabele gezet - Een
ecosystem.config.cjsbestand op de remote server (zieecosystem.config.example.cjsvoor een voorbeeld)
PM2 Configuratie:
Kopieer ecosystem.config.example.cjs naar ecosystem.config.cjs en pas de environment variabelen aan:
cp ecosystem.config.example.cjs ecosystem.config.cjs
# Bewerk ecosystem.config.cjs met je eigen waardenStart de applicatie met PM2:
pm2 start ecosystem.config.cjs
pm2 savefietsersbond/
├── app/
│ ├── components/ # Vue componenten
│ │ ├── admin/ # Admin-specifieke componenten
│ │ ├── map/ # Kaart componenten
│ │ └── layout/ # Layout componenten
│ ├── composables/ # Herbruikbare composables
│ ├── pages/ # Nuxt pagina's (auto-routing)
│ ├── types/ # TypeScript type definities
│ └── utils/ # Utility functies
├── server/
│ ├── api/ # API endpoints
│ ├── database/ # Database schema en migraties
│ ├── middleware/ # Server middleware
│ └── utils/ # Server utilities
├── middleware/ # Route middleware
├── public/ # Statische bestanden
└── tests/ # Test bestanden
- Ga naar de kaart via de homepage
- Klik op bestaande markers om details te zien
- Login om nieuwe onderwerpen toe te voegen of te bewerken
- Login met admin-rechten
- Ga naar
/adminvoor het dashboard - Beheer onderwerpen, categorieën en gebruikers
De applicatie gebruikt lokale authenticatie met:
- Gebruikersnaam/wachtwoord login
- JWT tokens met refresh tokens
- Rolgebaseerde toegangscontrole (admin/gebruiker)
- Wachtwoord reset functionaliteit
Tests zijn geschreven met Vitest:
# Alle tests
pnpm run test
# Specifieke test file
pnpm run test tests/extractImageUrl.test.ts
# Watch mode
pnpm run test -- --watchZie .github/workflows/copilot-instructions.md voor gedetailleerde coding richtlijnen en best practices.
Belangrijke punten:
- TypeScript voor alle code
- Nuxt 4 auto-imports (geen imports voor Vue/Nuxt composables)
- Vuetify voor UI componenten
- Nederlandse teksten in de gebruikersinterface
- ESLint configuratie volgen
- Fork het project
- Maak een feature branch (
git checkout -b feature/AmazingFeature) - Commit je wijzigingen (
git commit -m 'Add some AmazingFeature') - Push naar de branch (
git push origin feature/AmazingFeature) - Open een Pull Request
Dit project is gelicenseerd onder de MIT License - zie het LICENSE bestand voor details.
Copyright (c) 2025 Fietsersbond Deventer
Fietsersbond Deventer - GitHub
Project Link: https://github.com/fietsersbond-deventer/issues-kaart