{ "name": "fredy", "version": "15.0.1", "description": "[F]ind [R]eal [E]states [d]amn eas[y].", "scripts": { "prepare": "husky", "start:backend": "x-var NODE_ENV=production node index.js", "start:backend:dev": "nodemon --watch index.js --watch lib", "start:frontend": "vite -m production", "start:frontend:dev": "vite", "build:frontend": "vite build", "format": "prettier --write \"**/*.js\"", "format:check": "prettier --check \"**/*.js\"", "test": "node --import ./test/esmock-loader.mjs ./node_modules/mocha/bin/mocha.js --timeout 60000 test/**/*.test.js", "testGH": "node --import ./test/esmock-loader.mjs ./node_modules/mocha/bin/mocha.js --timeout 60000 --exclude test/provider/immonet.test.js --exclude test/provider/immowelt.test.js test/**/*.test.js", "lint": "eslint .", "lint:fix": "yarn lint --fix", "migratedb": "node lib/services/storage/migrations/migrate.js", "migratedb:overwrite": "x-var MIGRATION_ALLOW_CHECKSUM_UPDATE=true node lib/services/storage/migrations/migrate.js" }, "type": "module", "lint-staged": { "*.{js,jsx}": [ "yarn lint", "yarn format" ] }, "main": "index.js", "author": "Christian Kellner", "keywords": [ "flat", "flatfinder", "fredy", "real estates", "germany", "apartment", "house", "rent", "immoscout", "scraper", "immonet", "immowelt", "immobilienscout24" ], "bugs": { "url": "https://github.com/orangecoding/fredy/issues" }, "license": "MIT", "engines": { "node": ">=22.0.0", "npm": ">=7.0.0" }, "browserslist": [ "> 0.5%", "not dead", "not ie 6-11", "Firefox ESR" ], "dependencies": { "@douyinfe/semi-icons": "^2.89.0", "@douyinfe/semi-ui": "2.89.0", "@sendgrid/mail": "8.1.6", "@visactor/react-vchart": "^2.0.10", "@visactor/vchart": "^2.0.10", "@visactor/vchart-semi-theme": "^1.12.2", "@vitejs/plugin-react": "5.1.2", "better-sqlite3": "^12.5.0", "body-parser": "2.2.1", "cheerio": "^1.1.2", "cookie-session": "2.1.1", "handlebars": "4.7.8", "lodash": "4.17.21", "nanoid": "5.1.6", "node-cron": "^4.2.1", "node-fetch": "3.3.2", "node-mailjet": "6.0.11", "p-throttle": "^8.1.0", "package-up": "^5.0.0", "puppeteer": "^24.32.1", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-stealth": "^2.11.2", "query-string": "9.3.1", "react": "18.3.1", "react-dom": "18.3.1", "react-router": "7.10.1", "react-router-dom": "7.10.1", "restana": "5.1.0", "semver": "^7.7.3", "serve-static": "2.2.0", "slack": "11.0.2", "vite": "7.2.7", "x-var": "^3.0.1", "zustand": "^5.0.9" }, "devDependencies": { "@babel/core": "7.28.5", "@babel/eslint-parser": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/preset-react": "7.28.5", "chai": "6.2.1", "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-react": "7.37.5", "esmock": "2.7.3", "history": "5.3.0", "husky": "9.1.7", "less": "4.4.2", "lint-staged": "16.2.7", "mocha": "11.7.5", "nodemon": "^3.1.11", "prettier": "3.7.4" } }