Files
tilbudgivern/README.md
T
alex 5f101c61cf feat: Initialize Tilbudgivern project with backend and frontend setup
- Added package.json for project dependencies and scripts
- Created setup_mariadb.sql for database setup and user creation
- Documented project development plan in taskfile.txt
- Implemented test_setup.sh for system requirements and project structure checks
- Configured systemd service files for backend and frontend applications
- Added ubu-deployment-commands.sh for deployment instructions on Ubu server
2025-09-12 00:39:06 +02:00

194 lines
4.9 KiB
Markdown

# Tilbudgivern - AI-baseret Tilbudsberegner
En AI-drevet tilbudsberegner for tømrerfaget, der hjælper med at generere detaljerede og professionelle tilbud baseret på projektbeskrivelser.
## 🚀 Funktioner
- **AI-genererede tilbud**: Bruger OpenAI GPT-4 til at generere detaljerede tilbud
- **Interaktiv feedback**: Mulighed for at justere tilbud baseret på feedback
- **Prisdatabase**: Indbygget database med erfaringspriser for tømrerarbejde
- **Responsivt design**: Fungerer på desktop og mobil
- **Audit trail**: Gemmer alle tilbud og feedback for analyse
## 🛠 Teknologi Stack
- **Frontend**: React med Material-UI
- **Backend**: Node.js med Express
- **Database**: PostgreSQL
- **AI**: OpenAI GPT-4 API
- **Containerization**: Docker
## 📋 Forudsætninger
- Node.js 18+
- Docker og Docker Compose
- OpenAI API nøgle
## 🏃‍♂️ Quick Start
### 1. Klon projektet
\`\`\`bash
cd /home/alex/git/tilbudgivern
\`\`\`
### 2. Installer afhængigheder
\`\`\`bash
# Root projekt
npm install
# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm install
cd ..
\`\`\`
### 3. Start database
\`\`\`bash
docker-compose up -d
\`\`\`
### 4. Konfigurer environment
Rediger \`backend/.env\` og tilføj din OpenAI API nøgle:
\`\`\`
OPENAI_API_KEY=sk-your-actual-openai-api-key-here
\`\`\`
### 5. Start applikationen
\`\`\`bash
npm run dev
\`\`\`
Dette starter både backend (port 3001) og frontend (port 3000).
## 🧪 Test Applikationen
### Uden OpenAI API nøgle (lokal test):
1. Åbn browser på http://localhost:3000
2. Udfyld projektbeskrivelse, f.eks.: "Lægning af 25 m² klikgulv i stue og gang"
3. Vælg projekttype og areal
4. Klik "Generer tilbud"
5. Du vil få en fejl om OpenAI API nøgle - dette er forventet
### Med gyldig OpenAI API nøgle:
1. Tilføj din rigtige OpenAI API nøgle i `backend/.env`:
```
OPENAI_API_KEY=sk-din-rigtige-api-noegle-her
```
2. Genstart serveren med `npm run dev`
3. Test tilbudsgenerering med rigtige AI-svar
4. Test feedback funktionen ved at justere tilbuddet
### Test backend API direkte:
```bash
# Health check
curl http://localhost:3001/health
# Se prisdata for gulv
curl http://localhost:3001/api/quotes/prices/gulv
# Kør automatiske tests
cd backend && npm test
```
## ✅ Status
Applikationen er **fuldt funktionel** og klar til brug:
- ✅ Backend server kører på port 3001
- ✅ Frontend React app kører på port 3000
- ✅ PostgreSQL database er forbundet og initialiseret
- ✅ Prisdatabase er populeret med tømrer-erfaringspriser
- ✅ API endpoints virker korrekt
- ✅ Frontend kommunikerer med backend
- ✅ Rate limiting og sikkerhed implementeret
- ✅ Error handling og logging funktionerer
- ✅ Database audit trail gemmer alle tilbud og feedback
- 🔑 **Kræver kun gyldig OpenAI API nøgle for AI-funktionalitet**
### Test Gennemført:
- Database initialisering ✅
- API endpoints ✅
- Frontend-backend kommunikation ✅
- Formularer og validering ✅
- Error handling ✅
- Logging ✅
- Rate limiting ✅
## 📁 Projektstruktur
\`\`\`
tilbudgivern/
├── backend/ # Node.js backend
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── services/ # Business logic
│ │ ├── middleware/ # Express middleware
│ │ └── utils/ # Utilities
│ └── package.json
├── frontend/ # React frontend
│ ├── src/
│ │ ├── App.js # Main app component
│ │ └── index.css # Styling
│ └── package.json
├── infra/ # Infrastructure kode (fremtidig Azure deployment)
├── docker-compose.yml # Database setup
└── package.json # Root projekt
\`\`\`
## 🔧 API Endpoints
- \`POST /api/quotes/generate\` - Generer nyt tilbud
- \`POST /api/quotes/feedback\` - Submit feedback og få justeret tilbud
- \`GET /api/quotes/:id\` - Hent specifikt tilbud
- \`GET /api/quotes/prices/:category\` - Hent prisdata
- \`GET /health\` - Health check
## 🗄 Database Schema
### Prices Table
Indeholder erfaringspriser for forskellige typer tømrerarbejde.
### Quotes Table
Gemmer alle genererede tilbud med metadata.
### Quote Feedback Table
Gemmer feedback og justerede tilbud.
## 🔒 Sikkerhed
- Rate limiting på API endpoints
- Input validering med Joi
- Helmet.js sikkerhedsheaders
- CORS konfiguration
- Environment variabel protection
## 🚀 Deployment til Azure
Infrastructure koden til Azure deployment findes i \`infra/\` mappen og vil blive udviklet i næste fase.
Planlagte Azure services:
- Azure App Service (frontend + backend)
- Azure Database for PostgreSQL
- Azure OpenAI Service
- Azure Application Insights
## 🤝 Bidrag
1. Fork projektet
2. Opret feature branch
3. Commit ændringer
4. Push til branch
5. Opret Pull Request
## 📄 Licens
MIT License - se LICENSE fil for detaljer.
## 📞 Support
Ved spørgsmål eller problemer, opret et issue i projektets GitHub repository.