CI / quality (push) Waiting to run
Phase 1 cleanup of the personal-site revamp. Backend/architecture untouched; changes are limited to removing unused complexity and restoring feedback. Removals - Toast system: delete react-hot-toast, Toaster, QueryToastBridge, lib/toast, the toggle/easter-egg calls, related i18n keys and the dependency. - Contact protection: remove Turnstile + per-IP rate limiting (lib/contact-guard, lib/contact-protection, admin screen, form widget, app-config wiring, nav entry, test). - Speculative specs: delete orders, products, downloads, project-inquiry. Inline feedback (replaces toast, no new deps) - Add lib/admin-feedback (withFlash/readFlash) and components/admin/admin-flash, rendered centrally by AdminDashboardShell. - Emit success/error messages for media, site-settings, portfolio, smtp, marquee and maintenance actions; pages read them via searchParams. - Contact form shows validation/delivery errors inline; success still redirects to /success. Docs - Fix stale paths in frontend-system-* (components/root -> components/admin, lib/root-navigation -> lib/admin-navigation, drop phantom src/) and remove contact-protection references from docs and CLAUDE.md. - Add docs/PHASE0_DIAGNOSIS.md (diagnosis report). Note: proxy.ts self-fetch kept intentionally; it also drives maintenance mode.
60 lines
1.6 KiB
JSON
60 lines
1.6 KiB
JSON
{
|
|
"name": "moh-sass",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build --webpack",
|
|
"start": "next start",
|
|
"lint": "eslint .",
|
|
"test": "vitest run",
|
|
"prisma:generate": "prisma generate",
|
|
"db:migrate": "prisma migrate deploy",
|
|
"db:migrate:dev": "prisma migrate dev",
|
|
"db:seed": "prisma db seed"
|
|
},
|
|
"prisma": {
|
|
"seed": "node prisma/seed.js"
|
|
},
|
|
"dependencies": {
|
|
"@prisma/adapter-pg": "^7.4.2",
|
|
"@prisma/client": "^7.4.2",
|
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"@types/nodemailer": "^7.0.11",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"framer-motion": "^12.35.0",
|
|
"gsap": "^3.15.0",
|
|
"lucide-react": "^0.577.0",
|
|
"next": "^16.1.6",
|
|
"next-intl": "^4.8.3",
|
|
"next-themes": "^0.4.6",
|
|
"nodemailer": "^8.0.1",
|
|
"pg": "^8.20.0",
|
|
"react": "^19.2.4",
|
|
"react-dom": "^19.2.4",
|
|
"react-hook-form": "^7.71.2",
|
|
"tailwind-merge": "^3.5.0",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^20",
|
|
"@types/pg": "^8.18.0",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"eslint": "^9.39.4",
|
|
"eslint-config-next": "^16.1.6",
|
|
"postcss": "^8",
|
|
"prisma": "^7.4.2",
|
|
"tailwindcss": "^3.4.1",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"typescript": "^5",
|
|
"vitest": "^3.2.4"
|
|
}
|
|
}
|