Unified authentication & branding scaffold for Kylehub projects. Generate consistent full-stack applications with Zitadel OIDC, dark theme UI, and production-ready architecture.
- Zitadel Authentication - Pre-configured OIDC with PKCE flow
- Vite + React 18 - Lightning-fast frontend with TailwindCSS
- Dark Theme - Beautiful violet-accented UI components
- TanStack Query - Configured API client with auth interceptors
- FastAPI Backend - Async Python with JWT validation
- Modular Infrastructure - Choose PostgreSQL, Redis, arq workers
- Docker Ready - Generated docker-compose based on your choices
- AI-Optimized - Generated docs for AI-assisted development
┌─────────────────────────────────────────────────────────────────────────────┐
│ Frontend (React SPA) │
│ Vite + TypeScript + TailwindCSS + TanStack Query + react-oidc-context │
└─────────────────────────────────────────────────────────────────────────────┘
│
│ REST API + JWT Bearer Token
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Backend (FastAPI) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ Public Routes │ │ Protected Routes│ │ Service Layer │ │
│ │ GET /health │ │ GET /users/me │ │ Business Logic │ │
│ │ GET /docs │ │ Your Routes... │ │ External Integrations │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ PostgreSQL │ │ Redis │ │ arq Worker │
│ (Optional) │ │ (Optional) │ │ (Optional) │
└────────────────┘ └────────────────┘ └────────────────┘
curl -fsSL https://raw.githubusercontent.com/kylehub/identity-kit/main/install.sh | bashcurl -fsSL https://raw.githubusercontent.com/kylehub/identity-kit/main/install.sh | bash -s -- --name my-app --fullgit clone https://github.com/kylehub/identity-kit.git
cd identity-kit
./create-project.sh --name my-appThe generator will ask you:
- Project name - Used for directory and package names
- Project description - For package.json and pyproject.toml
- Zitadel domain - Your auth instance (e.g.,
auth.example.com) - Include PostgreSQL? - Adds SQLAlchemy async + Alembic migrations
- Include Redis? - Adds Redis client and caching utilities
- Include arq workers? - Adds background job processing
my-app/
├── frontend/
│ ├── src/
│ │ ├── components/ui/ # Reusable UI components
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # Auth, API client, utilities
│ │ ├── pages/ # Route pages
│ │ └── styles/ # Global CSS with theme
│ ├── package.json
│ └── ...
├── backend/
│ ├── app/
│ │ ├── api/routes/ # FastAPI route handlers
│ │ ├── core/ # Config, auth, dependencies
│ │ ├── db/ # Database models (if PostgreSQL)
│ │ ├── services/ # Business logic
│ │ └── workers/ # arq jobs (if enabled)
│ ├── pyproject.toml
│ └── ...
├── docker-compose.yml # Based on your infrastructure choices
├── AI_CONTEXT.md # Documentation for AI assistants
└── README.md # Project-specific readme
identity-kit/
├── create-project.sh # Main generator script
├── generator/
│ ├── scripts/
│ │ ├── generate.sh # Core generation logic
│ │ └── utils.sh # Helper functions
│ └── templates/
│ ├── frontend/ # React + Vite template files
│ ├── backend/ # FastAPI template files
│ └── infrastructure/ # Docker, configs
└── README.md
- Button, Card, Input, Dialog, Select, Badge, Alert, Tooltip
- Toast notifications with hook
- Layout with sidebar
- Auth provider, protected routes, auth hook
- API client with token injection
- Dark theme with violet accents
- JWT validation with JWKS caching
- Health check endpoint
- CORS configuration
- Pydantic settings
- SQLAlchemy async engine
- Base model with timestamps
- Alembic migrations setup
- Database session dependency
- Async Redis client
- Connection pooling
- Cache utilities
- Worker configuration
- Job definitions template
- Startup/shutdown hooks
After generating your project:
cd my-app
# 1. Start infrastructure (if any)
docker compose up -d
# 2. Setup backend
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# 3. Setup frontend
cd ../frontend
npm install
# 4. Configure Zitadel
# - Create SPA application in Zitadel Console
# - Copy Client ID to frontend/.env
# 5. Run development servers
# Terminal 1: cd backend && uvicorn app.main:app --reload
# Terminal 2: cd frontend && npm run devMIT License - see LICENSE for details.
Built with 💜 by Kylehub