diff --git a/apps/docs/components/framework_selector.tsx b/apps/docs/components/framework_selector.tsx
index f81c8bdb4..fca729894 100644
--- a/apps/docs/components/framework_selector.tsx
+++ b/apps/docs/components/framework_selector.tsx
@@ -4,8 +4,8 @@ import { useSearchParams } from 'next/navigation';
import { Tabs } from 'fumadocs-ui/components/tabs';
import { ReactNode, Suspense, useMemo } from 'react';
-const FRAMEWORKS = ['angular', 'flutter', 'go', 'nextjs', 'react', 'symfony', 'vue'];
-const DISPLAY_NAMES = ['Angular', 'Flutter', 'Go', 'Next.js', 'React', 'Symfony', 'Vue.js'];
+const FRAMEWORKS = ['angular', 'astro', 'django', 'expressjs', 'fastapi', 'fastify', 'flask', 'flutter', 'go', 'hono', 'laravel', 'nestjs', 'nextjs', 'nuxt', 'qwik', 'react', 'solidstart', 'spring', 'symfony', 'svelte', 'vue'];
+const DISPLAY_NAMES = ['Angular', 'Astro', 'Django', 'Express.js', 'FastAPI', 'Fastify', 'Flask', 'Flutter', 'Go', 'Hono', 'Laravel', 'NestJS', 'Next.js', 'Nuxt', 'Qwik', 'React', 'SolidStart', 'Spring', 'Symfony', 'Svelte', 'Vue.js'];
function FrameworkSelectorInner({ children }: { children: ReactNode }) {
const searchParams = useSearchParams();
@@ -43,4 +43,4 @@ export function FrameworkSelector(props: { children: ReactNode }) {
);
-}
\ No newline at end of file
+}
diff --git a/apps/docs/content/guides/start/_app_values.mdx b/apps/docs/content/guides/start/_app_values.mdx
index 588219e5b..5024fb4bd 100644
--- a/apps/docs/content/guides/start/_app_values.mdx
+++ b/apps/docs/content/guides/start/_app_values.mdx
@@ -3,7 +3,7 @@ import ProjectClientIdSecretImg from '@pub/img/guides/quickstart/project_client_
import ProjectUrlsImg from '@pub/img/guides/quickstart/project_urls.png'
import ProjectProjectIdImg from '@pub/img/guides/quickstart/project_project_id.png'
-export default function AppValue({ valueCount, clientSecret, projectID }) {
+export default function AppValue({ valueCount, clientSecret }) {
return (
@@ -29,11 +29,6 @@ export default function AppValue({ valueCount, clientSecret, projectID }) {
- {!!projectID && (
- Project ID Your currently in the application configuration which is a sub resource of the Project. Navigate to the Project with the back arrow and copy the Project ID.
-
-
- )}
diff --git a/apps/docs/content/guides/start/quickstart.mdx b/apps/docs/content/guides/start/quickstart.mdx
index 440490dba..0b291180e 100644
--- a/apps/docs/content/guides/start/quickstart.mdx
+++ b/apps/docs/content/guides/start/quickstart.mdx
@@ -10,7 +10,8 @@ import { FrameworkSelector } from '@/components/framework_selector';
import AppConfig from './_app_config.mdx';
import AppValues from './_app_values.mdx';
-In this guide, you’ll set up a Zitadel account and authenticate your first example application.
+In this guide, you’ll set up a Zitadel account and configure it to work with our pre-built example applications.
+You can simply clone the repository, follow the console setup, and have a working authentication flow in minutes.
## Get Started with ZITADEL Cloud
@@ -73,7 +74,43 @@ ZITADEL automatically configures the best security settings for your selected fr
+ postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -88,28 +125,76 @@ ZITADEL automatically configures the best security settings for your selected fr
postLogoutRedirectUrl="http://localhost:8089">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ redirectUrl="http://localhost:3000/auth/callback"
+ postLogoutRedirectUrl="http://localhost:3000">
+
+
+
+
+
+
+
+
+ redirectUrl="http://localhost:3000/auth/callback"
+ postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback">
+
+
+
+
+ postLogoutRedirectUrl="http://localhost:3000">
@@ -120,25 +205,67 @@ ZITADEL automatically configures the best security settings for your selected fr
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
+
+
+
+
-
+
@@ -159,32 +286,85 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
- [Node.js](https://nodejs.org/)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Python](https://www.python.org/)
+ - [Poetry](https://python-poetry.org/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Python](https://www.python.org/)
+ - [Poetry](https://python-poetry.org/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Python](https://www.python.org/)
+ - [Poetry](https://python-poetry.org/)
- [Flutter](https://docs.flutter.dev/install)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
- [Go](https://go.dev/)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
+
+
+ - [PHP](https://www.php.net/)
+ - [Composer](https://getcomposer.org/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
- [Node.js](https://nodejs.org/)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
- [Node.js](https://nodejs.org/)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
+
+
+ - [Java Development Kit (JDK)](https://www.java.com/en/)
+ - [Maven](https://maven.apache.org/)
- [PHP](https://www.php.net/)
- [Composer](https://getcomposer.org/)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
+
+
+ - [Node.js](https://nodejs.org/)
+ - [npm](https://www.npmjs.com/)
- [Node.js](https://nodejs.org/)
- - Code Editor: [VS Code](https://code.visualstudio.com/) or similar
+ - [npm](https://www.npmjs.com/)
@@ -197,6 +377,42 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
cd example-auth-angular
```
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-astro.git
+ cd example-auth-astro
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-django.git
+ cd example-auth-django
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-expressjs.git
+ cd example-auth-expressjs
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-fastapi.git
+ cd example-auth-fastapi
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-fastify.git
+ cd example-auth-fastify
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-flask.git
+ cd example-auth-flask
+ ```
+
```bash
git clone https://github.com/zitadel/zitadel_flutter.git
@@ -206,30 +422,78 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
```bash
git clone https://github.com/zitadel/zitadel-go.git
- cd zitadel_go
+ cd zitadel-go
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/zitadel-auth-hono.git
+ cd zitadel-auth-hono
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-laravel.git
+ cd example-auth-laravel
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-nestjs.git
+ cd example-auth-nestjs
```
```bash
- git clone git@github.com:zitadel/example-auth-nextjs.git
+ git clone https://github.com/zitadel/example-auth-nextjs.git
cd example-auth-nextjs
```
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-nuxtjs.git
+ cd example-auth-nuxtjs
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-qwik.git
+ cd example-auth-qwik
+ ```
+
```bash
git clone https://github.com/zitadel/example-auth-react.git
cd example-auth-react
```
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-solidstart.git
+ cd example-auth-solidstart
+ ```
+
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-spring.git
+ cd example-auth-spring
+ ```
+
```bash
git clone https://github.com/zitadel/example-auth-symfony.git
cd example-auth-symfony
```
+
+ ```bash
+ git clone https://github.com/zitadel/example-auth-sveltekit.git
+ cd example-auth-sveltekit
+ ```
+
```bash
- git clone git@github.com:zitadel/example-auth-vuejs.git
+ git clone https://github.com/zitadel/example-auth-vuejs.git
cd example-auth-vuejs
```
@@ -240,7 +504,7 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
- 1. Copy+paste the .env.example to .env.local
+ 1. Copy+paste the .env.example to .env
2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
```bash
@@ -252,6 +516,110 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
NG_APP_ZITADEL_POST_LOGIN_URL="/profile"
```
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/api/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/api/auth/logout/callback"
+ NEXTAUTH_URL="http://localhost:3000"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ PY_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ PY_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ PY_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
No action required for this step.
The issuer and client Id will be passed directly when running the app (next step)
@@ -260,8 +628,64 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
No action required for this step.
The issuer and client Id will be passed directly when running the app (next step)
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+ 3. Generate app key, this will update the APP_KEY variable in the .env file
+ ```bash
+ php artisan key:generate
+ ```
+
+ ```bash
+ APP_KEY="your-app-key"
+ APP_ENV=local
+ APP_DEBUG=true
+ SERVER_URL="http://localhost:3000"
+ SERVER_PORT=3000
+ DB_CONNECTION=sqlite
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env.local
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_SALT="your-very-secret-and-strong-session-salt"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
- 1. Copy+past the .env.example to .env.local
+ 1. Copy+paste the .env.example to .env
2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
```bash
@@ -279,6 +703,40 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
```
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/api/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000"
+ NEXTAUTH_URL="http://localhost:3000"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ NODE_ENV=development
+ VITE_PORT=3000
+ VITE_SESSION_SECRET="your-very-secret-and-strong-session-key"
+ VITE_SESSION_DURATION=3600
+ VITE_ZITADEL_DOMAIN="https://your-zitadel-domain"
+ VITE_ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ VITE_ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ VITE_ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel"
+ VITE_ZITADEL_POST_LOGOUT_URL="http://localhost:3000/api/auth/logout/callback"
+ ```
+
1. Copy+paste the .env.example to .env
2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
@@ -293,18 +751,69 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
VITE_ZITADEL_POST_LOGOUT_URL="http://localhost:3000"
```
-
-
+
1. Copy+paste the .env.example to .env
- 2. Update the ZITADEL_CLIENT_ID and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
```bash
+ NODE_ENV=development
PORT=3000
- NG_APP_ZITADEL_DOMAIN="https://your-zitadel-domain"
- NG_APP_ZITADEL_CLIENT_ID="your-client-id"
- NG_APP_ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
- NG_APP_ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
- NG_APP_ZITADEL_POST_LOGIN_URL="/profile"
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/api/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/api/auth/logout/callback"
+ NEXTAUTH_URL="http://localhost:3000"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ SPRING_PROFILES_ACTIVE=development
+ PORT=3000
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ APP_SECRET="your-app-secret-key"
+ SERVER_URL="http://localhost:3000"
+ SERVER_PORT=3000
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-randomly-generated-client-secret"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ ```
+
+
+ 1. Copy+paste the .env.example to .env
+ 2. Update the ZITADEL_CLIENT_ID, ZITADEL_CLIENT_SECRET and ZITADEL_DOMAIN with the client id and issuer you collected in Step 5.
+
+ ```bash
+ SESSION_SECRET="your-very-secret-and-strong-session-key"
+ SESSION_DURATION=3600
+ # Example: https://my-org-a1b2c3.zitadel.cloud
+ ZITADEL_DOMAIN="https://your-zitadel-domain"
+ ZITADEL_CLIENT_ID="your-zitadel-application-client-id"
+ ZITADEL_CLIENT_SECRET="your-zitadel-application-client-secret"
+ ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback/zitadel"
+ ZITADEL_POST_LOGIN_URL="/profile"
+ ZITADEL_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
+ NEXTAUTH_URL="http://localhost:3000"
```
@@ -329,14 +838,67 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi
```bash
- npm install
- npm run dev
+ make start
```
- Your app will be live at `http://localhost:4200`.
+ Your app will be live at `http://localhost:3000`.

+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
Make sure to replace the [zitadel_issuer] and [zitadel_client_id] with your own value before running the command
```bash
@@ -357,42 +919,109 @@ ZITADEL handles the complexity of the OIDC handshake so your app stays secure wi

+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
```bash
- npm install
-
- npm run dev
+ make start
```
Your app will be live at `http://localhost:3000`.

+
+
+ ```bash
+ make start
+ ```
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
```bash
- npm install
- npm run dev
+ make start
```
Your app will be live at `http://localhost:3000`.

-
+
```bash
- composer install
- composer run dev
+ make start
```
Your app will be live at `http://localhost:3000`.
- 
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
+
+
+ ```bash
+ make start
+ ```
+
+ Your app will be live at `http://localhost:3000`.
+
+ 
```bash
- npm install
- npm run dev
+ make start
```
Your app will be live at `http://localhost:3000`.
@@ -409,7 +1038,7 @@ You’ve successfully integrated ZITADEL into an application.
1. **Generate a backup PAT:** Create a [Service User Personal Access Token](/guides/integrate/service-accounts/personal-access-token) with the [`IAM_OWNER`](/guides/manage/console/managers) role to revert any login UI misconfigurations using the API.
2. **Add a second Instance Manager:** Always designate at least one [**second instance manager**](/guides/manage/console/managers).
-
+
### What’s next?
@@ -418,4 +1047,4 @@ You’ve successfully integrated ZITADEL into an application.
- [**Customize the UI**](/guides/manage/customize/branding): Make the login page your own with Branding.
- [**Explore the API**](/apis/introduction): Check out the ZITADEL API Reference for advanced integrations.
-Need help? Join our [Discord community](https://zitadel.com/chat) or explore the full Documentation. Happy coding!
\ No newline at end of file
+Need help? Join our [Discord community](https://zitadel.com/chat) or explore the full Documentation. Happy coding!
diff --git a/apps/docs/content/sdk-examples/astro.mdx b/apps/docs/content/sdk-examples/astro.mdx
index c0be2cc9f..a6b988467 100644
--- a/apps/docs/content/sdk-examples/astro.mdx
+++ b/apps/docs/content/sdk-examples/astro.mdx
@@ -53,7 +53,7 @@ Once you have your [Zitadel application configured](https://zitadel.com/docs/gui
PORT=3000
SESSION_DURATION=3600
SESSION_SECRET=your-very-secret-and-strong-session-key
- ZITADEL_DOMAIN=https://your-zitadel-instance.zitadel.cloud
+ ZITADEL_DOMAIN=https://your-zitadel-domain
ZITADEL_CLIENT_ID=your_client_id_from_console
ZITADEL_CLIENT_SECRET=your-randomly-generated-client-secret
ZITADEL_CALLBACK_URL=http://localhost:3000/api/auth/callback/zitadel
diff --git a/apps/docs/content/sdk-examples/fastify.mdx b/apps/docs/content/sdk-examples/fastify.mdx
index 8b3677a04..437b3045c 100644
--- a/apps/docs/content/sdk-examples/fastify.mdx
+++ b/apps/docs/content/sdk-examples/fastify.mdx
@@ -38,7 +38,7 @@ Before running this example, you need to create and configure a PKCE application
1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects)
2. Configure it to use the PKCE authentication method
3. Set up your redirect URIs (e.g., `http://localhost:3000/auth/callback/zitadel` for development)
-4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`)
+4. Configure post-logout redirect URIs (e.g., `http://localhost:3000/auth/logout/callback`)
5. Copy your **Client ID** for use in the next steps
6. Optionally enable [refresh tokens](https://zitadel.com/docs/apis/openidoauth/grant-types#refresh-token) in Token Settings for long-lived sessions
diff --git a/apps/docs/content/sdk-examples/nuxtjs.mdx b/apps/docs/content/sdk-examples/nuxtjs.mdx
index ba44ea3dc..0f098b7da 100644
--- a/apps/docs/content/sdk-examples/nuxtjs.mdx
+++ b/apps/docs/content/sdk-examples/nuxtjs.mdx
@@ -36,7 +36,7 @@ Before running this example, you need to create and configure a PKCE application
1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects)
2. Configure it to use the PKCE authentication method
3. Set up your redirect URIs (e.g., `http://localhost:3000/api/auth/callback/zitadel` for development)
-4. Configure post-logout redirect URIs (e.g., `http://localhost:3000/`)
+4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`)
5. Copy your **Client ID** for use in the next steps
> **Note:** Make sure to enable **Dev Mode** in the ZITADEL Management Console if you're using HTTP URLs during local development. For production, always use HTTPS URLs and disable Dev Mode.
@@ -55,7 +55,7 @@ Once you have your Zitadel application configured:
ZITADEL_CLIENT_ID=your-client-id
ZITADEL_CLIENT_SECRET=your-randomly-generated-client-secret
ZITADEL_CALLBACK_URL=http://localhost:3000/api/auth/callback/zitadel
- ZITADEL_POST_LOGOUT_URL=http://localhost:3000/
+ ZITADEL_POST_LOGOUT_URL=http://localhost:3000
AUTH_ORIGIN=http://localhost:3000
```
Replace these values with:
diff --git a/apps/docs/content/sdk-examples/react.mdx b/apps/docs/content/sdk-examples/react.mdx
index d7fad298b..9c743216d 100644
--- a/apps/docs/content/sdk-examples/react.mdx
+++ b/apps/docs/content/sdk-examples/react.mdx
@@ -38,7 +38,7 @@ Before running this example, you need to create and configure a PKCE application
1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects)
2. Configure it to use the PKCE authentication method
3. Set up your redirect URIs (e.g., `http://localhost:3000/auth/callback` for development)
-4. Configure post-logout redirect URIs (e.g., `http://localhost:3000/`)
+4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`)
5. Copy your **Client ID** for use in the next steps
> **Note:** Make sure to enable **Dev Mode** in the [ZITADEL Management Console](https://zitadel.com/docs/guides/manage/console/overview) if you're using HTTP URLs during local development. For production, always use HTTPS URLs and disable Dev Mode.
@@ -53,7 +53,7 @@ Once you have your Zitadel application configured:
VITE_ZITADEL_DOMAIN=https://your-instance.zitadel.cloud
VITE_ZITADEL_CLIENT_ID=your_client_id_from_console
VITE_ZITADEL_CALLBACK_URL=http://localhost:3000/auth/callback
-VITE_ZITADEL_POST_LOGOUT_URL=http://localhost:3000/
+VITE_ZITADEL_POST_LOGOUT_URL=http://localhost:3000
VITE_POST_LOGIN_URL=/profile
VITE_PORT=3000
```
diff --git a/apps/docs/content/sdk-examples/vue.mdx b/apps/docs/content/sdk-examples/vue.mdx
index 297c6342d..3e3ab9307 100644
--- a/apps/docs/content/sdk-examples/vue.mdx
+++ b/apps/docs/content/sdk-examples/vue.mdx
@@ -38,7 +38,7 @@ Before running this example, you need to create and configure a PKCE application
1. Create a new Web application in your [Zitadel project](https://zitadel.com/docs/guides/manage/console/projects)
2. Configure it to use the PKCE authentication method
3. Set up your redirect URIs (e.g., `http://localhost:3000/auth/callback` for development)
-4. Configure post-logout redirect URIs
+4. Configure post-logout redirect URIs (e.g., `http://localhost:3000`)
5. Copy your **Client ID** for use in the next steps
> **Note:** Make sure to enable **Dev Mode** in the [ZITADEL Management Console](https://zitadel.com/docs/guides/manage/console/overview) if you're using HTTP URLs during local development. For production, always use HTTPS URLs and disable Dev Mode.
diff --git a/apps/docs/frameworks.json b/apps/docs/frameworks.json
index 7f7d39af1..49ad2e1df 100644
--- a/apps/docs/frameworks.json
+++ b/apps/docs/frameworks.json
@@ -1,47 +1,4 @@
[
- {
- "id": "client-php",
- "title": "PHP",
- "imgSrcDark": "/docs/img/tech/php.svg",
- "docsLink": "/docs/sdk-examples/client-libraries/php",
- "client": true
- },
- {
- "id": "client-java",
- "title": "Java",
- "imgSrcDark": "/docs/img/tech/java.svg",
- "docsLink": "/docs/sdk-examples/client-libraries/java",
- "client": true
- },
- {
- "id": "client-go",
- "title": "Go",
- "imgSrcDark": "/docs/img/tech/golang.svg",
- "docsLink": "/docs/guides/start/quickstart?framework=go",
- "client": true,
- "sdk": true
- },
- {
- "id": "client-ruby",
- "title": "Ruby",
- "imgSrcDark": "/docs/img/tech/ruby.svg",
- "docsLink": "/docs/sdk-examples/client-libraries/ruby",
- "client": true
- },
- {
- "id": "client-python",
- "title": "Python",
- "imgSrcDark": "/docs/img/tech/python.svg",
- "docsLink": "/docs/sdk-examples/client-libraries/python",
- "client": true
- },
- {
- "id": "client-node",
- "title": "Node.js",
- "imgSrcDark": "/docs/img/tech/nodejs.svg",
- "docsLink": "/docs/sdk-examples/client-libraries/node",
- "client": true
- },
{
"id": "angular",
"title": "Angular",
@@ -50,6 +7,43 @@
"imgSrcDark": "/docs/img/tech/angular.svg",
"docsLink": "/docs/guides/start/quickstart?framework=angular"
},
+ {
+ "id": "astro",
+ "title": "Astro",
+ "imgSrcDark": "/docs/img/tech/astro.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=astro"
+ },
+ {
+ "id": "django",
+ "title": "Django",
+ "imgSrcDark": "/docs/img/tech/django.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=django"
+ },
+ {
+ "id": "expressjs",
+ "title": "Express.js",
+ "imgSrcDark": "/docs/img/tech/expressjs.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=expressjs"
+ },
+ {
+ "id": "fastapi",
+ "title": "FastAPI",
+ "imgSrcDark": "/docs/img/tech/fastapi.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=fastapi"
+ },
+ {
+ "id": "fastify",
+ "title": "Fastify",
+ "imgSrcDark": "/docs/img/tech/fastify.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=fastify"
+ },
+ {
+ "id": "flask",
+ "title": "Flask",
+ "imgSrcDark": "/docs/img/tech/flask.svg",
+ "imgSrcLight": "/docs/img/tech/flask.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=flask"
+ },
{
"id": "flutter",
"title": "Flutter",
@@ -59,18 +53,25 @@
{
"title": "Go",
"imgSrcDark": "/docs/img/tech/golang.svg",
- "docsLink": "/docs/guides/start/quickstart?framework=go"
+ "docsLink": "/docs/guides/start/quickstart?framework=go",
+ "sdk": true
},
{
- "id": "spring",
- "title": "Spring",
- "imgSrcDark": "/docs/img/tech/spring.svg",
- "docsLink": "/docs/sdk-examples/spring"
+ "id": "hono",
+ "title": "Hono",
+ "imgSrcDark": "/docs/img/tech/hono.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=hono"
+ },
+ {
+ "id": "laravel",
+ "title": "Laravel",
+ "imgSrcDark": "/docs/img/tech/laravel.svg",
+ "docsLink": "/docs/sdk-examples/laravel"
},
{
"title": "NestJS",
"imgSrcDark": "/docs/img/tech/nestjs.svg",
- "docsLink": "/docs/sdk-examples/nestjs"
+ "docsLink": "/docs/guides/start/quickstart?framework=nestjs"
},
{
"id": "next",
@@ -80,23 +81,10 @@
"docsLink": "/docs/guides/start/quickstart?framework=nextjs"
},
{
- "id": "django",
- "title": "Django",
- "imgSrcDark": "/docs/img/tech/django.svg",
- "docsLink": "/docs/sdk-examples/django"
- },
- {
- "id": "flask",
- "title": "Flask",
- "imgSrcDark": "/docs/img/tech/flask.svg",
- "imgSrcLight": "/docs/img/tech/flask.svg",
- "docsLink": "/docs/sdk-examples/flask"
- },
- {
- "id": "fastapi",
- "title": "FastAPI",
- "imgSrcDark": "/docs/img/tech/fastapi.svg",
- "docsLink": "/docs/sdk-examples/fastapi"
+ "id": "nuxt",
+ "title": "Nuxt.js",
+ "imgSrcDark": "/docs/img/tech/nuxtjs.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=nuxt"
},
{
"id": "react",
@@ -105,125 +93,41 @@
"imgSrcDark": "/docs/img/tech/react.svg",
"docsLink": "/docs/guides/start/quickstart?framework=react"
},
+ {
+ "id": "qwik",
+ "title": "Qwik",
+ "imgSrcDark": "/docs/img/tech/qwik.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=qwik"
+ },
+ {
+ "id": "solidstart",
+ "title": "SolidStart",
+ "imgSrcDark": "/docs/img/tech/solidstart.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=solidstart"
+ },
+ {
+ "id": "spring",
+ "title": "Spring",
+ "imgSrcDark": "/docs/img/tech/spring.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=spring"
+ },
{
"id": "symfony",
"title": "Symfony",
"imgSrcDark": "/docs/img/tech/symfony.svg",
"docsLink": "/docs/guides/start/quickstart?framework=symfony"
},
+ {
+ "id": "svelte",
+ "title": "Svelte",
+ "imgSrcDark": "/docs/img/tech/sveltekit.svg",
+ "docsLink": "/docs/guides/start/quickstart?framework=sveltekit"
+ },
{
"id": "vue",
"title": "Vue.js",
"description": "This preset sets up an OIDC configuration with Authentication Code Flow, secured by PKCE",
"imgSrcDark": "/docs/img/tech/vue.svg",
"docsLink": "/docs/guides/start/quickstart?framework=vue"
- },
- {
- "title": "Dart",
- "imgSrcDark": "/docs/img/tech/dart.svg",
- "docsLink": "https://github.com/smartive/zitadel-dart",
- "external": true,
- "client": true,
- "sdk": true
- },
- {
- "title": "Elixir",
- "imgSrcDark": "/docs/img/tech/elixir.svg",
- "docsLink": "https://github.com/maennchen/zitadel_api",
- "external": true
- },
- {
- "title": "NextAuth",
- "imgSrcDark": "/docs/img/tech/nextjs.svg",
- "imgSrcLight": "/docs/img/tech/nextjslight.svg",
- "docsLink": "https://next-auth.js.org/providers/zitadel",
- "external": true
- },
- {
- "title": ".Net",
- "imgSrcDark": "/docs/img/tech/dotnet.svg",
- "docsLink": "https://github.com/smartive/zitadel-net",
- "external": true,
- "client": true
- },
- {
- "title": "Passport.js",
- "imgSrcDark": "/docs/img/tech/passportjs.svg",
- "docsLink": "https://github.com/buehler/node-passport-zitadel",
- "external": true
- },
- {
- "title": "Rust",
- "imgSrcLight": "/docs/img/tech/rust.svg",
- "imgSrcDark": "/docs/img/tech/rustlight.svg",
- "docsLink": "https://github.com/smartive/zitadel-rust",
- "client": true,
- "external": true
- },
- {
- "title": "Pylon",
- "imgSrcDark": "/docs/img/tech/pylon.svg",
- "docsLink": "https://github.com/getcronit/pylon",
- "external": true
- },
- {
- "title": "Vanilla-JS",
- "imgSrcDark": "/docs/img/tech/javascript.svg",
- "docsLink": "https://github.com/zitadel/zitadel-vanilla-js",
- "external": true
- },
- {
- "id": "astro",
- "title": "Astro",
- "imgSrcDark": "/docs/img/tech/astro.svg",
- "docsLink": "/docs/sdk-examples/astro"
- },
- {
- "id": "expressjs",
- "title": "Express.js",
- "imgSrcDark": "/docs/img/tech/expressjs.svg",
- "docsLink": "/docs/sdk-examples/expressjs"
- },
- {
- "id": "fastify",
- "title": "Fastify",
- "imgSrcDark": "/docs/img/tech/fastify.svg",
- "docsLink": "/docs/sdk-examples/fastify"
- },
- {
- "id": "hono",
- "title": "Hono",
- "imgSrcDark": "/docs/img/tech/hono.svg",
- "docsLink": "/docs/sdk-examples/hono"
- },
- {
- "id": "nuxtjs",
- "title": "Nuxt.js",
- "imgSrcDark": "/docs/img/tech/nuxtjs.svg",
- "docsLink": "/docs/sdk-examples/nuxtjs"
- },
- {
- "id": "qwik",
- "title": "Qwik",
- "imgSrcDark": "/docs/img/tech/qwik.svg",
- "docsLink": "/docs/sdk-examples/qwik"
- },
- {
- "id": "solidstart",
- "title": "SolidStart",
- "imgSrcDark": "/docs/img/tech/solidstart.svg",
- "docsLink": "/docs/sdk-examples/solidstart"
- },
- {
- "id": "sveltekit",
- "title": "SvelteKit",
- "imgSrcDark": "/docs/img/tech/sveltekit.svg",
- "docsLink": "/docs/sdk-examples/sveltekit"
- },
- {
- "id": "laravel",
- "title": "Laravel",
- "imgSrcDark": "/docs/img/tech/laravel.svg",
- "docsLink": "/docs/sdk-examples/laravel"
}
]
diff --git a/apps/docs/public/img/guides/quickstart/astro_example_app.png b/apps/docs/public/img/guides/quickstart/astro_example_app.png
new file mode 100644
index 000000000..3f56812af
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/astro_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/django_example_app.png b/apps/docs/public/img/guides/quickstart/django_example_app.png
new file mode 100644
index 000000000..8bce5ca23
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/django_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/expressjs_example_app.png b/apps/docs/public/img/guides/quickstart/expressjs_example_app.png
new file mode 100644
index 000000000..17bbfc2f1
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/expressjs_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/fastapi_example_app.png b/apps/docs/public/img/guides/quickstart/fastapi_example_app.png
new file mode 100644
index 000000000..314b0d451
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/fastapi_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/fastify_example_app.png b/apps/docs/public/img/guides/quickstart/fastify_example_app.png
new file mode 100644
index 000000000..53706f53b
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/fastify_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/flask_example_app.png b/apps/docs/public/img/guides/quickstart/flask_example_app.png
new file mode 100644
index 000000000..a18e12b9a
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/flask_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/hono_example_app.png b/apps/docs/public/img/guides/quickstart/hono_example_app.png
new file mode 100644
index 000000000..b9d2c76e4
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/hono_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/laravel_example_app.png b/apps/docs/public/img/guides/quickstart/laravel_example_app.png
new file mode 100644
index 000000000..5ac8f0d73
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/laravel_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/nestjs_example_app.png b/apps/docs/public/img/guides/quickstart/nestjs_example_app.png
new file mode 100644
index 000000000..619f2925c
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/nestjs_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/nuxt_example_app.png b/apps/docs/public/img/guides/quickstart/nuxt_example_app.png
new file mode 100644
index 000000000..378a232a7
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/nuxt_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/qwik_example_app.png b/apps/docs/public/img/guides/quickstart/qwik_example_app.png
new file mode 100644
index 000000000..f78093b76
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/qwik_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/solidstart_example_app.png b/apps/docs/public/img/guides/quickstart/solidstart_example_app.png
new file mode 100644
index 000000000..d5247ad9e
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/solidstart_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/spring_example_app.png b/apps/docs/public/img/guides/quickstart/spring_example_app.png
new file mode 100644
index 000000000..ff5ba8971
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/spring_example_app.png differ
diff --git a/apps/docs/public/img/guides/quickstart/sveltekit_example_app.png b/apps/docs/public/img/guides/quickstart/sveltekit_example_app.png
new file mode 100644
index 000000000..1337cacd7
Binary files /dev/null and b/apps/docs/public/img/guides/quickstart/sveltekit_example_app.png differ
diff --git a/console/src/app/utils/framework.ts b/console/src/app/utils/framework.ts
index 2f1f1b408..638e24da4 100644
--- a/console/src/app/utils/framework.ts
+++ b/console/src/app/utils/framework.ts
@@ -13,7 +13,7 @@ export const OIDC_CONFIGURATIONS: OidcAppConfigurations = {
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
.setRedirectUrisList(['http://localhost:3000/auth/callback'])
- .setPostLogoutRedirectUrisList(['http://localhost:3000/signedout']),
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
['react']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_USER_AGENT)
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE)
@@ -27,72 +27,72 @@ export const OIDC_CONFIGURATIONS: OidcAppConfigurations = {
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
.setRedirectUrisList(['http://localhost:3000/auth/callback'])
- .setPostLogoutRedirectUrisList(['http://localhost:3000/']),
+ .setPostLogoutRedirectUrisList(['http://localhost:3000']),
// web applications
['next']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:3000/callback'])
+ .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/api/auth/logout/callback']),
+ ['nestjs']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['nuxt']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel'])
.setPostLogoutRedirectUrisList(['http://localhost:3000']),
- ['java']: new AddOIDCAppRequest()
+ ['svelte']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
- .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:18080/webapp/login/oauth2/code/zitadel'])
- .setPostLogoutRedirectUrisList(['http://localhost:18080/webapp']),
- ['client-java']: new AddOIDCAppRequest()
- .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
- .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE)
- .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
- .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:18080/webapp/login/oauth2/code/zitadel'])
- .setPostLogoutRedirectUrisList(['http://localhost:18080/webapp']),
+ .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
['spring']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:8080/login/oauth2/code/zitadel'])
- .setPostLogoutRedirectUrisList(['http://localhost:8080']),
- ['client-php']: new AddOIDCAppRequest()
- .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
- .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
- .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
- .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:8080/callback'])
- .setPostLogoutRedirectUrisList(['http://localhost:8080']),
- ['client-python']: new AddOIDCAppRequest()
- .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
- .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
- .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
- .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:8000/callback'])
- .setPostLogoutRedirectUrisList(['http://localhost:8000']),
- ['client-node']: new AddOIDCAppRequest()
- .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
- .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
- .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
- .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:3000/callback'])
- .setPostLogoutRedirectUrisList(['http://localhost:3000']),
- ['client-go']: new AddOIDCAppRequest()
+ .setRedirectUrisList(['http://localhost:3000/auth/callback'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['go']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
.setRedirectUrisList(['http://localhost:8089/auth/callback'])
.setPostLogoutRedirectUrisList(['http://localhost:8089']),
- ['client-ruby']: new AddOIDCAppRequest()
+ ['symfony']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:3000/callback'])
- .setPostLogoutRedirectUrisList(['http://localhost:3000']),
- ['symfony']: new AddOIDCAppRequest()
+ .setRedirectUrisList(['http://localhost:3000/auth/callback'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['laravel']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/auth/callback'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['fastapi']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/auth/callback'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['flask']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
@@ -104,8 +104,43 @@ export const OIDC_CONFIGURATIONS: OidcAppConfigurations = {
.setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_NONE)
.setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
.setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
- .setRedirectUrisList(['http://localhost:8000/oidc/callback/'])
- .setPostLogoutRedirectUrisList(['http://localhost:8000/oidc/logout/ ']),
+ .setRedirectUrisList(['http://localhost:3000/auth/callback'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['astro']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/api/auth/logout/callback']),
+ ['hono']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['solidstart']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/api/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/api/auth/logout/callback']),
+ ['expressjs']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
+ ['fastify']: new AddOIDCAppRequest()
+ .setAppType(OIDCAppType.OIDC_APP_TYPE_WEB)
+ .setAuthMethodType(OIDCAuthMethodType.OIDC_AUTH_METHOD_TYPE_BASIC)
+ .setResponseTypesList([OIDCResponseType.OIDC_RESPONSE_TYPE_CODE])
+ .setGrantTypesList([OIDCGrantType.OIDC_GRANT_TYPE_AUTHORIZATION_CODE])
+ .setRedirectUrisList(['http://localhost:3000/auth/callback/zitadel'])
+ .setPostLogoutRedirectUrisList(['http://localhost:3000/auth/logout/callback']),
// native
['flutter']: new AddOIDCAppRequest()
.setAppType(OIDCAppType.OIDC_APP_TYPE_NATIVE)