Skip to main content

Security and Quality

Security in this repo is a combination of runtime controls, infrastructure guardrails, and development workflow discipline.

The important point for contributors is this:

quality is not one tool. It is a chain of controls across application code, identity, deployment, and review.

Security Model Today​

Identity boundary​

The current architecture direction is:

  • Authentik is the identity provider
  • Supabase remains a data and authorization layer
  • app and admin clients do not become their own identity source of truth

This is a good separation because it keeps authentication ownership explicit.

For the current login-entry modes, social-login modes, and redirect controls, see Authentication and Session Flow.

API input handling​

The NestJS API already enables important validation defaults:

  • ValidationPipe
  • whitelist: true
  • transform: true
  • forbidNonWhitelisted: true

Those defaults reduce common input-shape mistakes and accidental over-posting.

Secrets and environment handling​

The repo also has infra-first environment handling:

  • environment-first deploy scripts
  • Secrets Manager integration in the identity stack
  • stage-aware configuration
  • deployment guards around stack types and pipeline reconciliation

Quality Controls In The Repo​

Static quality controls​

  • TypeScript across apps and packages
  • ESLint
  • Prettier
  • lint-staged
  • Husky pre-commit and pre-push hooks
  • eslint-plugin-security

Validation and release controls​

  • version validation scripts
  • secret scanning hooks
  • Turbo-based build, lint, type-check, and test orchestration
  • branch and pipeline safety scripts in packages/infra/scripts

Documentation and API quality​

  • Docusaurus docs are built from the same monorepo
  • the API exposes Swagger / OpenAPI docs
  • operational docs already exist in-repo for identity and infra decisions

Contributor Checklist​

When changing code in this repo, contributors should actively check:

  1. Input validation: does the endpoint or function strictly validate shape and type?
  2. Secret handling: is any secret leaking into client-side code, logs, or committed files?
  3. Auth boundary: is the change respecting the existing identity model instead of bypassing it?
  4. Stage awareness: does the change behave correctly in dev, production, and preview/testnet contexts?
  5. Infra safety: could the change cause destructive deployment side effects?
  6. Docs impact: does the public or operator-facing behavior need documentation updates?

Current Strengths​

These are already positive signals in the repository:

  • clear separation between public app, admin, docs, API, and infra
  • identity treated as a dedicated subsystem
  • infrastructure managed as code
  • release automation present in the monorepo
  • shared packages used instead of uncontrolled duplication
  • public docs site already part of the platform

Known Gaps And Risks​

The current architecture is solid enough to grow, but several gaps are still visible.

1. API security posture needs tightening​

Examples:

  • CORS is currently permissive in the Nest bootstrap
  • the custom API surface is still early and needs broader policy hardening
  • more endpoint-level auth and authorization coverage will be needed as the API grows

2. Test coverage is uneven​

Some parts of the repo have testing patterns, but coverage is not yet equally mature across every app and service.

3. Observability is still light​

The AWS runtime includes logs, but the platform still needs a richer operational story around:

  • structured tracing
  • service-level dashboards
  • alerting
  • deployment-level health visibility

4. Security automation can go further​

Good foundations exist, but the repo would benefit from more formalized:

  • dependency review
  • SBOM generation
  • artifact provenance
  • container and image scanning where relevant
  • threat modeling for new services

5. Public architectural explanation is still catching up​

This new section improves that situation, but architecture notes still need to keep pace with implementation.

Linting And Security Workflow​

For day-to-day engineering, a practical baseline is:

pnpm lint
pnpm type-check
pnpm test
pnpm --filter @alternun/api run build
pnpm --filter alternun-docs run build

If a change touches infrastructure or identity, contributors should also inspect the relevant packages/infra scripts and settings before assuming a deploy is safe.

Public Security Posture Statement​

Alternun is building in public, but it should not confuse transparency with loose controls.

The target posture is:

  • public architecture visibility
  • private secret handling
  • explicit trust boundaries
  • reproducible deployments
  • conservative operational defaults

That is the standard contributors should aim to maintain.