This works by using Lucia's built-in pg
adapter and passing Neon's Pool
instance to it. This works thanks to Neon's Pool
and Client
being a drop-in replacement for node-postgres
's Pool
and Client
.
To make it work with a framework it shouldn't need much additional work, just add the appropriate middleware
to lucia.ts
and make sure to follow the framework specific docs for setting Lucia up further, because there are some things that are missing (like app.d.ts
for example).
This works in both serverless and edge environments, as it makes use of Neon's serverless driver (https://neon.tech/docs/serverless/serverless-driver).
Context: https://discord.com/channels/1004048134218981416/1128374846171140106
I've written the following tests:
should register a user
should not login and throw invalid password
should create session
Supply your own .env
file from the example, run pnpm db:migrate
, apply the migration and run pnpm test
.
You can deploy this to Vercel to test it manually yourself.
api/edge.ts
& api/serverless.ts
are "alive" checks using Drizzle, to make sure that the database is queryable.
api/auth/
contains 2 directories:
edge
- this is the edge version of the APIserverless
- this is the serverless version of the API
You can use this command to send a request:
curl -X POST -H "Content-Type: application/json" -d '{"id":"your-id","password":"your-password"}' https://<your-vercel-url>/api/auth/<edge or serverless>/<endpoint>