apps/docs/content/guides/start/quickstart.mdx
import { Tab } from 'fumadocs-ui/components/tabs'; 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 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.
Set up your ZITADEL account and organization to begin managing identities for your applications.
You first need access to the ZITADEL Cloud Customer Portal. This is the administrative hub for managing your billing, teams, and instances.
Complete the brief onboarding questions. This data helps us prioritize the development of new features, SDKs, and integrations that matter most to our community.
An Instance is a fully isolated identity environment with its own users, policies, and data. Most developers use separate instances to isolate Development, Test, and Production workflows.
Follow these steps to deploy your first instance:
In ZITADEL, Applications are grouped into Projects. This allows multiple applications (like a React frontend and a Go backend) to share the same roles and role assignments.
Click Create your app. This opens the Management Console for your instance in a new tab. Log in using the Admin credentials you just created.
ZITADEL automatically configures the best security settings for your selected framework.
<FrameworkSelector> <Tab value="Angular"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Astro"> <AppConfig redirectUrl="http://localhost:3000/api/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/api/auth/logout/callback"> </AppConfig> </Tab> <Tab value="ASP.NET Core"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Django"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Express.js"> <AppConfig redirectUrl="http://localhost:3000/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="FastAPI"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Fastify"> <AppConfig redirectUrl="http://localhost:3000/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Flask"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Flutter"> <AppConfig redirectUrl="http://localhost:4444/auth.html, com.example.zitadelflutter" postLogoutRedirectUrl="http://localhost:4444, com.example.zitadelflutter"> </AppConfig> </Tab> <Tab value="Go"> <AppConfig redirectUrl="http://localhost:8089/auth/callback" postLogoutRedirectUrl="http://localhost:8089"> </AppConfig> </Tab> <Tab value="Hono"> <AppConfig redirectUrl="http://localhost:3000/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Laravel"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="NestJS"> <AppConfig redirectUrl="http://localhost:3000/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Next.js"> <AppConfig redirectUrl="http://localhost:3000/api/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/api/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Nuxt"> <AppConfig redirectUrl="http://localhost:3000/api/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000"> </AppConfig> </Tab> <Tab value="Qwik"> <AppConfig redirectUrl="http://localhost:3000/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/api/auth/logout/callback"> </AppConfig> </Tab> <Tab value="React"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000"> </AppConfig> </Tab> <Tab value="SolidStart"> <AppConfig redirectUrl="http://localhost:3000/api/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/api/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Spring"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Symfony"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Svelte"> <AppConfig redirectUrl="http://localhost:3000/auth/callback/zitadel" postLogoutRedirectUrl="http://localhost:3000/auth/logout/callback"> </AppConfig> </Tab> <Tab value="Vue.js"> <AppConfig redirectUrl="http://localhost:3000/auth/callback" postLogoutRedirectUrl="http://localhost:3000"> </AppConfig> </Tab> </FrameworkSelector>ZITADEL handles the complexity of the OIDC handshake so your app stays secure without manual token management.
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
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"
```
</Tab>
<Tab value="Astro">
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"
```
</Tab>
<Tab value="ASP.NET Core">
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
PORT=3000
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_POST_LOGOUT_URL="http://localhost:3000/auth/logout/callback"
```
</Tab>
<Tab value="Django">
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"
```
</Tab>
<Tab value="Express.js">
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"
```
</Tab>
<Tab value="FastAPI">
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"
```
</Tab>
<Tab value="Fastify">
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"
```
</Tab>
<Tab value="Flask">
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"
```
</Tab>
<Tab value="Flutter">
No action required for this step.
The issuer and client Id will be passed directly when running the app (next step)
</Tab>
<Tab value="Go">
No action required for this step.
The issuer and client Id will be passed directly when running the app (next step)
</Tab>
<Tab value="Hono">
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"
```
</Tab>
<Tab value="Laravel">
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"
```
</Tab>
<Tab value="NestJS">
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"
```
</Tab>
<Tab value="Next.js">
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-instance.zitadel.cloud/](https://your-instance.zitadel.cloud/)"
ZITADEL_CLIENT_ID="zitadel-client-id"
ZITADEL_CLIENT_SECRET="zitadel-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"
```
</Tab>
<Tab value="Nuxt">
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"
```
</Tab>
<Tab value="Qwik">
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"
```
</Tab>
<Tab value="React">
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
NODE_ENV=development
PORT=3000
VITE_ZITADEL_DOMAIN="https://your-zitadel-domain"
VITE_ZITADEL_CLIENT_ID="your-client-id"
VITE_ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
VITE_ZITADEL_POST_LOGIN_URL="/profile"
VITE_ZITADEL_POST_LOGOUT_URL="http://localhost:3000"
```
</Tab>
<Tab value="SolidStart">
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"
```
</Tab>
<Tab value="Spring">
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"
```
</Tab>
<Tab value="Symfony">
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"
```
</Tab>
<Tab value="Svelte">
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"
```
</Tab>
<Tab value="Vue.js">
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
NODE_ENV=development
PORT=3000
VITE_ZITADEL_DOMAIN="https://your-zitadel-domain"
VITE_ZITADEL_CLIENT_ID="your-client-id"
VITE_ZITADEL_CALLBACK_URL="http://localhost:3000/auth/callback"
VITE_ZITADEL_POST_LOGIN_URL="/profile"
VITE_ZITADEL_POST_LOGOUT_URL="http://localhost:3000"
```
</Tab>
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Astro">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="ASP.NET Core">
```bash
make start
```
Your app will be live at `http://localhost:3000`.
</Tab>
<Tab value="Django">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Express.js">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Fastify">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="FastAPI">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Flask">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Flutter">
Make sure to replace the [zitadel_issuer] and [zitadel_client_id] with your own value before running the command
```bash
flutter run -d chrome --web-port=4444 --dart-define zitadel_url=[zitadel_issuer] --dart-define zitadel_client_id=[zitadel_client_id]
```
Your app will be live at `http://localhost:4444`.

</Tab>
<Tab value="Go">
Make sure to replace the [zitadel_domain] (use the domain from the issuer without the https://) and [zitadel_client_id] with your own value before running the command
```bash
go run example/app/app.go --domain [zitadel_domain] --key XKv2Lqd7YAq13NUZVUWZEWZeruqyzViM --clientID [zitadel_client_id] --redirectURI http://localhost:8089/auth/callback
```
Your app will be live at `http://localhost:8089`.

</Tab>
<Tab value="Hono">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Laravel">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="NestJS">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Next.js">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Nuxt">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Qwik">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="React">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="SolidStart">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Spring">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Symfony">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Svelte">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
<Tab value="Vue.js">
```bash
make start
```
Your app will be live at `http://localhost:3000`.

</Tab>
You’ve successfully integrated ZITADEL into an application.
<Callout type="warn" title="Prevent Settings Misconfiguration Lockouts"> Login policy settings misconfigurations that occur during the testing phase can easily lead to a [lockout](/legal/policies/account-lockout-policy). To ensure you don't lose access to your instance:IAM_OWNER role to revert any login UI misconfigurations using the API.Need help? Join our Discord community or explore the full Documentation. Happy coding!