Stack backend complète selon docs/tech/backend.md §2 : - @adonisjs/bouncer : configure standard, middleware initialize_bouncer simplifié (API JSON-only, pas d'Edge views). - @adonisjs/limiter : store Redis par défaut, throttler global défini dans start/limiter.ts. - @adonisjs/mail : transports SMTP (Mailpit en dev) + Resend (prod). - @adonisjs/drive : services fs (fallback) + S3 (MinIO en dev, prod plus tard). - bullmq + ioredis : config queue.ts définit la connection Redis et la liste des queues (ocr, relances, checkins, kpis). Worker à câbler dans le commit suivant. - @aws-sdk/client-s3 + s3-request-presigner pour le driver flydrive S3. Pas de @rlanz/bull-queue : peer Adonis 6.5, plus maintenu — on consomme BullMQ directement.
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { defineConfig, services } from '@adonisjs/drive'
|
|
import type { InferDriveDisks } from '@adonisjs/drive/types'
|
|
import env from '#start/env'
|
|
|
|
const driveConfig = defineConfig({
|
|
default: env.get('DRIVE_DISK', 's3'),
|
|
|
|
/**
|
|
* Stockage local (filesystem) — utilisé en fallback si MinIO indisponible.
|
|
* Bucket par défaut : storage/uploads (ignoré par git).
|
|
*/
|
|
services: {
|
|
fs: services.fs({
|
|
location: 'storage/uploads',
|
|
visibility: 'private',
|
|
}),
|
|
|
|
/**
|
|
* MinIO via le driver S3 (S3-compatible).
|
|
*/
|
|
s3: services.s3({
|
|
credentials: {
|
|
accessKeyId: env.get('S3_ACCESS_KEY', ''),
|
|
secretAccessKey: env.get('S3_SECRET_KEY', ''),
|
|
},
|
|
endpoint: env.get('S3_ENDPOINT'),
|
|
region: env.get('S3_REGION', 'fr-par'),
|
|
bucket: env.get('S3_BUCKET', 'rubis-invoices'),
|
|
forcePathStyle: env.get('S3_FORCE_PATH_STYLE', true),
|
|
visibility: 'private',
|
|
}),
|
|
},
|
|
})
|
|
|
|
export default driveConfig
|
|
|
|
declare module '@adonisjs/drive/types' {
|
|
export interface DriveDisks extends InferDriveDisks<typeof driveConfig> {}
|
|
}
|