{ "name": "tududi", "version": "0.3", "description": "Self-hosted task management with hierarchical organization (Areas > Projects > Tasks), multi-language support, and Telegram integration. Built with React/TypeScript frontend and functional programming Express.js backend.", "main": "index.js", "directories": { "test": "test" }, "scripts": { "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", "build": "tsc --noEmit && webpack --config webpack.config.js", "start": "tsc --noEmit && webpack serve --config webpack.config.js", "dev": "webpack serve --config webpack.config.js --hot", "lint": "eslint 'frontend/**/*.{js,jsx,ts,tsx}'" }, "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", "@eslint/js": "^9.13.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", "@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/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^8.11.0", "@typescript-eslint/parser": "^8.11.0", "autoprefixer": "^10.4.20", "babel-jest": "^29.0.0", "babel-loader": "^9.2.1", "css-loader": "^7.1.2", "eslint": "^9.13.0", "eslint-plugin-react": "^7.37.2", "globals": "^15.11.0", "html-webpack-plugin": "^5.6.3", "identity-obj-proxy": "^3.0.0", "jest": "^29.0.0", "jest-environment-jsdom": "^29.0.0", "postcss": "^8.4.47", "postcss-loader": "^8.1.1", "react-refresh": "^0.14.2", "style-loader": "^4.0.0", "tailwindcss": "^3.4.13", "ts-jest": "^29.0.0", "ts-loader": "^9.5.1", "typescript": "^5.6.2", "typescript-eslint": "^8.11.0", "webpack": "^5.95.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.1.0" }, "dependencies": { "@heroicons/react": "^2.1.5", "@yaireo/tagify": "^4.31.3", "date-fns": "^4.1.0", "i18next": "^24.2.3", "i18next-browser-languagedetector": "^8.0.4", "i18next-http-backend": "^3.0.2", "react": "^18.3.1", "react-dom": "^18.3.1", "react-i18next": "^15.4.1", "react-router-dom": "^6.26.2", "react-tagify": "^1.0.7", "swr": "^2.2.5", "tagify": "^0.1.1", "zustand": "^5.0.3" } }