2025-11-26 12:36:27 +00:00
2025-11-26 12:36:27 +00:00
2025-11-26 12:36:27 +00:00
2025-11-26 12:36:27 +00:00
2025-11-26 12:36:27 +00:00
2025-11-26 12:36:27 +00:00
2025-11-24 23:08:04 +00:00

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 3000) og frontend (React development).

Deployment Scripts

For hurtig udvikling er der lavet praktiske deployment scripts i roden:

Fuld Test & Deploy (./test-build-deploy.sh)

Kører komplet test, build og deployment med fejlhåndtering:

./test-build-deploy.sh

Scriptet gør følgende:

  • Tester backend syntax og database forbindelse
  • 🏗️ Bygger frontend med fejltjek
  • 🔄 Genstarter PM2 server
  • 📊 Viser status og eventuelle fejl

Quick Deploy (./quick-deploy.sh)

Hurtig version til små ændringer:

./quick-deploy.sh

Tip: Brug altid disse scripts efter kode-ændringer - de sikrer at alt fungerer korrekt!

🧪 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:

# 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.

Description
No description provided
Readme 375 MiB
Languages
JavaScript 74.9%
Shell 12.7%
CSS 6%
Python 5.2%
HTML 1%
Other 0.2%