package.json
Rama main · réplica de lectura del repositorio original.
{
"name": "homix-marketing",
"version": "2.0.0",
"description": "Homix Realty listing marketing and resilient Resend delivery service",
"type": "module",
"engines": {
"node": ">=22 <23"
},
"scripts": {
"postinstall": "prisma generate",
"dev": "concurrently -k -n web,client \"npm:dev:web\" \"npm:dev:client\"",
"dev:web": "cross-env APP_ROLE=web tsx watch src/bootstrap.ts",
"dev:worker": "cross-env APP_ROLE=worker tsx watch src/bootstrap.ts",
"dev:client": "vite --config client/vite.config.ts",
"build": "npm run prisma:generate && npm run build:client && npm run build:server",
"build:client": "vite build --config client/vite.config.ts",
"build:server": "tsc -p tsconfig.server.json",
"start": "node dist/server/src/bootstrap.js",
"start:web": "cross-env APP_ROLE=web node dist/server/src/bootstrap.js",
"start:worker": "cross-env APP_ROLE=worker node dist/server/src/bootstrap.js",
"start:migrate": "cross-env APP_ROLE=migrate node dist/server/src/bootstrap.js",
"format": "prettier --write .",
"format:check": "prettier --check .",
"lint": "eslint . --max-warnings=0",
"typecheck": "npm run prisma:generate && tsc -p tsconfig.server.json --noEmit && tsc -p client/tsconfig.json --noEmit",
"test": "npm run test:unit && npm run test:api",
"test:unit": "vitest run tests/unit",
"test:api": "vitest run tests/api",
"test:integration": "bash scripts/run-integration-tests.sh",
"test:e2e": "bash scripts/run-e2e-tests.sh",
"test:coverage": "npm run test:coverage:unit && npm run test:coverage:services",
"test:coverage:unit": "vitest run tests/unit --coverage",
"test:coverage:services": "bash scripts/run-integration-tests.sh --coverage --config vitest.integration.config.ts",
"prisma:generate": "prisma generate",
"prisma:migrate:dev": "prisma migrate dev",
"prisma:migrate:deploy": "prisma migrate deploy",
"db:seed": "tsx prisma/seed.ts",
"db:up": "docker compose up -d postgres",
"db:down": "docker compose down",
"migrate:v1": "tsx scripts/migrate-sqlite-v1.ts",
"docker:build": "docker build -t homix-marketing:local .",
"infra:lint": "az bicep build --file infra/bootstrap.bicep --stdout > /dev/null && az bicep build --file infra/main.bicep --stdout > /dev/null",
"openapi:lint": "redocly lint openapi.yaml --config .redocly.yaml",
"licenses:check": "node scripts/check-licenses.mjs",
"source:archive:check": "bash scripts/build-source-archive.sh --check",
"source:archive": "bash scripts/build-source-archive.sh",
"check": "npm run format:check && npm run lint && npm run typecheck && npm test && npm run build"
},
"dependencies": {
"@azure/identity": "^4.10.2",
"@azure/monitor-opentelemetry": "^1.14.0",
"@azure/storage-blob": "^12.28.0",
"@hookform/resolvers": "^5.2.1",
"@prisma/client": "^6.12.0",
"@react-email/components": "^0.5.7",
"@react-email/render": "^1.4.0",
"@tanstack/react-query": "^5.87.1",
"csv-parse": "^7.0.2",
"dotenv": "^17.2.2",
"express": "^5.2.1",
"express-rate-limit": "^8.1.0",
"helmet": "^8.1.0",
"lucide-react": "^0.544.0",
"multer": "^2.2.0",
"pg": "^8.16.3",
"pino": "^9.9.4",
"pino-http": "^10.5.0",
"prisma": "^6.12.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-hook-form": "^7.62.0",
"react-router-dom": "^7.9.1",
"recharts": "^3.2.1",
"resend": "^6.21.0",
"sanitize-html": "^2.17.0",
"sharp": "^0.35.3",
"zod": "^4.1.8"
},
"devDependencies": {
"@eslint/js": "^9.35.0",
"@playwright/test": "^1.55.0",
"@redocly/cli": "^2.1.0",
"@testing-library/react": "^16.3.0",
"@types/better-sqlite3": "^7.6.13",
"@types/express": "^5.0.3",
"@types/multer": "^2.0.0",
"@types/node": "^22.18.3",
"@types/pg": "^8.15.5",
"@types/react": "^19.1.13",
"@types/react-dom": "^19.1.9",
"@types/sanitize-html": "^2.16.0",
"@types/supertest": "^6.0.3",
"@vitejs/plugin-react": "^5.0.2",
"@vitest/coverage-v8": "^3.2.4",
"better-sqlite3": "^12.4.1",
"concurrently": "^9.2.1",
"cross-env": "^10.0.0",
"esbuild": "^0.28.2",
"eslint": "^9.35.0",
"eslint-config-prettier": "^10.1.8",
"prettier": "^3.6.2",
"supertest": "^7.1.4",
"tsx": "^4.20.5",
"typescript": "^5.9.2",
"typescript-eslint": "^8.43.0",
"vite": "^7.1.5",
"vitest": "^3.2.4"
}
}