# ender-wiggin2019/next-ark-nova-cards architecture

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

- Interactive diagram: https://gitdiagram.com/ender-wiggin2019/next-ark-nova-cards
- Repository: https://github.com/ender-wiggin2019/next-ark-nova-cards

## Overview

Ark Nova Card List is a reference and discovery site for Ark Nova players. The principal workflow is selecting card types and applying source, tag, requirement, text, size, strength, and sort controls to browse animal and sponsor card lists. Separate product areas cover card details, actions, projects, maps, end-game scoring, quizzes, ratings, comments, and account access. The homepage-to-list relationship is visible in the sampled source; other feature areas are identified from the tree and README, so their internal wiring is not inferred. The README says PlanetScale is not yet integrated.

Main entry points: [`src/pages/index.tsx`](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/index.tsx) (Card search), [`src/pages/quiz/index.tsx`](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/quiz/index.tsx) (Quiz pages), [`src/components/comments/Comments.tsx`](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/comments/Comments.tsx) (Comments), [`src/(auth)/sign-in/[[...sign-in]]/page.tsx`](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/(auth)/sign-in/%5B%5B...sign-in%5D%5D/page.tsx) (Account access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browse["Card discovery"]
  node_home["Card search<br/>[index.tsx]"]
  node_filters["Search filters"]
  node_animal_list["Animal cards<br/>[AnimalCardList.tsx]"]
  node_sponsor_list["Sponsor cards"]
  node_animal_data["Animal data<br/>[Animals.ts]"]
  node_sponsor_data["Sponsor data<br/>[Sponsors.ts]"]
  node_card_detail["Card detail<br/>[&#91;id&#93;.tsx]"]
end

subgraph group_reference["Game reference"]
  node_actions["Action cards<br/>[index.tsx]"]
  node_action_data["Action definitions<br/>[ActionCards.ts]"]
  node_projects["Projects<br/>[index.tsx]"]
  node_project_data["Project data<br/>[Projects.ts]"]
  node_endgames["End-game cards<br/>[EndGames.ts]"]
  node_maps["Map boards<br/>[index.tsx]"]
  node_map_data["Map data<br/>[MapBoards.ts]"]
end

subgraph group_community["Community features"]
  node_quiz["Quiz experience<br/>[Quiz.tsx]"]
  node_quiz_pages["Quiz pages<br/>[index.tsx]"]
  node_quiz_api["Quiz API"]
  node_comments["Comments<br/>[Comments.tsx]"]
  node_comment_api["Comment API"]
  node_ratings["Card ratings<br/>[ratings.ts]"]
end

subgraph group_platform["Site platform"]
  node_auth["Account access<br/>[page.tsx]"]
  node_middleware["Request middleware<br/>[middleware.ts]"]
end

node_player(("Player"))

node_player -->|"searches cards"| node_home
node_home -->|"renders controls"| node_filters
node_home -->|"passes filters"| node_animal_list
node_home -->|"passes filters"| node_sponsor_list
node_player -->|"opens card"| node_card_detail
node_player -->|"browses actions"| node_actions
node_player -->|"browses projects"| node_projects
node_player -->|"browses maps"| node_maps
node_player -->|"takes quizzes"| node_quiz_pages
node_quiz_pages -->|"renders quiz"| node_quiz
node_quiz_pages -->|"quiz requests"| node_quiz_api
node_player -->|"writes comments"| node_comments
node_comments -->|"comment requests"| node_comment_api
node_player -->|"rates cards"| node_ratings
node_player -.->|"signs in"| node_auth
node_auth -.->|"authenticates requests"| node_middleware

click node_home "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/index.tsx"
click node_filters "https://github.com/ender-wiggin2019/next-ark-nova-cards/tree/main/src/components/filters"
click node_animal_list "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/cards/animal_cards/AnimalCardList.tsx"
click node_sponsor_list "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/cards/sponsor_cards/SponsorCardList.tsx"
click node_animal_data "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/Animals.ts"
click node_sponsor_data "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/Sponsors.ts"
click node_card_detail "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/card/%5Bid%5D.tsx"
click node_actions "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/actions/index.tsx"
click node_action_data "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/ActionCards.ts"
click node_projects "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/project-bonuses/index.tsx"
click node_project_data "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/Projects.ts"
click node_endgames "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/EndGames.ts"
click node_maps "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/maps/index.tsx"
click node_map_data "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/MapBoards.ts"
click node_quiz "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/quiz/Quiz.tsx"
click node_quiz_pages "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/quiz/index.tsx"
click node_quiz_api "https://github.com/ender-wiggin2019/next-ark-nova-cards/tree/main/src/pages/api/quiz"
click node_comments "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/comments/Comments.tsx"
click node_comment_api "https://github.com/ender-wiggin2019/next-ark-nova-cards/tree/main/src/pages/api/comments"
click node_ratings "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/api/cards/ratings.ts"
click node_auth "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/(auth)/sign-in/%5B%5B...sign-in%5D%5D/page.tsx"
click node_middleware "https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/middleware.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_home,node_filters,node_animal_list,node_sponsor_list,node_animal_data,node_sponsor_data,node_card_detail toneBlue
class node_actions,node_action_data,node_projects,node_project_data,node_endgames,node_maps,node_map_data toneAmber
class node_quiz,node_quiz_pages,node_quiz_api,node_comments,node_comment_api,node_ratings toneMint
class node_auth,node_middleware toneRose
class node_player toneIndigo
```

## Components

### Card discovery

- [Card search](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/index.tsx): `src/pages/index.tsx`
- [Search filters](https://github.com/ender-wiggin2019/next-ark-nova-cards/tree/main/src/components/filters): `src/components/filters`
- [Animal cards](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/cards/animal_cards/AnimalCardList.tsx): `src/components/cards/animal_cards/AnimalCardList.tsx`
- [Sponsor cards](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/cards/sponsor_cards/SponsorCardList.tsx): `src/components/cards/sponsor_cards/SponsorCardList.tsx`
- [Animal data](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/Animals.ts): `src/data/Animals.ts`
- [Sponsor data](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/Sponsors.ts): `src/data/Sponsors.ts`
- [Card detail](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/card/%5Bid%5D.tsx): `src/pages/card/[id].tsx`

### Game reference

- [Action cards](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/actions/index.tsx): `src/pages/actions/index.tsx`
- [Action definitions](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/ActionCards.ts): `src/data/ActionCards.ts`
- [Projects](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/project-bonuses/index.tsx): `src/pages/project-bonuses/index.tsx`
- [Project data](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/Projects.ts): `src/data/Projects.ts`
- [End-game cards](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/EndGames.ts): `src/data/EndGames.ts`
- [Map boards](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/maps/index.tsx): `src/pages/maps/index.tsx`
- [Map data](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/data/MapBoards.ts): `src/data/MapBoards.ts`

### Community features

- [Quiz experience](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/quiz/Quiz.tsx): `src/components/quiz/Quiz.tsx`
- [Quiz pages](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/quiz/index.tsx): `src/pages/quiz/index.tsx`
- [Quiz API](https://github.com/ender-wiggin2019/next-ark-nova-cards/tree/main/src/pages/api/quiz): `src/pages/api/quiz`
- [Comments](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/components/comments/Comments.tsx): `src/components/comments/Comments.tsx`
- [Comment API](https://github.com/ender-wiggin2019/next-ark-nova-cards/tree/main/src/pages/api/comments): `src/pages/api/comments`
- [Card ratings](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/pages/api/cards/ratings.ts): `src/pages/api/cards/ratings.ts`

### Site platform

- [Account access](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/(auth)/sign-in/%5B%5B...sign-in%5D%5D/page.tsx): `src/(auth)/sign-in/[[...sign-in]]/page.tsx`
- [Request middleware](https://github.com/ender-wiggin2019/next-ark-nova-cards/blob/main/src/middleware.ts): `src/middleware.ts`

### Other components

- **Player**

## Connections

- Player → Card search: searches cards
- Card search → Search filters: renders controls
- Card search → Animal cards: passes filters
- Card search → Sponsor cards: passes filters
- Player → Card detail: opens card
- Player → Action cards: browses actions
- Player → Projects: browses projects
- Player → Map boards: browses maps
- Player → Quiz pages: takes quizzes
- Quiz pages → Quiz experience: renders quiz
- Quiz pages → Quiz API: quiz requests
- Player → Comments: writes comments
- Comments → Comment API: comment requests
- Player → Card ratings: rates cards
- Player → Account access: signs in
- Account access → Request middleware: authenticates requests
