teqo-backup/package.json
Francisco Ignácio Fontoura Solla 4f0f997c32 Isolate local/dev and tests from the production database
Local dev and the test suite previously defaulted to the live production
Neon database, and running the tests mutated prod data. Add guardrails plus
a proper local Postgres + migrations workflow so production can't be hit by
mistake:

- docker-compose: local Postgres 17 (matches prod) + auto-created teqo_test
- dev guard refuses a non-local DATABASE_URL; tests refuse non-_test databases
- .env.test isolates the suite; vitest/playwright load it and fail closed
- Payload migrations set up (push disabled); build runs `payload migrate`,
  so deploys apply pending migrations to prod automatically
- baseline `initial` migration + idempotent consent.text varchar->jsonb fix
- `pnpm db:pull` copies prod content locally, excluding supporter PII
- docs (README, AGENTS.md) + agent skills for the local-db/migration workflow
2026-07-15 13:52:30 -03:00

111 lines
4.1 KiB
JSON

{
"name": "teqo",
"version": "1.0.0",
"description": "White-label civic engagement platform for Brazilian politicians, launched with deputado Jorge Solla.",
"keywords": [
"politics",
"brazil",
"civic-engagement",
"white-label",
"payload-cms"
],
"homepage": "https://codeberg.org/fsolla/teqo",
"repository": {
"type": "git",
"url": "https://codeberg.org/fsolla/teqo.git"
},
"bugs": {
"url": "https://codeberg.org/fsolla/teqo/issues"
},
"author": "Francisco Solla",
"license": "MIT",
"type": "module",
"scripts": {
"build": "cross-env NODE_OPTIONS=--no-deprecation payload migrate && cross-env NODE_OPTIONS=\"--no-deprecation --max-old-space-size=8000\" next build",
"db:start": "docker compose up -d postgres",
"db:stop": "docker compose down",
"db:pull": "node scripts/db-pull.mjs",
"dev": "node scripts/guard-dev-db.mjs && cross-env NODE_OPTIONS=--no-deprecation next dev",
"devsafe": "rm -rf .next && node scripts/guard-dev-db.mjs && cross-env NODE_OPTIONS=--no-deprecation next dev",
"generate:importmap": "cross-env NODE_OPTIONS=--no-deprecation payload generate:importmap",
"generate:types": "cross-env NODE_OPTIONS=--no-deprecation payload generate:types",
"migrate": "cross-env NODE_OPTIONS=--no-deprecation payload migrate",
"migrate:create": "cross-env NODE_OPTIONS=--no-deprecation payload migrate:create",
"migrate:status": "cross-env NODE_OPTIONS=--no-deprecation payload migrate:status",
"lint": "cross-env NODE_OPTIONS=--no-deprecation eslint --cache --cache-location .next/cache/eslint/",
"lint:fix": "cross-env NODE_OPTIONS=--no-deprecation eslint --fix",
"payload": "cross-env NODE_OPTIONS=--no-deprecation payload",
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
"test": "pnpm run test:int && pnpm run test:e2e",
"test:e2e": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm\" playwright test --config=playwright.config.ts",
"test:int": "cross-env NODE_OPTIONS=--no-deprecation vitest run --config ./vitest.config.mts"
},
"dependencies": {
"@hookform/resolvers": "^5.2.2",
"@payloadcms/db-postgres": "3.79.0",
"@payloadcms/live-preview-react": "3.79.0",
"@payloadcms/next": "3.79.0",
"@payloadcms/richtext-lexical": "3.79.0",
"@payloadcms/storage-vercel-blob": "3.79.0",
"@payloadcms/ui": "3.79.0",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slot": "^1.2.4",
"@vercel/analytics": "^1.6.1",
"@vercel/speed-insights": "^1.3.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cross-env": "^7.0.3",
"dotenv": "16.4.7",
"graphql": "^16.8.1",
"lucide-react": "^0.570.0",
"next": "15.4.11",
"next-themes": "^0.4.6",
"payload": "3.79.0",
"radix-ui": "^1.4.3",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-hook-form": "^7.71.1",
"shadcn": "^4.0.3",
"sharp": "0.34.2",
"tailwind-merge": "^3.4.1",
"tailwindcss-animate": "^1.0.7",
"tw-animate-css": "^1.4.0",
"zod": "^4.3.6"
},
"devDependencies": {
"@playwright/test": "1.58.2",
"@tailwindcss/postcss": "^4.1.18",
"@testing-library/react": "16.3.0",
"@types/node": "22.19.9",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "4.5.2",
"eslint": "^9.39.2",
"eslint-config-next": "15.4.11",
"eslint-config-prettier": "^10.1.8",
"jsdom": "28.0.0",
"postcss": "^8.5.6",
"prettier": "^3.4.2",
"schema-dts": "^2.0.0",
"tailwindcss": "^4.1.18",
"tsx": "4.21.0",
"typescript": "5.7.3",
"typescript-eslint": "^8.55.0",
"vite-tsconfig-paths": "6.0.5",
"vitest": "4.0.18"
},
"engines": {
"node": "^18.20.2 || >=20.9.0",
"pnpm": "^9 || ^10"
},
"pnpm": {
"onlyBuiltDependencies": [
"sharp",
"esbuild",
"unrs-resolver"
]
},
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
}