{ "name": "tududi", "version": "v1.1.0-dev.17", "description": "Self-hosted task management with hierarchical organization, multi-language support, and Telegram integration.", "directories": { "test": "test" }, "scripts": { "start": "bash scripts/start-all-dev.sh", "dev": "npm run frontend:dev", "build": "npm run frontend:build", "pre-push": "lint-staged", "pre-release": "npm run lint:fix && npm run format:fix && npm run test && npm run test:ui", "test": "npm run backend:test", "test:backend": "npm run backend:test", "test:ui": "bash e2e/bin/run-e2e.sh && echo \"Success!\"", "test:ui:mode": "cross-env E2E_MODE=ui bash e2e/bin/run-e2e.sh", "test:ui:headed": "cross-env E2E_MODE=headed E2E_SLOWMO=500 bash e2e/bin/run-e2e.sh", "test:watch": "npm run frontend:test:watch", "test:coverage": "npm run frontend:test:coverage && npm run backend:test:coverage", "frontend:dev": "webpack serve --config webpack.config.js --hot", "frontend:start": "tsc --noEmit && webpack serve --config webpack.config.js", "frontend:build": "npm run clean && tsc --noEmit && webpack --config webpack.config.js", "frontend:test": "jest", "frontend:test:watch": "jest --watch", "frontend:test:coverage": "jest --coverage", "frontend:lint": "eslint 'frontend/**/*.{js,jsx,ts,tsx}'", "frontend:lint:fix": "eslint --fix 'frontend/**/*.{js,jsx,ts,tsx}'", "frontend:format": "prettier -c 'frontend/**/*.{js,jsx,ts,tsx}'", "frontend:format:fix": "prettier --write 'frontend/**/*.{js,jsx,ts,tsx}'", "backend:start": "cd backend && ./cmd/start-dev.sh", "backend:dev": "cd backend && nodemon app.js", "backend:test": "cd backend && cross-env NODE_ENV=test jest", "backend:test:watch": "cd backend && cross-env NODE_ENV=test jest --watch", "backend:test:coverage": "cd backend && cross-env NODE_ENV=test jest --coverage", "backend:test:unit": "cd backend && cross-env NODE_ENV=test jest tests/unit", "backend:test:integration": "cd backend && cross-env NODE_ENV=test jest tests/integration", "backend:lint": "cd backend && eslint .", "backend:lint:fix": "cd backend && eslint . --fix", "backend:format": "cd backend && prettier -c .", "backend:format:fix": "cd backend && prettier --write .", "db:init": "cd backend && node scripts/db-init.js", "db:sync": "cd backend && node scripts/db-sync.js", "db:migrate": "cd backend && node scripts/db-migrate.js", "db:reset": "cd backend && node scripts/db-reset.js", "db:status": "cd backend && node scripts/db-status.js", "db:seed": "cd backend && node scripts/seed-dev-data.js", "db:reset-and-seed": "cd backend && NODE_ENV=development node scripts/reset-and-seed.js", "user:create": "cd backend && node scripts/user-create.js", "migration:create": "cd backend && node scripts/migration-create.js", "migration:run": "cd backend && npx sequelize-cli db:migrate", "migration:undo": "cd backend && npx sequelize-cli db:migrate:undo", "migration:undo:all": "cd backend && npx sequelize-cli db:migrate:undo:all", "migration:status": "cd backend && npx sequelize-cli db:migrate:status", "clean": "rimraf dist", "lint": "npm run frontend:lint && npm run backend:lint", "lint:fix": "npm run frontend:lint:fix && npm run backend:lint:fix", "format": "npm run frontend:format && npm run backend:format", "format:fix": "npm run frontend:format:fix && npm run backend:format:fix", "docker:test-build": "bash scripts/test-docker-build.sh", "kill:all": "lsof -ti:8080,3002 | xargs kill -9 2>/dev/null || true", "mcp:start": "cd backend && node modules/mcp/server.js", "mcp:dev": "cd backend && nodemon modules/mcp/server.js" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@babel/core": "^7.25.7", "@babel/preset-env": "^7.25.7", "@babel/preset-react": "^7.25.7", "@babel/preset-typescript": "^7.25.7", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@faker-js/faker": "^10.1.0", "@heroicons/react": "^2.1.5", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", "@swc/core": "^1.13.3", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", "@types/jest": "^29.0.0", "@types/node": "^20.0.0", "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@types/react-router-dom": "^5.3.3", "@yaireo/tagify": "^4.31.3", "autoprefixer": "^10.4.20", "babel-jest": "^29.0.0", "babel-loader": "^9.2.1", "copy-webpack-plugin": "^14.0.0", "cross-env": "~7.0.3", "css-loader": "^7.1.2", "eslint": "^8.0.0", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-prettier": "^5.5.1", "eslint-plugin-react": "^7.37.5", "globals": "^15.11.0", "highlight.js": "^11.11.1", "html-webpack-plugin": "^5.6.3", "i18next": "^24.2.3", "i18next-browser-languagedetector": "^8.0.4", "i18next-http-backend": "^3.0.5", "identity-obj-proxy": "^3.0.0", "jest": "^29.0.0", "jest-environment-jsdom": "^30.3.0", "lint-staged": "^16.2.7", "nodemon": "~3.0.1", "postcss": "^8.4.47", "postcss-loader": "^8.1.1", "prettier": "^3.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", "react-i18next": "^15.4.1", "react-markdown": "^10.1.0", "react-refresh": "^0.14.2", "react-router-dom": "^6.26.2", "react-tagify": "^1.0.7", "recharts": "^2.15.4", "rehype-highlight": "^7.0.2", "remark-gfm": "^4.0.1", "rimraf": "^6.0.1", "style-loader": "^4.0.0", "supertest": "~7.1.1", "supertest-session": "^5.0.1", "swc-loader": "^0.2.6", "swr": "^2.2.5", "tailwindcss": "^3.4.13", "ts-jest": "^29.0.0", "ts-loader": "^9.5.1", "typescript": "^5.6.2", "typescript-eslint": "^8.36.0", "webpack": "^5.95.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.1.0", "zustand": "^5.0.3" }, "dependencies": { "@dr.pogodin/csurf": "^1.16.9", "@modelcontextprotocol/sdk": "^1.0.0", "@playwright/test": "^1.57.0", "axios": "^1.15.0", "bcrypt": "~6.0.0", "compression": "~1.8.0", "compromise": "^14.14.4", "connect-session-sequelize": "~7.1.7", "cors": "~2.8.5", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "dotenv": "~16.5.0", "express": "^4.21.2", "express-rate-limit": "^8.2.1", "express-session": "~1.18.1", "helmet": "~8.1.0", "ical.js": "^2.1.0", "js-yaml": "~4.1.0", "linguaisync": "^0.1.2", "lodash": "~4.18.1", "lusca": "^1.7.0", "moment-timezone": "~0.6.0", "morgan": "~1.10.0", "multer": "~2.1.0", "nanoid": "^3.3.7", "node-cron": "~4.1.0", "nodemailer": "^8.0.5", "openid-client": "^5.7.1", "raw-body": "^3.0.2", "sequelize": "~6.37.7", "sequelize-cli": "~6.6.2", "slugify": "^1.6.6", "sqlite3": "^6.0.1", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", "use-debounce": "^10.0.6", "uuid": "~11.1.0", "web-push": "^3.6.7", "xml2js": "^0.6.0" }, "overrides": { "tar": "^7.5.8" }, "lint-staged": { "frontend/**/*.{js,jsx,ts,tsx}": [ "eslint --fix", "prettier --write" ], "backend/**/*.{js,ts}": [ "eslint --fix", "prettier --write" ] } }