Overview
Copy-paste Base IdP integration walkthroughs for every supported stack. Pick the one that matches your code.
Every framework guide on this site follows the same pattern: scaffold a starter with the CLI, walk through what was generated, explain the manual platform steps the CLI cannot do, and show how to wire it into a real project.
Pick the stack your code uses. If you have a frontend in one language and a backend in another, you will read two guides — one for each side. That is normal and is how every Base IdP integration works.
Mobile
For apps that ship to a user's device. These are public clients: client id only, no secret, ever.
Flutter
PKCE login for iOS and Android with the base_idp Dart package.
React Native / Expo
PKCE login through expo-web-browser with the base-idp browser SDK.
SwiftUI
Native login for iOS, macOS, and visionOS with the BaseIdP Swift package.
Web
For apps that run in a browser, with or without a server.
Next.js (fullstack)
The same server renders pages and runs login. Confidential client.
Next.js (frontend)
Browser-only Next.js that talks to a separate API. Public client.
Backend
For APIs and services that receive tokens.
NestJS
A guard-based integration for server-rendered NestJS apps.
Express
Plain Node middleware for verify-only APIs.
Go
net/http middleware for verify-only Go services.
Rust
Axum and tower-middleware-friendly verification for Rust services.
Not sure which role applies
Read Client roles first. The role decides everything else — which guide you read, which SDK you install, which env you set.
In short:
| Your code | Role |
|---|---|
Runs in a browser tab and calls loginWithRedirect() | Public frontend |
Runs in a mobile app and calls BaseIdpFlutterAuth.login() | Public frontend |
| Receives a token, verifies it, serves data | Verify-only |
Handles /api/auth/callback and exchanges codes | Confidential server |
Same project can play more than one role. A Next.js fullstack app is public frontend (browser code) and confidential server (route handlers) at the same time. A Flutter app with a Go backend is public frontend (Flutter) and verify-only (Go) — two guides, two SDKs.