@ai2h/adonisjs-intake
v0.1.13
Published
AdonisJS client intake drawer for the Intake API
Readme
@ai2h/adonisjs-intake
AdonisJS package that embeds the Intake feedback drawer in your app and proxies the Intake API with your project credentials.
Requirements
- Node.js
>= 24 - AdonisJS 7 (
@adonisjs/core^7) - Edge.js (for the
@intakeDrawer()tag)
Install
npm install @ai2h/adonisjs-intake
node ace configure @ai2h/adonisjs-intakeConfigure will:
- Register the provider in
adonisrc.ts - Create
config/intake.ts
You still need to set env vars and inject the drawer into your layout (steps below).
Environment
Add to .env:
INTAKE_BASE_URL=https://intake.ai2h.tech
INTAKE_API_KEY=itk_...
INTAKE_PROJECT_ID=your-project-idDeclare them in start/env.ts:
INTAKE_BASE_URL: Env.schema.string.optional({ format: 'url', tld: false }),
INTAKE_API_KEY: Env.schema.string.optional(),
INTAKE_PROJECT_ID: Env.schema.string.optional(),All three are optional. Missing values only log a warning; the app still boots. INTAKE_BASE_URL defaults to https://intake.ai2h.tech.
Drawer in your layout
Configure cannot patch layouts. Add the tag once, just before </body>, on pages that should show Intake:
<body>
{{-- ... --}}
@intakeDrawer()
</body>Example path: resources/views/components/layout.edge or resources/views/layouts/main.edge.
Config
config/intake.ts (created by configure):
import env from '#start/env'
import { defineConfig } from '@ai2h/adonisjs-intake'
const intakeConfig = defineConfig({
baseUrl: env.get('INTAKE_BASE_URL', 'https://intake.ai2h.tech'),
apiKey: env.get('INTAKE_API_KEY', ''),
projectId: env.get('INTAKE_PROJECT_ID', ''),
routePrefix: '/__intake',
})
export default intakeConfig| Option | Description |
| --- | --- |
| baseUrl | Intake API base URL |
| apiKey | Project API key (itk_...) |
| projectId | Intake project id |
| routePrefix | Local proxy + assets prefix (default /__intake) |
The provider registers routes under routePrefix:
GET/POST /__intake/intakesPATCH /__intake/intakes/:intakeIdGET /__intake/assets/intake.{js,css}
Mutating drawer requests send X-CSRF-Token using the Shield csrfToken shared with Edge (or a <meta name="csrf-token"> if present).
Use the client in your app
const intake = await app.container.make('ai2h.intake')
await intake.createIntake({
category: 'bug',
body: 'Something went wrong on checkout',
title: 'Checkout error',
})Or import IntakeClient / types from @ai2h/adonisjs-intake.
Checklist
npm install @ai2h/adonisjs-intakenode ace configure @ai2h/adonisjs-intake- Set
INTAKE_*in.envandstart/env.ts - Add
@intakeDrawer()before</body> - Restart the app and open a page that uses your layout
License
MIT
