A multi-tenant authentication server built with OpenAuth, designed for Cloudflare Workers with a complete Web UI for project orchestration.
OpenAuthster provides developers with a ready-to-deploy authentication solution featuring:
- 🔐 OpenAuth Issuer Server - Secure authentication powered by OpenAuth
- 🏢 Multi-Tenant Support - Manage multiple projects/applications from a single deployment
- 🎨 Web UI Dashboard - Configure themes, providers, and project settings
- ☁️ Cloudflare Workers - Edge-deployed for low latency worldwide
- 📦 Full-Stack SDKs - React hooks, TypeScript client, and shared types
OpenAuthster follows a modular architecture:
┌─────────────────┐
│ Your App │
│ (React/Next) │
└────────┬────────┘
│ Uses openauth-react
│
▼
┌─────────────────────────────────┐
│ OpenAuthster Issuer │
│ (Cloudflare Worker) │
│ • Multi-tenant auth │
│ • OAuth providers │
│ • D1 Database │
└────────┬────────────────────────┘
│ Managed by
│
▼
┌─────────────────────────────────┐
│ OpenAuthster WebUI │
│ (Cloudflare Pages) │
│ • Project management │
│ • Theme customization │
│ • Provider configuration │
└─────────────────────────────────┘
All components share:
- Common TypeScript types via
openauthster-shared - Consistent API contracts
- Unified session management
OpenAuthster is a multi-repo project consisting of the following repositories:
Note: GitHub repository names may differ from local workspace folder names. The table below shows the published GitHub repository names.
| Repository | Workspace Folder | Description |
|---|---|---|
| OpenAuthSter-issuer | openauth-multitenant-server |
Cloudflare Worker containing the OpenAuth issuer server with multi-tenant capabilities |
| OpenAuthSter-webUI | openauth-webui |
Web UI dashboard for managing projects, customizing themes, and configuring authentication providers |
| OpenAuthSter-shared | openauth-webui-shared-types |
Shared TypeScript types, database schemas, and client SDK for connecting to OpenAuthster |
| Repository | Workspace Folder | Description | Status |
|---|---|---|---|
| openauth-react | openauth-react |
React integration for client-side authentication | 🚧 WIP |
| Repository | Workspace Folder | Description |
|---|---|---|
| openauthster-doc | openauthster-doc |
Official documentation site |
The workspace root now includes an orchestration layer for running the most common tasks across the runtime repositories without changing directories.
Run these from this repository:
bun run install:core
bun run check
bun run test
bun run buildTo include docs as well:
bun run install:all
bun run check:all
bun run test:all
bun run build:allFor targeted execution:
bun run workspace -- test --repo=issuer,shared
bun run workspace -- check --scope=all --continue-on-errorThis is the first migration phase toward a real monorepo. The source trees are still in sibling repositories, but the control plane now lives in the workspace root. See MONOREPO.md for the staged migration approach.
OpenAuthster requires deploying both the issuer server and WebUI. Follow this sequence:
-
Deploy the Issuer (required first)
- Clone OpenAuthSter-issuer as a private repository
- Configure D1 database and environment variables
- Deploy to Cloudflare Workers
- 📖 Full issuer setup guide
-
Deploy the WebUI (requires issuer)
- Clone OpenAuthSter-webUI as a private repository
- Link to your issuer's D1 database
- Configure environment variables
- Deploy to Cloudflare Pages
- 📖 Full WebUI setup guide
-
Integrate with Your App
- Install the React SDK:
npm install openauth-react(coming soon) - Or use the low-level client from
openauthster-shared(for local development) - 📖 Client integration guide
- Install the React SDK:
⚠️ Important: Clone all OpenAuthster repositories as private repositories for production use. This protects your authentication configuration, secrets, and custom implementations.
- 📚 Full Documentation (coming soon)
- 💬 Discussions & Support
OpenAuthster is in active development. Contributions, bug reports, and feature requests are welcome!
- Fork the relevant repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License information coming soon