wmalarski / qwik-authjs-example

Next-Auth.js + Qwik example integration
MIT License
27 stars 5 forks source link
authjs next-auth qwik qwik-city typescript vite zod

Qwik City + Auth.js ⚡️

This repo contains integration between Qwik-City and Auth.js.

Integration code is located in "/src/lib" folder.

Integration is not tested yet with enough providers. It's more of proof of concept.

Code is based on @builder.io/qwik-auth. I decided no to use official integration yet because of issues with leaking server side code to browser -> this could be my fault but it's not happening with my approach.

Tools


Project Structure

Inside your project, you'll see the following directory structure:

├── public/
│   └── ...
└── src/
    ├── components/
    │   └── ...
    └── routes/
        └── ...

Add Integrations

Use the npm run qwik add command to add additional integrations. Some examples of integrations include: Cloudflare, Netlify or Vercel server, and the Static Site Generator (SSG).

npm run qwik add # or `yarn qwik add`

Development

Development mode uses Vite's development server. During development, the dev command will server-side render (SSR) the output.

npm run dev # or `yarn dev`

Note: during dev mode, Vite may request a significant number of .js files. This does not represent a Qwik production build.

Preview

The preview command will create a production build of the client modules, a production build of src/entry.preview.tsx, and run a local server. The preview server is only for convenience to locally preview a production build, and it should not be used as a production server.

npm run preview # or `yarn preview`

Production

The production build will generate client and server modules by running both client and server build commands. Additionally, the build command will use Typescript to run a type check on the source code.

npm run build # or `yarn build`

Express Server

This app has a minimal Express server implementation. After running a full build, you can preview the build using the command:

pnpm run serve

Then visit http://localhost:8080/