# a-dot614/ali_auction architecture

> Architecture diagram of the GitHub repository a-dot614/ali_auction, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/a-dot614/ali_auction
- Repository: https://github.com/a-dot614/ali_auction

## Overview

AliAuction.ca is a planning-aligned auction marketplace scaffold. The implemented user-facing workflow is identity and access: a client sends GraphQL requests to the API, whose resolvers handle registration, email verification, login, session checks, logout, and password resets using PostgreSQL-backed services. The web app is a Next.js scaffold; the README and planning documents describe broader marketplace capabilities, but the sampled implementation does not establish auction, bidding, payment, or shipping workflows. Edges reflect the README and sampled source; unsampled product features are not shown as implemented.

Main entry points: [`apps/api/src/auth/service.ts`](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/service.ts) (Identity service), [`apps/api/src/index.ts`](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/index.ts) (Express API), [`apps/api/src/graphql/resolvers/identity.ts`](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/graphql/resolvers/identity.ts) (Identity resolvers), [`apps/api/src/graphql/schema.ts`](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/graphql/schema.ts) (GraphQL schema)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web client"]
  node_webapp["Next.js app<br/>[page.tsx]"]
end

subgraph group_api["API runtime"]
  node_server["Express API<br/>[index.ts]"]
  node_limits["Auth rate limits<br/>[rateLimit.ts]"]
  node_schema["GraphQL schema<br/>[schema.ts]"]
end

subgraph group_identity["Identity access"]
  node_resolver["Identity resolvers<br/>[identity.ts]"]
  node_authz["Auth guards<br/>[authz.ts]"]
  node_service["Identity service<br/>[service.ts]"]
  node_password["Password hashing<br/>[password.ts]"]
  node_tokens["Session tokens<br/>[tokens.ts]"]
end

subgraph group_state["Persistence and messaging"]
  node_db["PostgreSQL access<br/>[db.ts]"]
  node_audit["Audit logging<br/>[audit.ts]"]
  node_email["Email delivery<br/>[index.ts]"]
  node_postgres[("PostgreSQL")]
end

node_client(("Marketplace client"))

node_client -->|"calls GraphQL"| node_server
node_server -->|"serves schema"| node_schema
node_server -->|"applies limits"| node_limits
node_server -->|"builds auth context"| node_resolver
node_schema -->|"routes identity"| node_resolver
node_resolver -->|"handles identity"| node_service
node_resolver -->|"checks permissions"| node_authz
node_service -->|"queries data"| node_db
node_service -->|"hashes passwords"| node_password
node_service -->|"creates tokens"| node_tokens
node_service -->|"records events"| node_audit
node_service -->|"sends messages"| node_email
node_db -->|"runs queries"| node_postgres

click node_webapp "https://github.com/a-dot614/ali_auction/blob/main/apps/web/src/app/page.tsx"
click node_server "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/index.ts"
click node_limits "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/middleware/rateLimit.ts"
click node_schema "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/graphql/schema.ts"
click node_resolver "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/graphql/resolvers/identity.ts"
click node_authz "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/authz.ts"
click node_service "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/service.ts"
click node_password "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/password.ts"
click node_tokens "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/tokens.ts"
click node_db "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/db.ts"
click node_audit "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/audit.ts"
click node_email "https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/email/index.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp,node_client toneBlue
class node_server,node_limits,node_schema toneAmber
class node_resolver,node_authz,node_service,node_password,node_tokens toneMint
class node_db,node_audit,node_email,node_postgres toneRose
```

## Components

### Web client

- [Next.js app](https://github.com/a-dot614/ali_auction/blob/main/apps/web/src/app/page.tsx): `apps/web/src/app/page.tsx`

### API runtime

- [Express API](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/index.ts): `apps/api/src/index.ts`
- [Auth rate limits](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/middleware/rateLimit.ts): `apps/api/src/middleware/rateLimit.ts`
- [GraphQL schema](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/graphql/schema.ts): `apps/api/src/graphql/schema.ts`

### Identity access

- [Identity resolvers](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/graphql/resolvers/identity.ts): `apps/api/src/graphql/resolvers/identity.ts`
- [Auth guards](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/authz.ts): `apps/api/src/auth/authz.ts`
- [Identity service](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/service.ts): `apps/api/src/auth/service.ts`
- [Password hashing](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/password.ts): `apps/api/src/auth/password.ts`
- [Session tokens](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/auth/tokens.ts): `apps/api/src/auth/tokens.ts`

### Persistence and messaging

- [PostgreSQL access](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/db.ts): `apps/api/src/db.ts`
- [Audit logging](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/audit.ts): `apps/api/src/audit.ts`
- [Email delivery](https://github.com/a-dot614/ali_auction/blob/main/apps/api/src/email/index.ts): `apps/api/src/email/index.ts`
- **PostgreSQL**

### Other components

- **Marketplace client**

## Connections

- Marketplace client → Express API: calls GraphQL (evidence: `README.md`)
- Express API → GraphQL schema: serves schema (evidence: `apps/api/src/index.ts`)
- Express API → Auth rate limits: applies limits (evidence: `apps/api/src/index.ts`)
- Express API → Identity resolvers: builds auth context (evidence: `apps/api/src/index.ts`)
- GraphQL schema → Identity resolvers: routes identity (evidence: `apps/api/src/graphql/schema.ts`)
- Identity resolvers → Identity service: handles identity (evidence: `apps/api/src/graphql/resolvers/identity.ts`)
- Identity resolvers → Auth guards: checks permissions (evidence: `apps/api/src/graphql/resolvers/identity.ts`)
- Identity service → PostgreSQL access: queries data (evidence: `apps/api/src/auth/service.ts`)
- Identity service → Password hashing: hashes passwords (evidence: `apps/api/src/auth/service.ts`)
- Identity service → Session tokens: creates tokens (evidence: `apps/api/src/auth/service.ts`)
- Identity service → Audit logging: records events (evidence: `apps/api/src/auth/service.ts`)
- Identity service → Email delivery: sends messages (evidence: `apps/api/src/auth/service.ts`)
- PostgreSQL access → PostgreSQL: runs queries (evidence: `apps/api/src/db.ts`)
