- Remplacement de DocuSeal par solution souveraine Odentas Sign - Système d'authentification OTP pour signataires (bcryptjs + JWT) - 8 routes API: send-otp, verify-otp, sign, pdf-url, positions, status, webhook, signers - Interface moderne avec canvas de signature et animations (framer-motion, confetti) - Système de templates pour auto-détection des positions de signature (CDDU, RG, avenants) - PDF viewer avec @react-pdf-viewer (compatible Next.js) - Stockage S3: source/, signatures/, evidence/, signed/, certs/ - Tables Supabase: sign_requests, signers, sign_positions, sign_events, sign_assets - Evidence bundle automatique (JSON metadata + timestamps) - Templates emails: OTP et completion - Scripts Lambda prêts: pades-sign (KMS seal) et tsaStamp (RFC3161) - Mode test détecté automatiquement (emails whitelist) - Tests complets avec PDF CDDU réel (2 signataires)
71 lines
2 KiB
JSON
71 lines
2 KiB
JSON
{
|
|
"name": "odentas-espace-paie",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"dev:network": "node server.js",
|
|
"dev:mobile": "./dev-with-network.sh",
|
|
"dev:network:alt": "PORT=3001 node server.js",
|
|
"test:network": "node test-server.js",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "next lint"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-dynamodb": "^3.896.0",
|
|
"@aws-sdk/client-s3": "^3.896.0",
|
|
"@aws-sdk/client-ses": "^3.896.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.894.0",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@react-pdf-viewer/core": "^3.12.0",
|
|
"@react-pdf-viewer/default-layout": "^3.12.0",
|
|
"@supabase/auth-helpers-nextjs": "^0.10.0",
|
|
"@supabase/ssr": "^0.7.0",
|
|
"@supabase/supabase-js": "^2.57.4",
|
|
"@tanstack/react-query": "^5.56.2",
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/qrcode": "^1.5.5",
|
|
"aws-sdk": "^2.1692.0",
|
|
"axios": "^1.12.2",
|
|
"bcryptjs": "^3.0.2",
|
|
"canvas-confetti": "^1.9.4",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"dotenv": "^17.2.2",
|
|
"framer-motion": "^12.23.24",
|
|
"html2canvas": "^1.4.1",
|
|
"js-cookie": "^3.0.5",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"lucide-react": "^0.460.0",
|
|
"next": "^14.2.5",
|
|
"nprogress": "^0.2.0",
|
|
"pdf-lib": "^1.17.1",
|
|
"pdf-parse": "^2.4.5",
|
|
"pdfjs-dist": "^3.11.174",
|
|
"posthog-js": "^1.275.1",
|
|
"posthog-node": "^5.9.5",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-hook-form": "^7.62.0",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^2.6.0",
|
|
"use-debounce": "^10.0.6"
|
|
},
|
|
"devDependencies": {
|
|
"@types/canvas-confetti": "^1.9.0",
|
|
"@types/js-cookie": "^3.0.6",
|
|
"@types/node": "24.3.1",
|
|
"@types/react": "19.1.12",
|
|
"@types/uuid": "^10.0.0",
|
|
"autoprefixer": "^10.4.19",
|
|
"eslint": "8.57.1",
|
|
"eslint-config-next": "15.5.4",
|
|
"handlebars": "^4.7.8",
|
|
"postcss": "^8.4.38",
|
|
"tailwindcss": "^3.4.10",
|
|
"typescript": "^5.5.4"
|
|
}
|
|
}
|