GTINFinder is een advanced GTIN (barcode) data enrichment platform die meerdere API bronnen combineert met AI-powered "golden record" creatie.
- Docker and Docker Compose
- Node.js 18+
- Git
- Clone repository
git clone <repository-url>
cd gtin-finder- Configure environment variables
cp .env.example .env
# Edit .env met je waarden- Generate secure keys
# Genereer Directus key (32 characters min)
openssl rand -base64 32
# Genereer Directus secret (32 characters min)
openssl rand -base64 32
# Genereer Airflow Fernet key
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# Genereer Authentik secret key (50 characters min)
openssl rand -base64 50- Start backend services
docker-compose up -d- Setup frontend
cd frontend
npm install
npm run dev- Frontend: http://localhost:3000
- Directus Admin: http://localhost:8055
- Airflow: http://localhost:8080
- Authentik: http://localhost:9000
- Nginx Health: http://localhost/health
- Ga naar http://localhost:8055
- Login met:
- Email:
[email protected] - Password:
admin123
- Email:
- Configureer de collections
- Ga naar http://localhost:8080
- Login met:
- Username:
airflow_user - Password:
airflow_secure_password
- Username:
- Ga naar http://localhost:9000
- Login met:
- Username:
akadmin - Password:
admin123
- Username:
- Configureer OIDC provider voor GTINFinder
| Service | URL | Username | Password |
|---|---|---|---|
| Directus | http://localhost:8055 | [email protected] | admin123 |
| Airflow | http://localhost:8080 | airflow_user | airflow_secure_password |
| Authentik | http://localhost:9000 | akadmin | admin123 |
| PostgreSQL | localhost:5432 | postgres | (from .env) |
Kopieer .env.example naar .env en vul de volgende variabelen in:
POSTGRES_DB=gtin_finder
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_secure_password_hereDIRECTUS_KEY=your_directus_key_here_32_chars_min
DIRECTUS_SECRET=your_directus_secret_here_32_chars_min
DIRECTUS_DB=directus
DIRECTUS_USER=directus_user
DIRECTUS_PASSWORD=directus_secure_passwordAIRFLOW_DB=airflow
AIRFLOW_USER=airflow_user
AIRFLOW_PASSWORD=airflow_secure_password
AIRFLOW_FERNET_KEY=your_fernet_key_here_32_charsAUTHENTIK_SECRET_KEY=your_authentik_secret_key_here_50_chars_min
AUTHENTIK_DB=authentik
AUTHENTIK_USER=authentik_user
AUTHENTIK_PASSWORD=authentik_secure_passwordgtin-finder/
├── docker-compose.yml # Docker services configuration
├── .env.example # Environment variables template
├── database/ # Database initialization scripts
│ └── init.sql # PostgreSQL setup
├── airflow/ # Airflow DAGs and configuration
│ └── dags/ # DAG files
├── nginx/ # Nginx configuration
│ ├── nginx.conf # Main nginx config
│ └── conf.d/ # Site configurations
├── frontend/ # React frontend application
│ ├── src/ # Source code
│ ├── public/ # Static assets
│ └── package.json # Dependencies
├── docs/ # Documentation
│ ├── v1.0-project-plan.md # Technical specifications
│ ├── sprint-planning.md # Sprint planning
│ └── sprint-1/ # Sprint 1 documentation
└── README.md # This file
- Directus: Headless CMS voor data management
- Airflow: Orchestration voor data processing
- PostgreSQL: Primary database
- Authentik: SSO authentication
cd frontend
npm run dev # Development server
npm run build # Production build
npm run preview # Preview production build
npm run lint # ESLint
npm run type-check # TypeScript checking# Connect to PostgreSQL
docker exec -it gtin-postgres psql -U postgres -d gtin_finder
# View Directus data
docker exec -it gtin-postgres psql -U directus_user -d directus
# View Airflow metadata
docker exec -it gtin-postgres psql -U airflow_user -d airflowDAGs worden automatisch geladen vanuit de airflow/dags/ directory:
gtin_validator_dag.py- Valideert GTIN codesexample_dag.py- Test DAG voor setup verificatie
# Test database connection
docker exec gtin-postgres pg_isready -U postgres
# Test Directus API
curl http://localhost:8055/health
# Test Airflow
curl http://localhost:8080/health
# Test Authentik
curl http://localhost:9000cd frontend
npm run test # Unit tests
npm run test:e2e # End-to-end tests (when implemented)- Overall: http://localhost/health
- Directus: http://localhost:8055/health
- Airflow: http://localhost:8080/health
- Authentik: http://auth.localhost/health
# View all logs
docker-compose logs -f
# View specific service logs
docker-compose logs -f directus
docker-compose logs -f airflow
docker-compose logs -f authentik
docker-compose logs -f postgresql- SSO via Authentik (OIDC)
- Role-based access control
- API token authentication
- All services in isolated Docker network
- Nginx reverse proxy with security headers
- HTTPS ready (SSL certificates nodig voor production)
- Encrypted database connections
- Environment variables voor sensitive data
- Regular security updates via Docker images
-
Environment Setup
- Configureer production environment variables
- Zet SSL certificates op
- Configureer backup strategy
-
Database
- PostgreSQL met replication
- Regular backups
- Monitoring en alerting
-
Application
- Docker Swarm of Kubernetes
- Load balancing
- Auto-scaling
-
Monitoring
- Grafana dashboards
- Prometheus metrics
- Log aggregation
- Project Plan - Complete technische specificaties
- Sprint Planning - Gedetailleerde sprint planning
- Sprint 1 - Sprint 1 documentatie en user stories
- Methodology - Gebruikte werkwijze
- Fork de repository
- Maak een feature branch (
git checkout -b feature/amazing-feature) - Commit je changes (
git commit -m 'Add amazing feature') - Push naar de branch (
git push origin feature/amazing-feature) - Open een Pull Request
Dit project is gelicenseerd onder de Apache License 2.0 - zie LICENSE file voor details.
Als poorten al in gebruik zijn:
# Check welke poorten bezet zijn
lsof -i :3000,8055,8080,9000,5432
# Stop conflicterende services of verander poorten in docker-compose.yml# Check database status
docker-compose ps postgresql
# Restart database
docker-compose restart postgresql
# Check logs
docker-compose logs postgresql# Clear node modules
cd frontend
rm -rf node_modules package-lock.json
npm install
# Clear Vite cache
npm run dev -- --force# Check Authentik status
docker-compose logs authentik
# Reset Authentik (data loss!)
docker-compose down -v
docker-compose up -d authentik- Check de documentation voor gedetailleerde informatie
- Open een issue voor bugs
- Contact het development team voor support
GTINFinder - Advanced GTIN Data Enrichment Platform
Built with ❤️ using modern web technologies