qeet-id

module
v0.0.0-...-76e0cc6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2026 License: MIT

README ΒΆ

πŸ” Qeet ID

Passkeys-first identity platform β€” the open-source Auth0 / Okta alternative

Developer-first Β· Enterprise-ready Β· Self-hostable Β· India-native


CI Go 1.25 OpenAPI 3.1

πŸš€ Quickstart Β· πŸ— Architecture Β· 🧩 Features Β· πŸ“¦ SDKs Β· 🚒 Deploy Β· πŸ“š Docs


πŸ— Single deployable πŸ”Œ ~200 API routes πŸ–₯ 3 React frontends πŸ“¦ 3 SDKs πŸ—„ 81 migrations
Go modular monolith 5 OpenAPI 3.1 specs Admin Β· Login Β· Website TS (Node) Β· React Β· Go 6 Postgres schemas

Status β€” pre-1.0, feature-complete for the July 2026 GA. Every capability below has working Go code (no stubs). Remaining work is external-ops hardening (KMS BYOK, conformance, deliverability, pentest) + i18n/a11y polish.


✨ Why Qeet ID

πŸ”‘ Passkeys-first Native WebAuthn β€” passwordless, magic links, OTP, social
🏒 Enterprise SSO SAML 2.0 SP and IdP, SCIM 2.0, LDAP / Active Directory
πŸ›‘οΈ Fine-grained authz RBAC + ABAC + ReBAC (Zanzibar-style /check)
πŸ€– AI-agent identity MCP introspection, token exchange (RFC 8693), W3C Verifiable Credentials
πŸ“œ Tamper-evident audit SHA-256 hash-chained log with a /verify integrity walk
πŸ’³ Billing built-in Multi-currency, Stripe (global) + Razorpay (India)
🌍 Open & self-hostable MIT-licensed, single Go binary β€” no vendor lock-in
🧰 Batteries included 3 frontends + 3 first-party SDKs + hosted login
πŸ“Š Full comparison vs Auth0 Β· Okta Β· Clerk Β· Supabase Β· better-auth
Capability Qeet ID Auth0 Okta Clerk Supabase better-auth
Open source (MIT) βœ… ❌ ❌ ❌ βœ… βœ…
Fully self-hostable βœ… ❌ ❌ ❌ βœ… βœ…
Passkeys / WebAuthn βœ… Native 🟑 Add-on 🟑 Add-on βœ… βœ… βœ…
SAML 2.0 SP and IdP βœ… Both 🟑 SP only βœ… 🟑 Ent. ❌ ❌
SCIM 2.0 provisioning βœ… βœ… βœ… ❌ ❌ ❌
ReBAC (Zanzibar-style) βœ… ❌ 🟑 OPA ❌ ❌ ❌
AI-agent identity (MCP) βœ… ❌ ❌ ❌ ❌ ❌
Verifiable Credentials βœ… ❌ ❌ ❌ ❌ ❌
Hash-chained audit βœ… ❌ ❌ ❌ ❌ ❌
SIEM streaming βœ… 🟑 Export βœ… ❌ ❌ ❌
Multi-currency billing βœ… ❌ ❌ ❌ ❌ ❌

πŸ— Architecture

A single deployable Go module β€” five bounded contexts over shared infrastructure, with boundaries enforced by build-time fitness tests, not convention.

flowchart TB
    clients["End users Β· Admins Β· Developers<br/>Browsers Β· SDKs Β· AI agents Β· service accounts"]

    subgraph frontends["Frontends"]
        direction LR
        login["Hosted Login<br/>Next.js Β· :3003"]
        console["Admin Console<br/>Vite + TanStack Β· :3002"]
        website["Website<br/>Next.js Β· :3001"]
    end

    subgraph api["Go API Β· chi v5 Β· cmd/server Β· :4001"]
        mw["Middleware: RequestID β†’ RealIP β†’ Recoverer β†’ SecurityHeaders<br/>β†’ AccessLog β†’ Tracing β†’ Metrics β†’ CSRF β†’ CORS β†’ authz"]
        subgraph domains["domains/ β€” five bounded contexts"]
            direction LR
            identity["identity<br/>users Β· orgs<br/>groups Β· invitations"]
            access["access<br/>auth Β· mfa<br/>rbac Β· rebac"]
            federation["federation<br/>oidc Β· saml<br/>scim Β· ldap"]
            developer["developer<br/>api-keys<br/>agents Β· vc"]
            operations["operations<br/>audit Β· billing<br/>siem Β· analytics"]
        end
        platform["platform/ β€” api Β· database Β· security Β· cache Β· events<br/>observability Β· messaging Β· config"]
        mw --> domains --> platform
    end

    pg[("PostgreSQL 16 Β· pgx v5<br/>6 schemas Β· multi-tenant by tenant_id<br/>optional Redis rate-limit")]
    egress["Egress Β· SMTP Β· HIBP Β· Webhooks<br/>SIEM stream Β· Payments<br/>(transactional outbox)"]

    clients --> login & console & website
    login --> mw
    console --> mw
    website --> mw
    platform --> pg
    platform --> egress

