Project Tree

This document provides a high-level overview of the current AuthForge repository structure.

It is intended to help buyers and contributors quickly understand where the main application, documentation, infrastructure, database package, and shared layers are located.


auth-forge/
├─ .editorconfig
├─ .env.example
├─ .gitattributes
├─ .github/
│  └─ workflows/
│     └─ ci.yml
├─ .gitignore
├─ .husky/
│  ├─ commit-msg
│  └─ pre-commit
├─ .lintstagedrc.js
├─ .npmrc
├─ .nvmrc
├─ .prettierignore
├─ .prettierrc.js
├─ .vercelignore
├─ .vscode/
│  └─ settings.json
├─ CHANGELOG.md
├─ commitlint.config.cjs
├─ docs/
│  ├─ nav.ts
│  └─ site/
│     ├─ architecture.md
│     ├─ demo-mode.md
│     ├─ environment.md
│     ├─ getting-started.md
│     ├─ project-tree.md
│     ├─ security.md
│     ├─ ui-principles.md
│     └─ integration/
│        ├─ after-login.md
│        ├─ commands.md
│        ├─ development-setup.md
│        └─ email.md
├─ eslint.config.mjs
├─ infra/
│  └─ docker/
│     ├─ docker-compose.yml
│     └─ README.md
├─ internal/
│  └─ adr/
│     ├─ adr-001-project-boundaries.md
│     ├─ adr-002-rate-limiting.md
│     ├─ adr-003-authentication-error-policy.md
│     ├─ adr-004-form-validation-error-reset-policy.md
│     ├─ adr-005-internalization.md
│     ├─ adr-006-notifications-contract.md
│     ├─ adr-007-migration-strategy.md
│     ├─ adr-008-prisma-version-baseline-policy.md
│     ├─ adr-009-authentication-schema-stability-policy.md
│     ├─ adr-010-demo-mode-architecture-policy.md
│     ├─ adr-011-demo-db-cleanup-strategy.md
│     └─ adr-012-optional-git-hooks.md
├─ next-env.d.ts
├─ next.config.ts
├─ package.json
├─ packages/
│  └─ db/
│     ├─ package.json
│     ├─ prisma/
│     │  ├─ migrations/
│     │  │  ├─ 20260304140506_init/
│     │  │  │  └─ migration.sql
│     │  │  └─ migration_lock.toml
│     │  └─ schema.prisma
│     └─ src/
│        ├─ index.ts
│        └─ prisma.ts
├─ pnpm-lock.yaml
├─ pnpm-workspace.yaml
├─ README.md
├─ scripts/
│  └─ make-tree.mjs
├─ src/
│  ├─ app/
│  │  ├─ [locale]/
│  │  │  ├─ (auth)/
│  │  │  │  ├─ forgot-password/
│  │  │  │  │  └─ page.tsx
│  │  │  │  ├─ layout.module.css
│  │  │  │  ├─ layout.tsx
│  │  │  │  ├─ login/
│  │  │  │  │  └─ page.tsx
│  │  │  │  ├─ register/
│  │  │  │  │  └─ page.tsx
│  │  │  │  ├─ reset-password/
│  │  │  │  │  └─ page.tsx
│  │  │  │  └─ verify-email/
│  │  │  │     └─ page.tsx
│  │  │  ├─ layout.tsx
│  │  │  └─ page.tsx
│  │  ├─ api/
│  │  │  └─ auth/
│  │  │     ├─ forgot-password/
│  │  │     │  └─ route.ts
│  │  │     ├─ login/
│  │  │     │  └─ route.ts
│  │  │     ├─ logout/
│  │  │     │  └─ route.ts
│  │  │     ├─ register/
│  │  │     │  └─ route.ts
│  │  │     ├─ resend-verification/
│  │  │     │  └─ route.ts
│  │  │     ├─ reset-password/
│  │  │     │  └─ route.ts
│  │  │     └─ verify-email/
│  │  │        └─ route.ts
│  │  ├─ docs/
│  │  │  ├─ _lib/
│  │  │  │  └─ docs.ts
│  │  │  └─ [slug]/
│  │  │     └─ page.tsx
│  │  ├─ favicon.ico
│  │  ├─ globals.css
│  │  ├─ layout.tsx
│  │  └─ providers.tsx
│  ├─ entities/
│  │  └─ .gitkeep
│  ├─ features/
│  │  └─ auth/
│  │     ├─ actions/
│  │     │  └─ logout.ts
│  │     ├─ api/
│  │     │  └─ auth.api.ts
│  │     ├─ config/
│  │     │  └─ auth.routes.ts
│  │     ├─ email/
│  │     │  ├─ email.provider.ts
│  │     │  ├─ email.types.ts
│  │     │  └─ providers/
│  │     │     ├─ demo.provider.ts
│  │     │     └─ resend.provider.ts
│  │     ├─ lib/
│  │     │  ├─ checkPasswordPwned.ts
│  │     │  ├─ getPasswordStrength.ts
│  │     │  └─ mapBackendError.ts
│  │     ├─ model/
│  │     │  ├─ auth.errors.ts
│  │     │  ├─ auth.service.ts
│  │     │  ├─ auth.session.ts
│  │     │  ├─ auth.tokens.ts
│  │     │  ├─ auth.types.ts
│  │     │  ├─ email.schema.ts
│  │     │  ├─ forgot-password.schema.ts
│  │     │  ├─ login.schema.ts
│  │     │  ├─ password.schema.ts
│  │     │  ├─ register.schema.ts
│  │     │  ├─ reset-password.schema.ts
│  │     │  └─ reset-password.server.schema.ts
│  │     ├─ public.ts
│  │     ├─ server.ts
│  │     └─ ui/
│  │        ├─ ForgotPasswordForm/
│  │        │  ├─ ForgotPasswordForm.module.css
│  │        │  └─ ForgotPasswordForm.tsx
│  │        ├─ hooks/
│  │        │  ├─ useForgotPasswordForm.ts
│  │        │  ├─ useLoginForm.ts
│  │        │  ├─ useRegisterForm.ts
│  │        │  └─ useResetPasswordForm.ts
│  │        ├─ LoginForm/
│  │        │  ├─ LoginForm.module.css
│  │        │  └─ LoginForm.tsx
│  │        ├─ PasswordStrengthBar/
│  │        │  ├─ PasswordStrengthBar.module.css
│  │        │  └─ PasswordStrengthBar.tsx
│  │        ├─ RegisterForm/
│  │        │  ├─ RegisterForm.module.css
│  │        │  └─ RegisterForm.tsx
│  │        └─ ResetPasswordForm/
│  │           ├─ ResetPasswordForm.module.css
│  │           └─ ResetPasswordForm.tsx
│  ├─ proxy.ts
│  └─ shared/
│     ├─ api/
│     │  └─ apiFetch.ts
│     ├─ config/
│     │  ├─ auth.constants.ts
│     │  ├─ demo.ts
│     │  ├─ env.ts
│     │  └─ fonts.ts
│     ├─ i18n/
│     │  ├─ config.ts
│     │  ├─ dict/
│     │  │  └─ en.ts
│     │  ├─ getDictionary.ts
│     │  └─ middleware.ts
│     ├─ lib/
│     │  └─ notify/
│     │     └─ notify.ts
│     ├─ security/
│     │  └─ rate-limit.ts
│     ├─ types/
│     │  └─ next-locale.ts
│     └─ ui/
│        ├─ AuthHeader/
│        │  ├─ AuthHeader.module.css
│        │  └─ AuthHeader.tsx
│        ├─ Button/
│        │  ├─ Button.module.css
│        │  └─ Button.tsx
│        ├─ DemoBackLink/
│        │  ├─ DemoBackLink.module.css
│        │  └─ DemoBackLink.tsx
│        ├─ Form/
│        │  └─ Form.tsx
│        ├─ FormError/
│        │  ├─ FormError.module.css
│        │  └─ FormError.tsx
│        ├─ FormFooter/
│        │  ├─ FormFooter.module.css
│        │  └─ FormFooter.tsx
│        ├─ FormLink/
│        │  ├─ FormLink.module.css
│        │  └─ FormLink.tsx
│        ├─ Input/
│        │  ├─ Input.module.css
│        │  └─ Input.tsx
│        └─ Spinner/
│           ├─ Spinner.module.css
│           └─ Spinner.tsx
├─ tsconfig.json
└─ VERSION.md