{ "name": "@gamilit/frontend", "version": "1.0.0", "description": "GAMILIT Frontend - Educational Gamification Platform", "type": "module", "scripts": { "dev": "vite", "dev:local": "vite --mode local", "validate-env": "node scripts/validate-env.cjs", "validate-env:prod": "node scripts/validate-env.cjs --mode=production", "build": "npm run validate-env && vite build", "build:local": "npm run validate-env && vite build --mode development", "build:prod": "npm run validate-env:prod && vite build --mode production", "build:check": "tsc -p tsconfig.build.json && vite build", "build:strict": "npm run validate-env && tsc -p tsconfig.build.json && vite build", "preview": "vite preview", "preview:prod": "vite preview --mode production", "type-check": "tsc --noEmit", "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", "test:coverage": "vitest run --coverage", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives", "format": "prettier --write \"src/**/*.{ts,tsx,css}\"", "generate:api-types": "node scripts/generate-api-types.cjs", "generate:api-types:watch": "nodemon --watch ../../backend/src --ext ts --exec npm run generate:api-types", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:headed": "playwright test --headed", "test:e2e:debug": "playwright test --debug", "test:e2e:report": "playwright show-report" }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@hookform/resolvers": "^5.2.2", "@tanstack/react-query": "^5.90.7", "@types/dompurify": "^3.0.5", "axios": "^1.12.2", "chart.js": "^4.5.1", "clsx": "^2.1.1", "date-fns": "^2.30.0", "dompurify": "^3.3.0", "firebase": "^12.6.0", "focus-trap-react": "^11.0.4", "framer-motion": "^12.23.24", "lucide-react": "^0.545.0", "react": "^19.2.0", "react-chartjs-2": "^5.3.0", "react-confetti": "^6.4.0", "react-dom": "^19.2.0", "react-hook-form": "^7.65.0", "react-hot-toast": "^2.6.0", "react-router-dom": "^7.9.4", "recharts": "^3.5.0", "socket.io-client": "^4.8.1", "tailwind-merge": "^2.2.0", "zod": "^4.1.12", "zustand": "^5.0.8" }, "devDependencies": { "@axe-core/react": "^4.8.4", "@chromatic-com/storybook": "^4.1.2", "@playwright/test": "^1.56.1", "@storybook/addon-docs": "^10.0.6", "@storybook/addon-essentials": "^7.6.20", "@storybook/addon-interactions": "^7.6.20", "@storybook/addon-links": "^7.6.20", "@storybook/addon-onboarding": "^10.0.6", "@storybook/react": "^7.6.5", "@storybook/react-vite": "^7.6.5", "@tailwindcss/postcss": "^4.1.14", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/node": "^24.7.2", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@typescript-eslint/eslint-plugin": "^6.19.1", "@typescript-eslint/parser": "^6.19.1", "@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react-swc": "^3.5.0", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", "autoprefixer": "^10.4.17", "eslint": "^8.56.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "eslint-plugin-rulesdir": "^0.2.2", "eslint-plugin-storybook": "^0.6.15", "jsdom": "^27.0.1", "lint-staged": "^16.2.7", "openapi-typescript": "^7.10.1", "postcss": "^8.4.35", "prettier": "^3.2.4", "prettier-plugin-tailwindcss": "^0.5.9", "rollup-plugin-visualizer": "^6.0.5", "storybook": "^7.6.20", "tailwindcss": "^4.1.14", "typescript": "^5.9.3", "vite": "^7.1.10", "vitest": "^3.2.4" }, "engines": { "node": ">=18.0.0", "npm": ">=9.0.0" } }