{ "name": "habittrove", "version": "0.2.17", "private": true, "scripts": { "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint", "test": "bun test", "typecheck": "tsc --noEmit", "docker-build": "docker build -t habittrove .", "docker-run": "docker run -p 3000:3000 -v $(pwd)/data:/app/data habittrove", "prepare": "husky", "setup:dev": "if ! command -v bun > /dev/null; then echo 'Installing bun...'; curl -fsSL https://bun.sh/install | bash; fi && npm install --force && npm run typecheck && npm run lint" }, "dependencies": { "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", "@next/font": "^14.2.15", "@radix-ui/react-alert-dialog": "^1.1.14", "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-context-menu": "^2.2.4", "@radix-ui/react-dialog": "^1.1.4", "@radix-ui/react-dropdown-menu": "^2.1.4", "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-popover": "^1.1.4", "@radix-ui/react-progress": "^1.1.1", "@radix-ui/react-scroll-area": "^1.2.4", "@radix-ui/react-select": "^2.1.4", "@radix-ui/react-separator": "^1.1.3", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-switch": "^1.1.2", "@radix-ui/react-toast": "^1.2.4", "@radix-ui/react-tooltip": "^1.1.6", "@types/canvas-confetti": "^1.9.0", "@uiw/react-heat-map": "^2.3.2", "archiver": "^7.0.1", "canvas-confetti": "^1.9.3", "chrono-node": "^2.7.7", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^3.6.0", "jotai": "^2.8.0", "js-confetti": "^0.12.0", "linkify": "^0.2.1", "linkify-react": "^4.2.0", "lucide-react": "^0.469.0", "luxon": "^3.5.0", "next": "15.2.3", "next-auth": "^5.0.0-beta.25", "next-intl": "^4.1.0", "next-themes": "^0.4.4", "node-cron": "^3.0.3", "react": "^19.0.0", "react-confetti": "^6.2.2", "react-day-picker": "^8.10.1", "react-dom": "^19.0.0", "react-markdown": "^9.0.1", "recharts": "^2.15.0", "rrule": "^2.8.1", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7", "uuid": "^11.0.5", "web-push": "^3.6.7", "zod": "^3.24.1" }, "devDependencies": { "@eslint/eslintrc": "^3", "@tailwindcss/typography": "^0.5.15", "@types/archiver": "^6.0.3", "@types/bun": "^1.1.14", "@types/lodash": "^4.17.15", "@types/luxon": "^3.4.2", "@types/node": "^20.17.10", "@types/node-cron": "^3.0.11", "@types/react": "^19", "@types/react-dom": "^19", "@types/web-push": "^3.6.4", "eslint": "^9", "eslint-config-next": "15.1.3", "eslint-plugin-unused-imports": "^4.1.4", "husky": "^9.1.7", "postcss": "^8", "raw-loader": "^4.0.2", "tailwindcss": "^3.4.1", "typescript": "^5" } }