{ "name": "tilbudgivern-unified", "version": "1.0.0", "description": "Unified Tilbudgivern application with frontend and backend", "main": "backend/unified-server.js", "engines": { "node": ">=18.0.0", "npm": ">=9.0.0" }, "scripts": { "cleanup-ports": "bash scripts/cleanup-ports.sh", "lint": "npm run lint:frontend && npm run lint:backend && npm run api:inventory", "lint:frontend": "cd frontend && npm run lint", "lint:backend": "cd backend && npm run lint", "api:inventory": "node scripts/api-inventory.js", "api:inventory:full": "node scripts/api-inventory.js --full", "api:inventory:check": "node scripts/api-inventory.js --check", "start": "npm run cleanup-ports && node backend/unified-server.js", "dev": "npm run cleanup-ports && nodemon backend/unified-server.js", "test-smart-packages": "node test-smart-packages-api.js", "build": "cd frontend && npm run build && cd ..", "test": "cd backend && npm test -- --passWithNoTests", "test-minimal": "cd backend && npm test -- --runInBand --passWithNoTests", "test-visual-ai": "npm run test:pw:local", "build-and-test": "npm run build && pm2 restart tilbudgivern-unified && sleep 3 && npm run test", "quick-test": "npm run test-minimal", "visual-qa": "npm run test-visual-ai", "test:pw": "cd tests && PLAYWRIGHT_BASE_URL=https://tilbudsgiveren.alw.dk ./node_modules/.bin/playwright test", "test:pw:ui": "cd tests && PLAYWRIGHT_BASE_URL=https://tilbudsgiveren.alw.dk ./node_modules/.bin/playwright test --ui", "test:pw:headed": "cd tests && PLAYWRIGHT_BASE_URL=https://tilbudsgiveren.alw.dk ./node_modules/.bin/playwright test --headed", "test:pw:report": "cd tests && ./node_modules/.bin/playwright show-report", "test:pw:debug": "cd tests && PLAYWRIGHT_BASE_URL=https://tilbudsgiveren.alw.dk ./node_modules/.bin/playwright test --debug", "test:pw:local": "cd tests && PLAYWRIGHT_BASE_URL=http://localhost:4032 ./node_modules/.bin/playwright test", "test:selenium": "SELENIUM_BASE_URL=https://tilbudsgiveren.alw.dk mocha tests/selenium-ui.test.js --timeout 60000", "test:selenium:local": "SELENIUM_BASE_URL=http://localhost:4032 mocha tests/selenium-ui.test.js --timeout 60000", "test:ui": "npm run test:pw", "test:ui:all": "npm run test:pw && npm run test:selenium", "carpenter:openai:quotes": "node carpenter-agent-openai.js --generate-quotes=5 --save", "carpenter:openai:ui": "cd tests && PLAYWRIGHT_BASE_URL=http://localhost:4032 ./node_modules/.bin/playwright test carpenter-agent-openai.spec.js", "carpenter:openai:ui:report": "cd tests && ./node_modules/.bin/playwright show-report", "repo-status:dry": "node scripts/send-daily-repo-status.js --dry-run", "repo-status:send": "node scripts/send-daily-repo-status.js --send" }, "dependencies": { "axios": "^1.12.2", "bcrypt": "^5.1.1", "compression": "^1.8.1", "cors": "^2.8.5", "csv-parser": "^3.2.0", "dotenv": "^16.6.1", "express": "^4.18.2", "graphql": "^16.11.0", "graphql-request": "^7.3.1", "html-pdf-node": "^1.0.8", "joi": "^17.11.0", "jsonwebtoken": "^9.0.2", "multer": "^1.4.5-lts.1", "mysql2": "^3.6.5", "nodemon": "^3.0.2", "openai": "^4.104.0", "pdf-parse": "^1.1.1", "puppeteer": "^24.21.0", "socket.io": "^4.8.1", "sqlite3": "^5.1.7", "tesseract.js": "^5.0.4", "winston": "^3.11.0" }, "keywords": [ "tilbudgivern", "ai", "quotes", "construction" ], "author": "Alex", "license": "MIT", "devDependencies": { "@playwright/test": "^1.56.1", "chromedriver": "^137.0.0", "mocha": "^11.7.5", "react-scripts": "^5.0.1", "selenium-webdriver": "^4.33.0" } }