{ "name": "fredy", "version": "22.9.1", "description": "Fredy - [F]ind [R]eal [E]state [D]amn Eas[y] - Fredy keeps searching for new apartments, houses, and flats in Germany on platforms like ImmoScout24, Immowelt, Immonet, eBay Kleinanzeigen, and WG-Gesucht and instantly delivers the results to you via Slack, Telegram, Email, Discord or ntfy, so you can focus on the more important things in life ;)", "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": "x-var TEST_MODE=live vitest run", "test:offline": "x-var TEST_MODE=offline vitest run", "test:download-fixtures": "node tools/testFixtures/downloadFixtures.js", "lint": "eslint .", "mcp:stdio": "node lib/mcp/stdio.js", "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", "copyright": "node ./copyright.js", "release": "node ./tools/release/release.js" }, "type": "module", "lint-staged": { "*.{js,jsx}": [ "yarn lint", "yarn format", "yarn copyright" ] }, "main": "index.js", "author": "Christian Kellner", "keywords": [ "flat", "flatfinder", "fredy", "real estates", "germany", "apartment", "house", "rent", "immoscout", "kleinanzeigen", "scraper", "immonet", "immowelt", "immobilienscout24" ], "bugs": { "url": "https://github.com/orangecoding/fredy/issues" }, "license": "Apache-2.0", "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.100.0", "@douyinfe/semi-ui": "2.100.0", "@douyinfe/semi-ui-19": "^2.100.0", "@fastify/cookie": "^11.0.2", "@fastify/helmet": "^13.0.2", "@fastify/session": "^11.1.1", "@fastify/static": "^9.1.3", "@mapbox/mapbox-gl-draw": "^1.5.1", "@modelcontextprotocol/sdk": "^1.29.0", "@sendgrid/mail": "8.1.6", "@turf/boolean-point-in-polygon": "^7.3.5", "@vitejs/plugin-react": "6.0.2", "adm-zip": "^0.5.17", "better-sqlite3": "^12.10.1", "chart.js": "^4.5.1", "cheerio": "^1.2.0", "cloakbrowser": "^0.3.31", "fastify": "^5.8.5", "handlebars": "4.7.9", "maplibre-gl": "^5.24.0", "nanoid": "5.1.11", "node-cron": "^4.2.1", "node-fetch": "3.3.2", "node-mailjet": "6.0.11", "nodemailer": "^8.0.11", "p-throttle": "^8.1.0", "package-up": "^5.0.0", "puppeteer-core": "^25.1.0", "query-string": "9.4.0", "react": "19.2.7", "react-chartjs-2": "^5.3.1", "react-dom": "19.2.7", "react-range-slider-input": "^3.3.5", "react-router": "7.17.0", "react-router-dom": "7.17.0", "resend": "^6.12.4", "semver": "^7.8.4", "slack": "11.0.2", "vite": "8.0.16", "x-var": "^3.0.1", "zustand": "^5.0.14" }, "devDependencies": { "@babel/core": "7.29.7", "@babel/eslint-parser": "7.29.7", "@babel/preset-env": "7.29.7", "@babel/preset-react": "7.29.7", "@eslint/js": "^10.0.1", "chalk": "^5.6.2", "eslint": "10.5.0", "eslint-config-prettier": "10.1.8", "eslint-plugin-react": "7.37.5", "globals": "^17.6.0", "history": "5.3.0", "husky": "9.1.7", "less": "4.6.6", "lint-staged": "17.0.7", "nodemon": "^3.1.14", "prettier": "3.8.4", "vitest": "^4.1.8" } }