# swayamcodes/prizzle architecture

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

- Interactive diagram: https://gitdiagram.com/swayamcodes/prizzle
- Repository: https://github.com/swayamcodes/prizzle

## Overview

Prizzle converts Prisma and Drizzle schema text in either direction through a shared, framework-independent core. Users can submit schemas through the web editor or CLI; each entry point parses the chosen source format, validates the shared schema representation, generates the target format, and presents or writes the result and issues. The graph includes the documented database-dialect support and conversion warnings as core capabilities. Some implementation details are unsampled, so uncertain internal links are omitted.

Main entry points: [`packages/cli/src/commands/convert.ts`](https://github.com/swayamcodes/prizzle/blob/main/packages/cli/src/commands/convert.ts) (CLI conversion), [`packages/web/src/app/api/convert/route.ts`](https://github.com/swayamcodes/prizzle/blob/main/packages/web/src/app/api/convert/route.ts) (Conversion API), [`packages/core/src/types/schema.ts`](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/types/schema.ts) (Shared schema), [`packages/core/src/parsers/prisma-parser.ts`](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/parsers/prisma-parser.ts) (Prisma parser)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry points"]
  node_cli["CLI entry<br/>[index.ts]"]
  node_cli_convert["CLI conversion<br/>[convert.ts]"]
  node_web_ui["Web editor<br/>[ConverterPanel.tsx]"]
  node_web_api["Conversion API<br/>[route.ts]"]
end

subgraph group_core["Conversion core"]
  node_schema["Shared schema<br/>[schema.ts]"]
end

subgraph group_sources["Schema parsing"]
  node_prisma_parser["Prisma parser<br/>[prisma-parser.ts]"]
  node_drizzle_parser["Drizzle parser<br/>[drizzle-parser.ts]"]
end

subgraph group_outputs["Generation and validation"]
  node_validator["Schema validator"]
  node_drizzle_generator["Drizzle generator"]
  node_prisma_generator["Prisma generator"]
end

node_user(("Schema author"))
node_prisma_internals["Prisma internals"]
node_filesystem["Local files"]

node_user -->|"runs command"| node_cli
node_cli -->|"registers command"| node_cli_convert
node_cli_convert -->|"reads input"| node_filesystem
node_cli_convert -->|"writes output"| node_filesystem
node_cli_convert -->|"parses Prisma"| node_prisma_parser
node_cli_convert -->|"parses Drizzle"| node_drizzle_parser
node_cli_convert -->|"validates schema"| node_validator
node_cli_convert -->|"generates Prisma"| node_prisma_generator
node_cli_convert -->|"generates Drizzle"| node_drizzle_generator
node_user -->|"edits schema"| node_web_ui
node_web_ui -->|"submits conversion"| node_web_api
node_web_api -->|"parses Prisma"| node_prisma_parser
node_web_api -->|"parses Drizzle"| node_drizzle_parser
node_web_api -->|"validates schema"| node_validator
node_web_api -->|"generates Prisma"| node_prisma_generator
node_web_api -->|"generates Drizzle"| node_drizzle_generator
node_web_api -->|"returns result"| node_web_ui
node_prisma_parser -->|"requests DMMF"| node_prisma_internals
node_prisma_parser -->|"produces model"| node_schema
node_drizzle_parser -->|"produces model"| node_schema
node_validator -->|"checks structure"| node_schema
node_prisma_generator -->|"reads model"| node_schema
node_drizzle_generator -->|"reads model"| node_schema

click node_cli "https://github.com/swayamcodes/prizzle/blob/main/packages/cli/src/index.ts"
click node_cli_convert "https://github.com/swayamcodes/prizzle/blob/main/packages/cli/src/commands/convert.ts"
click node_web_ui "https://github.com/swayamcodes/prizzle/blob/main/packages/web/src/components/ConverterPanel.tsx"
click node_web_api "https://github.com/swayamcodes/prizzle/blob/main/packages/web/src/app/api/convert/route.ts"
click node_prisma_parser "https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/parsers/prisma-parser.ts"
click node_drizzle_parser "https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/parsers/drizzle-parser.ts"
click node_schema "https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/types/schema.ts"
click node_validator "https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/validators/schema-validator.ts"
click node_drizzle_generator "https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/generators/drizzle-generator.ts"
click node_prisma_generator "https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/generators/prisma-generator.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_cli,node_cli_convert,node_web_ui,node_web_api toneBlue
class node_schema toneAmber
class node_prisma_parser,node_drizzle_parser toneMint
class node_validator,node_drizzle_generator,node_prisma_generator toneRose
class node_user,node_prisma_internals,node_filesystem toneIndigo
```

## Components

### User entry points

- [CLI entry](https://github.com/swayamcodes/prizzle/blob/main/packages/cli/src/index.ts): `packages/cli/src/index.ts`
- [CLI conversion](https://github.com/swayamcodes/prizzle/blob/main/packages/cli/src/commands/convert.ts): `packages/cli/src/commands/convert.ts`
- [Web editor](https://github.com/swayamcodes/prizzle/blob/main/packages/web/src/components/ConverterPanel.tsx): `packages/web/src/components/ConverterPanel.tsx`
- [Conversion API](https://github.com/swayamcodes/prizzle/blob/main/packages/web/src/app/api/convert/route.ts): `packages/web/src/app/api/convert/route.ts`

### Conversion core

- [Shared schema](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/types/schema.ts): `packages/core/src/types/schema.ts`

### Schema parsing

- [Prisma parser](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/parsers/prisma-parser.ts): `packages/core/src/parsers/prisma-parser.ts`
- [Drizzle parser](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/parsers/drizzle-parser.ts): `packages/core/src/parsers/drizzle-parser.ts`

### Generation and validation

- [Schema validator](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/validators/schema-validator.ts): `packages/core/src/validators/schema-validator.ts`
- [Drizzle generator](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/generators/drizzle-generator.ts): `packages/core/src/generators/drizzle-generator.ts`
- [Prisma generator](https://github.com/swayamcodes/prizzle/blob/main/packages/core/src/generators/prisma-generator.ts): `packages/core/src/generators/prisma-generator.ts`

### Other components

- **Schema author**
- **Prisma internals**
- **Local files**

## Connections

- Schema author → CLI entry: runs command
- CLI entry → CLI conversion: registers command
- CLI conversion → Local files: reads input
- CLI conversion → Local files: writes output
- CLI conversion → Prisma parser: parses Prisma
- CLI conversion → Drizzle parser: parses Drizzle
- CLI conversion → Schema validator: validates schema
- CLI conversion → Prisma generator: generates Prisma
- CLI conversion → Drizzle generator: generates Drizzle
- Schema author → Web editor: edits schema
- Web editor → Conversion API: submits conversion
- Conversion API → Prisma parser: parses Prisma
- Conversion API → Drizzle parser: parses Drizzle
- Conversion API → Schema validator: validates schema
- Conversion API → Prisma generator: generates Prisma
- Conversion API → Drizzle generator: generates Drizzle
- Conversion API → Web editor: returns result
- Prisma parser → Prisma internals: requests DMMF
- Prisma parser → Shared schema: produces model
- Drizzle parser → Shared schema: produces model
- Schema validator → Shared schema: checks structure
- Prisma generator → Shared schema: reads model
- Drizzle generator → Shared schema: reads model