Engineering invariants β€” the things that make it enterprise-grade:

  • 🧱 Modular-monolith boundaries β€” platform/* never imports domains/* (arch test rules R1/R2 fail CI)
  • πŸ“˜ 100% API documentation β€” chi.Walk coverage gate; an undocumented route fails CI
  • 🏘️ Multi-tenant isolation β€” every table carries tenant_id; 6 schemas, no cross-schema joins
  • πŸ“€ Reliable eventing β€” transactional outbox (business + audit + event in one tx) + DLQ
  • πŸ” Asymmetric tokens β€” ES256 / ECDSA P-256, JWKS-published, kid = RFC 7638 thumbprint

Deep dives: docs/architecture/ Β· Decision records: docs/adr/


🧩 Features

The full v1 surface is built and working β€” every endpoint implemented (no stubs), every βœ… admin screen wired to a live API, marketing site + hosted login complete.

  • πŸ”‘ Authentication β€” email+password (Argon2id), passkeys/WebAuthn, magic links, email/SMS OTP, social, MFA (TOTP + recovery codes), HIBP breach check
  • 🏒 Enterprise SSO β€” OIDC/OAuth 2.0 provider, Device grant (RFC 8628), Token Exchange (RFC 8693), SAML SP+IdP, SCIM 2.0, LDAP/AD
  • πŸ›‘οΈ Authorization β€” RBAC, ABAC policies, ReBAC (Zanzibar relation tuples + recursive /check), IP allow/deny, Auth Hooks
  • πŸ€– Developer & AI-agent β€” scoped API keys, M2M service accounts, secrets + Token Vault (AES-256-GCM), HMAC webhooks, AI-agent identity, MCP introspection, W3C Verifiable Credentials
  • πŸ‘₯ Identity & workspace β€” multi-tenant orgs, users/groups/invitations, domain verification, per-tenant branding + email templates
  • πŸ“œ Compliance & billing β€” hash-chained audit, GDPR erasure + export, data retention, SIEM streaming, multi-currency billing (Stripe + Razorpay)
πŸ“‹ See every feature, with status & notes

πŸ”‘ Authentication & sessions β€” email+password (Argon2id, lockout, enumeration-safe) Β· passkeys/WebAuthn (FIDO2, cross-device), including passkey-first signup (a passkey founds the account directly β€” no password required) Β· magic links Β· email/SMS OTP Β· TOTP + 8 recovery codes Β· adaptive MFA (bot-score risk engine plus two additive, off-by-default signals: impossible travel and device reputation) Β· session mgmt (refresh rotation + theft detection, a 10-minute access-token TTL, refresh now also rejects a suspended/deleted user) Β· CAEP/SSF-shaped revocation signals (session.revoked, token.claims_change) riding the existing webhook dispatcher Β· HIBP breach detection Β· password reset.

🏒 Enterprise SSO & provisioning β€” OIDC/OAuth 2.0 provider (discovery, JWKS, PKCE, /userinfo, refresh, revoke, introspect, logout) Β· Device Authorization Grant (RFC 8628) Β· Token Exchange (RFC 8693, downscope + delegation) Β· CIBA backchannel auth Β· SAML 2.0 SP and IdP Β· SCIM 2.0 (users + groups + PatchOp) Β· LDAP/AD Β· social login Β· account linking Β· SSO test-connection Β· self-serve Admin Portal (a capability-scoped, time-limited link lets a tenant's own IT admin configure SAML/SCIM directly β€” no Qeet ID account, no console login).

πŸ›‘οΈ Authorization β€” RBAC (?explain=true grant-path trace) Β· per-tenant policy (IP allow/deny CIDR, password/login-method rules) Β· ABAC β€” general attribute-condition engine (all/any/not trees over subject/resource/context attributes, 13 operators, deny-overrides, explainable POST /evaluate) Β· ReBAC (relation_tuples, recursive /check with cycle guard, ?explain=true grant-path trace) Β· Auth Hooks/Actions (post-login allow/deny + custom-claim injection, HMAC-signed).

πŸ€– Developer & AI-agent platform β€” scoped API keys (qk_, hashed, audited) Β· service accounts (client_credentials) Β· secrets vault (AES-256-GCM, scoped vault:<name>) Β· Token Vault (per-tenant encrypted 3rd-party OAuth tokens β€” Slack/GitHub/Google/custom β€” with auto-refresh; callers never see the raw refresh token; API-only, no console UI) Β· HMAC webhooks (backoff retry with a dead-letter give-up state after maxDeliveryAttempts) Β· Agent Governance β€” one named console section (/developer/agents), not scattered settings: ephemeral scoped revocable tokens (actor_type=agent), tenant-wide kill-switch, lifecycle state machine, a sponsor-transfer tool (search-select, previews affected count), and a Shadow-AI review queue (unreviewed OIDC clients holding machine grants) Β· Agent-as-Principal (actor_types_supported discovery metadata) Β· CIBA backchannel auth (poll mode, API-only) Β· AuthZEN PDP/PEP (POST /tenants/{id}/access/v1/evaluation, standard facade over RBAC/ReBAC) Β· MCP introspection Β· token delegation (RFC 8693 act claim) Β· W3C JWT-VC (issue/verify/revoke) Β· analytics Β· SIEM streaming.

πŸ‘₯ Identity & workspace β€” multi-tenant orgs (isolated, branded, custom domains) Β· users (CRUD, sessions, recycle bin, bulk CSV/NDJSON import, IdP migration import from Auth0/Cognito/Azure AD B2C) Β· nested groups (SCIM sync) Β· invitations Β· domain verification (DNS TXT) Β· per-tenant email templates Β· org switcher + branding preview.

πŸ“œ Compliance & billing β€” SHA-256 hash-chained audit (/verify) Β· audit intelligence (behavioral-baseline anomaly detection over the audit log β€” first-time action types, unusual hours, new IPs β€” with per-tenant tuning) Β· GDPR erasure + grace-period purge Β· GDPR data export (async, profile/sessions/passkeys/roles/MFA status) Β· retention auto-purge Β· SOC 2 / ISO 27001 evidence generation (per-framework control catalog evaluated against live tenant state β€” MFA/password policy, audit hash-chain, retention, KMS/secrets, RBAC, IP rules, SIEM β€” persisted as pass/fail/na evidence runs with console + JSON export) Β· multi-currency billing (ISO-4217) Β· card payments via Stripe (global) + Razorpay (India), webhook-verified (env-gated).

⏳ Planned / remaining

πŸ›  Product roadmap

  • i18n catalogs + WCAG 2.2 AA across remaining legacy screens
  • Ops hardening (not code): AWS KMS BYOK, OpenID conformance run, deliverability (SPF/DKIM/DMARC), RDS PITR, external pentest

πŸ€– AI-agent identity & governance (surfaced by the competitive-research product-manager agent β€” 🟠 high Β· 🟑 medium Β· 🟒 later; agent lifecycle/sponsor model, Agent-as-Principal, Shadow-AI discovery, CIBA, AuthZEN PDP/PEP, and CAEP/SSF-shaped revocation signals already ship)

  • 🟒 Device-bound agent credentials β€” TPM/enclave-attested keys (RFC 8705 mTLS)

🧰 Developer experience

  • 🟑 qeetid management CLI (--json for CI/agents) Β· 🟑 FGA Permissions Index (low-latency RAG authz) Β· 🟒 Rust SDK

All planned packages/surfaces are tracked in ROADMAP.md.


πŸš€ Quickstart

Prerequisites: Go β‰₯ 1.25 Β· Bun β‰₯ 1.3.14 Β· Docker Β· golang-migrate CLI

# 1. Clone
git clone https://github.com/qeetgroup/qeet-id && cd qeet-id

# 2. Install dependencies
go mod download
bun install

# 3. Copy env files
cp .env.example .env                                      # backend β€” DB_URL has a working local default
cp apps/console/.env.example apps/console/.env            # admin frontend
cp apps/login/.env.example apps/login/.env.local          # hosted login
cp apps/website/.env.example apps/website/.env.local      # marketing site

# 4. Start Postgres + apply migrations
make db-up migrate-up

# 5. Seed demo data (optional)
make seed

# 6. Start the backend
make dev

Frontend apps β€” each in its own terminal:

Command App URL
bun run --filter @qeet-id/console dev Admin console http://localhost:3002
bun run --filter @qeet-id/login dev Hosted login http://localhost:3003
bun run --filter @qeet-id/web dev Marketing site http://localhost:3001

Sanity check: curl localhost:4001/healthz Β· Demo login: saibabu@qeet.in / Password123!


πŸ“¦ SDKs

Three first-party SDKs β€” each maintained in its own repo under qeet-sdks/ β€” authenticate via Authorization: ApiKey + ES256/JWKS verification.

SDK Install
TypeScript (server/Node) npm install @qeet-id/node
React (<SignIn/>, <UserButton/>, <OrgSwitcher/>, <SignUp/>, <CreateOrganization/>, <OrganizationProfile/>, <UserProfile/> + hooks) npm install @qeet-id/react
Go go get github.com/qeetgroup/qeet-id-go
import { useSession, UserButton } from '@qeet-id/react';

export function Navbar() {
  const { user } = useSession();
  return <UserButton />;   // sign-in / sign-out / profile, zero config
}

🚒 Deployment

Ships as a distroless nonroot container; migrations run as a separate one-shot image before the app starts. Both build with the repo root as context.

flowchart LR
    net(["Internet"]) --> caddy
    subgraph ec2["EC2 instance Β· ap-south-2"]
        caddy["Caddy Β· auto-TLS"] --> app["qeet-id app<br/>distroless nonroot container"]
        app --> redis[("Redis<br/>rate-limit")]
    end
    app --> rds[("AWS RDS<br/>Postgres 16")]

Release image is cosign-signed with SBOM + provenance: ghcr.io/qeetgroup/qeet-id. Migrations run automatically on startup β€” no separate image needed.

Kubernetes (Helm), Terraform (RDS/ECR/KMS), kustomize overlays, and Prometheus/Grafana/OTel configs live in deploy/base/ + deploy/environments/ for when you're ready to scale to Kubernetes.


πŸ§ͺ Testing & quality

Every push runs the full gate in CI; the same checks are reproducible locally.

make test                            # backend unit + arch-fitness tests (go test ./...)
go test -tags integration ./tests/integration/...   # real Postgres via testcontainers (needs Docker)
make lint                            # go vet β€” CI additionally runs golangci-lint
bun run lint && bun run typecheck && bun run build && bun run test   # frontend (Bun workspaces, all 3 apps)

CI gates include architecture fitness (R1/R2), 100% OpenAPI coverage, golangci-lint, govulncheck, and gitleaks. Coverage-floor enforcement, Spectral spec-lint, and Postman/Newman contract tests are not wired yet β€” tracked in ROADMAP.md. tests/performance/ has k6 load scripts (auth, user CRUD, RBAC/ReBAC /check) for manual local runs β€” not wired into CI, no published numbers yet.


πŸ›  Tech stack

  • Backend β€” Go 1.25 Β· chi v5 Β· pgx v5 (hand-written SQL, no ORM β€” ADR-0003) Β· ES256 JWTs + JWKS rotation Β· Argon2id Β· AES-256-GCM vault Β· transactional outbox + DLQ
  • Frontend β€” React 19 Β· admin on Vite + TanStack Β· web/login on Next.js 16 Β· Tailwind 4 + the shared @qeetrix/* design system Β· Bun workspaces (bun run --filter) Β· Biome (lint + format) Β· TypeScript 7 (Next.js apps pinned to 6)
  • Data β€” PostgreSQL (tenant/user/auth/rbac/audit/platform schemas), multi-tenant by tenant_id Β· optional Redis for cross-replica rate limiting

πŸ“š Documentation

Topic Where
πŸ— Architecture deep-dives + ADRs docs/architecture/ Β· docs/adr/
πŸ”’ Security & compliance docs/security/ Β· docs/compliance/
πŸš€ Onboarding & dev workflow docs/onboarding/
πŸ”Œ API spec + Postman api/openapi/ Β· api/postman/
πŸ€– For AI assistants CLAUDE.md β€” layout, commands, gotchas
πŸ“– End-user docs docs.qeet.in

🀝 Contributing Β· πŸ”’ Security Β· πŸ“„ License

Contributions welcome β€” see CONTRIBUTING.md and the issue templates in .github/. Found a vulnerability? Don't open a public issue β€” follow SECURITY.md. CI runs gitleaks on every push. Licensed under MIT.

Directories ΒΆ

Path Synopsis
api
copilot
Package copilotmanifest exposes the canonical Qeet ID copilot tool manifest as an embedded byte slice.
Package copilotmanifest exposes the canonical Qeet ID copilot tool manifest as an embedded byte slice.
cmd
migrate command
Command migrate is a thin wrapper around the golang-migrate CLI that reads the database URL from the environment (same as the server) and provides structured exit codes for use in Kubernetes init containers and Docker Compose one-shots.
Command migrate is a thin wrapper around the golang-migrate CLI that reads the database URL from the environment (same as the server) and provides structured exit codes for use in Kubernetes init containers and Docker Compose one-shots.
scheduler command
Command scheduler runs the Qeet ID scheduled maintenance jobs.
Command scheduler runs the Qeet ID scheduled maintenance jobs.
seed command
Command seed populates the database with a realistic, production-shaped set of workspaces so the admin UI has data to browse.
Command seed populates the database with a realistic, production-shaped set of workspaces so the admin UI has data to browse.
server command
worker command
Command worker runs the Qeet ID background worker process.
Command worker runs the Qeet ID background worker process.
domains
access/authentication
Package auth handles login, refresh, logout, and session storage.
Package auth handles login, refresh, logout, and session storage.
access/authorization/abac
Package abac is the attribute-based access control (ABAC) engine for Qeet ID.
Package abac is the attribute-based access control (ABAC) engine for Qeet ID.
access/authorization/authpolicy
Package authpolicy stores a tenant's authentication policy β€” password complexity rules and which login methods are permitted β€” and enforces the password rules on tenant-scoped password changes.
Package authpolicy stores a tenant's authentication policy β€” password complexity rules and which login methods are permitted β€” and enforces the password rules on tenant-scoped password changes.
access/authorization/authzen
Package authzen implements the OpenID AuthZEN standard's core Policy Decision Point API β€” POST /access/v1/evaluation β€” as a thin, spec-shaped facade over Qeet ID's existing authorization engines (RBAC and ReBAC).
Package authzen implements the OpenID AuthZEN standard's core Policy Decision Point API β€” POST /access/v1/evaluation β€” as a thin, spec-shaped facade over Qeet ID's existing authorization engines (RBAC and ReBAC).
access/authorization/policy
Package policy stores per-tenant security policy and offers an IP allow/deny middleware.
Package policy stores per-tenant security policy and offers an IP allow/deny middleware.
access/authorization/rbac
Package rbac models permissions, per-tenant roles, role->permission bindings, and user assignments.
Package rbac models permissions, per-tenant roles, role->permission bindings, and user assignments.
access/authorization/rebac
Package rebac is fine-grained, relationship-based authorization (ReBAC), a Zanzibar/OpenFGA-style subset: relationship tuples plus a recursive Check.
Package rebac is fine-grained, relationship-based authorization (ReBAC), a Zanzibar/OpenFGA-style subset: relationship tuples plus a recursive Check.
access/mfa
Package mfa implements TOTP enrollment and verification plus a small set of recovery codes.
Package mfa implements TOTP enrollment and verification plus a small set of recovery codes.
access/passkeys
Package passkey implements WebAuthn passkey registration and login on top of go-webauthn.
Package passkey implements WebAuthn passkey registration and login on top of go-webauthn.
access/recovery
Package recovery handles forgot-password and magic-link login.
Package recovery handles forgot-password and magic-link login.
access/risk/ipallow
Package ipallow manages per-tenant IP allow/deny rules (CIDR) and evaluates an address against them.
Package ipallow manages per-tenant IP allow/deny rules (CIDR) and evaluates an address against them.
access/threat-detection/bot
Package bot scores incoming auth requests for bot-likeness and records the verdicts surfaced in the admin "Threats β†’ Bots" screen.
Package bot scores incoming auth requests for bot-likeness and records the verdicts surfaced in the admin "Threats β†’ Bots" screen.
access/threat-detection/risk
Package risk aggregates bot-detection, impossible-travel, and device-reputation signals into a per-request risk level.
Package risk aggregates bot-detection, impossible-travel, and device-reputation signals into a per-request risk level.
access/threat-detection/threat
Package threat records and surfaces security anomalies (the admin "Threats β†’ Anomalies" screen).
Package threat records and surfaces security anomalies (the admin "Threats β†’ Anomalies" screen).
developer/agents
Package agent provides first-class AI-agent identities: non-human principals that authenticate with a secret and receive SHORT-LIVED, scoped access tokens marked actor_type="agent" (plus an agent_id claim).
Package agent provides first-class AI-agent identities: non-human principals that authenticate with a secret and receive SHORT-LIVED, scoped access tokens marked actor_type="agent" (plus an agent_id claim).
developer/api-keys
Package apikey issues long-lived bearer tokens for programmatic access.
Package apikey issues long-lived bearer tokens for programmatic access.
developer/auth-hooks
Package authhook implements synchronous Auth Actions/Hooks: a tenant plugs a policy endpoint into the login flow.
Package authhook implements synchronous Auth Actions/Hooks: a tenant plugs a policy endpoint into the login flow.
developer/credentials/secrets
Package secret is a per-tenant secrets vault.
Package secret is a per-tenant secrets vault.
developer/credentials/tokenvault
Package tokenvault is a per-tenant encrypted store for third-party OAuth tokens (Slack, GitHub, Google, or any custom OAuth2 provider an admin registers).
Package tokenvault is a per-tenant encrypted store for third-party OAuth tokens (Slack, GitHub, Google, or any custom OAuth2 provider an admin registers).
developer/credentials/vc
Package vc issues and verifies W3C Verifiable Credentials in the JWT serialization (JWT-VC).
Package vc issues and verifies W3C Verifiable Credentials in the JWT serialization (JWT-VC).
developer/service-accounts
Package principal manages OAuth-style service principals β€” non-human callers that authenticate via client_credentials grant and receive a short-lived service JWT scoped to a single tenant.
Package principal manages OAuth-style service principals β€” non-human callers that authenticate via client_credentials grant and receive a short-lived service JWT scoped to a single tenant.
developer/webhooks
Package webhook lets tenants subscribe to domain events and receive a signed POST.
Package webhook lets tenants subscribe to domain events and receive a signed POST.
federation/adminportal
Package adminportal implements a WorkOS-style "Admin Portal": a unique, time-limited, capability-scoped link a tenant admin can hand to their own IT admin β€” someone with no Qeet ID account and no console credentials at all β€” so that person can configure the tenant's SAML connection and/or rotate its SCIM provisioning token directly, without ever logging in.
Package adminportal implements a WorkOS-style "Admin Portal": a unique, time-limited, capability-scoped link a tenant admin can hand to their own IT admin β€” someone with no Qeet ID account and no console credentials at all β€” so that person can configure the tenant's SAML connection and/or rotate its SCIM provisioning token directly, without ever logging in.
federation/ldap
Package ldap bridges on-prem Active Directory / LDAPv3 directories.
Package ldap bridges on-prem Active Directory / LDAPv3 directories.
federation/oidc
Package oidc implements the OpenID Connect provider role for Qeet.
Package oidc implements the OpenID Connect provider role for Qeet.
federation/saml
IdP side of SAML 2.0: Qeet ID acting as an identity **provider** (an SSO source) for downstream Service Providers.
IdP side of SAML 2.0: Qeet ID acting as an identity **provider** (an SSO source) for downstream Service Providers.
federation/scim
SCIM 2.0 Groups (RFC 7643 Β§4.2, RFC 7644).
SCIM 2.0 Groups (RFC 7643 Β§4.2, RFC 7644).
federation/social
Package social manages tenant-configured external identity providers (Google, Microsoft, Okta, ...) and the externally-issued identity rows that link to a Qeet user.
Package social manages tenant-configured external identity providers (Google, Microsoft, Okta, ...) and the externally-issued identity rows that link to a Qeet user.
identity/domains
Package domainverify lets a tenant claim and prove ownership of an email domain (B2B SSO onboarding).
Package domainverify lets a tenant claim and prove ownership of an email domain (B2B SSO onboarding).
identity/groups
Package group provides org/team hierarchy inside a tenant.
Package group provides org/team hierarchy inside a tenant.
identity/invitations
Package invite lets a tenant admin invite an email address into a tenant with a pre-assigned role.
Package invite lets a tenant admin invite an email address into a tenant with a pre-assigned role.
identity/organizations/branding
Package branding stores per-tenant theming and custom-domain settings.
Package branding stores per-tenant theming and custom-domain settings.
identity/users
IdP migration adapters: teams leaving Auth0, AWS Cognito, or Azure AD B2C can feed that vendor's own user-export file straight into the bulk-import pipeline (runBulkImport in bulk.go) instead of hand-converting it to the generic BulkUserInput shape first.
IdP migration adapters: teams leaving Auth0, AWS Cognito, or Azure AD B2C can feed that vendor's own user-export file straight into the bulk-import pipeline (runBulkImport in bulk.go) instead of hand-converting it to the generic BulkUserInput shape first.
identity/verification
Package verification handles "send-a-code, prove-you-own-it" flows for email and phone.
Package verification handles "send-a-code, prove-you-own-it" flows for email and phone.
operations/activity
Package activity provides the Live Activity backend: a real-time SSE event stream and a cursor-paginated history endpoint sourced from two places:
Package activity provides the Live Activity backend: a real-time SSE event stream and a cursor-paginated history endpoint sourced from two places:
operations/analytics
Package analytics powers the admin dashboard's KPI cards and charts.
Package analytics powers the admin dashboard's KPI cards and charts.
operations/audit
Package audit records actor-visible mutations to audit.events.
Package audit records actor-visible mutations to audit.events.
operations/audit/anomaly
Package anomaly scores the existing hash-chained audit.events log against a per-(tenant, actor) behavioral baseline, flagging deviations β€” a first-time action type, an unusual hour, a brand-new IP β€” for admin review.
Package anomaly scores the existing hash-chained audit.events log against a per-(tenant, actor) behavioral baseline, flagging deviations β€” a first-time action type, an unusual hour, a brand-new IP β€” for admin review.
operations/billing
Package billing is an internal (no external processor) subscription model: a platform-managed plan catalogue with per-currency pricing, one subscription per tenant in a chosen currency, and internally-generated invoices.
Package billing is an internal (no external processor) subscription model: a platform-managed plan catalogue with per-currency pricing, one subscription per tenant in a chosen currency, and internally-generated invoices.
operations/compliance
Evidence generation for SOC 2 and ISO 27001 compliance frameworks.
Evidence generation for SOC 2 and ISO 27001 compliance frameworks.
operations/copilot
Package copilot is the AI copilot inference service for the admin console.
Package copilot is the AI copilot inference service for the admin console.
operations/email-templates
Package emailtemplate manages per-tenant transactional email templates.
Package emailtemplate manages per-tenant transactional email templates.
operations/notifications
Package notification is the in-app notification inbox shown in the admin header bell.
Package notification is the in-app notification inbox shown in the admin header bell.
operations/ratelimits
Package ratelimits exposes per-tenant rate limit overrides over HTTP.
Package ratelimits exposes per-tenant rate limit overrides over HTTP.
operations/retention
Package retention enforces per-tenant data-retention policy.
Package retention enforces per-tenant data-retention policy.
operations/search
Package search is the universal cross-resource search service for the Qeet ID admin console.
Package search is the universal cross-resource search service for the Qeet ID admin console.
operations/siem
Package siem streams a tenant's audit events to an external collector (Splunk HEC, Datadog logs, or a generic HTTP endpoint).
Package siem streams a tenant's audit events to an external collector (Splunk HEC, Datadog logs, or a generic HTTP endpoint).
platform
ai
Package ai defines the provider-neutral inference abstraction for the AI copilot feature.
Package ai defines the provider-neutral inference abstraction for the AI copilot feature.
ai/anthropic
Package anthropic is a thin streaming client for the Anthropic Messages API.
Package anthropic is a thin streaming client for the Anthropic Messages API.
ai/openai
Package openai is a streaming OpenAI Chat Completions client that implements ai.Provider.
Package openai is a streaming OpenAI Chat Completions client that implements ai.Provider.
api/rest/codes
Package codes generates short numeric codes (for OTP-by-email) and long random URL-safe tokens (for password-reset and magic links).
Package codes generates short numeric codes (for OTP-by-email) and long random URL-safe tokens (for password-reset and magic links).
api/rest/errs
Package errs defines the canonical error vocabulary for qeet-id.
Package errs defines the canonical error vocabulary for qeet-id.
api/rest/httpx
Package httpx provides reusable HTTP middleware and response helpers.
Package httpx provides reusable HTTP middleware and response helpers.
api/rest/paging
Package paging holds shared helpers for opaque cursor-based pagination.
Package paging holds shared helpers for opaque cursor-based pagination.
cache/ratelimit
Package ratelimit ships a token-bucket limiter keyed by string, used for in-process protection of unauth endpoints (login, magic link) and per-tenant / per-user / per-api-key throttling on authenticated endpoints.
Package ratelimit ships a token-bucket limiter keyed by string, used for in-process protection of unauth endpoints (login, magic link) and per-tenant / per-user / per-api-key throttling on authenticated endpoints.
database/postgres
Package db owns the single pgx pool shared by every module.
Package db owns the single pgx pool shared by every module.
database/postgres/dbutil
Package dbutil holds small helpers shared by repositories β€” JSONB decoding and dynamic UPDATE assembly β€” so each domain doesn't re-implement them.
Package dbutil holds small helpers shared by repositories β€” JSONB decoding and dynamic UPDATE assembly β€” so each domain doesn't re-implement them.
database/postgres/pgxerr
Package pgxerr translates PostgreSQL driver errors into domain errs values so repositories don't each hand-roll pgconn error-code checks.
Package pgxerr translates PostgreSQL driver errors into domain errs values so repositories don't each hand-roll pgconn error-code checks.
database/rlsctx
Package rlsctx carries the tenant scope for Postgres Row-Level Security through the request context.
Package rlsctx carries the tenant scope for Postgres Row-Level Security through the request context.
events/outbox
Package outbox is the shared transactional outbox helper.
Package outbox is the shared transactional outbox helper.
messaging/notifier
Package notifier delivers user-facing notifications (email, SMS).
Package notifier delivers user-facing notifications (email, SMS).
observability/buildinfo
Package buildinfo exposes the binary's build metadata.
Package buildinfo exposes the binary's build metadata.
observability/health
Package health exposes Kubernetes-shaped liveness and readiness probes.
Package health exposes Kubernetes-shaped liveness and readiness probes.
observability/logging
Package logger provides a coloured slog handler for local development.
Package logger provides a coloured slog handler for local development.
observability/metrics
Package metrics exposes Prometheus instrumentation: an HTTP middleware that records request count + latency (labelled by the chi route pattern, not the raw path, to keep cardinality bounded) and a /metrics handler.
Package metrics exposes Prometheus instrumentation: an HTTP middleware that records request count + latency (labelled by the chi route pattern, not the raw path, to keep cardinality bounded) and a /metrics handler.
observability/tracing
Package tracing wires OpenTelemetry distributed tracing for the service.
Package tracing wires OpenTelemetry distributed tracing for the service.
security/encryption
Package password hashes and verifies secrets with Argon2id β€” the modern, memory-hard default β€” while still verifying legacy bcrypt hashes so existing credentials keep working.
Package password hashes and verifies secrets with Argon2id β€” the modern, memory-hard default β€” while still verifying legacy bcrypt hashes so existing credentials keep working.
security/encryption/totp
Package totp implements TOTP (RFC 6238) with HMAC-SHA1 and 6-digit codes.
Package totp implements TOTP (RFC 6238) with HMAC-SHA1 and 6-digit codes.
security/hibp
Package hibp implements breached-password detection against the Have I Been Pwned "Pwned Passwords" range API using k-anonymity, so the plaintext password never leaves the process.
Package hibp implements breached-password detection against the Have I Been Pwned "Pwned Passwords" range API using k-anonymity, so the plaintext password never leaves the process.
security/tokens
Package tokens issues and verifies the access & ID JWTs and the opaque refresh tokens.
Package tokens issues and verifies the access & ID JWTs and the opaque refresh tokens.
workers
Package worker runs a set of named background workers with coordinated startup and graceful shutdown, so adding a worker is one Register call instead of hand-managing a WaitGroup.
Package worker runs a set of named background workers with coordinated startup and graceful shutdown, so adding a worker is one Register call instead of hand-managing a WaitGroup.
tests
tools
benchmarks/jwt_signing command
Benchmark JWT signing throughput.
Benchmark JWT signing throughput.
openapi-split command
Command openapi-split decomposes the canonical OpenAPI document into five self-contained, bounded-context specs under api/openapi/ β€” and merges them back into a single document for tooling (codegen) that wants one file.
Command openapi-split decomposes the canonical OpenAPI document into five self-contained, bounded-context specs under api/openapi/ β€” and merges them back into a single document for tooling (codegen) that wants one file.
qa/route-audit command
Command route-audit diffs every backend call-site in the console/login frontends against the authoritative OpenAPI route inventory, catching the bug class where a frontend calls a path the backend never registered (e.g.
Command route-audit diffs every backend call-site in the console/login frontends against the authoritative OpenAPI route inventory, catching the bug class where a frontend calls a path the backend never registered (e.g.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL