# jfeelgoodofficial/playcentralgames architecture

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

- Interactive diagram: https://gitdiagram.com/jfeelgoodofficial/playcentralgames
- Repository: https://github.com/jfeelgoodofficial/playcentralgames

## Overview

1. This repository is a small static website, not a multi-service application. The top-level runtime surface is a set of HTML pages: `index.html`, `game.html`, and `slingshot-carnival.html`, supported by an `images/` asset directory.

2. The site appears to be centered on an interactive game experience. `game.html` is the obvious gameplay entry point, while `index.html` is the public landing page and `slingshot-carnival.html` is likely a themed or alternate content page. There is no separate backend, API layer, or database in the repository.

3. Asset management is simple and local. Visual resources live under `images/`, and the presence of `robots.txt` and `sitemap.xml` indicates the site is intended to be crawlable and publicly indexed.

4. Automated quality checks are split into a few focused scripts in `scripts/`: `check-images.js` and `check-seo-files.js`. These are repository-level guardrails rather than app runtime code, and they validate media/SEO-related correctness.

5. End-to-end verification is handled with Playwright. The `tests/` directory contains browser tests for core user journeys and site quality: `homepage.e2e.ts`, `card-game.e2e.ts`, `accessibility.e2e.ts`, and `seo.e2e.ts`. This suggests the architecture is validated from the browser outward, which fits a static site with client-side interaction.

6. Tooling is strongly lint- and standards-oriented. The repo includes ESLint, Prettier, Stylelint, and HTML validation config files, plus `lighthouserc.json` for performance/SEO auditing. These tools form a non-runtime “quality pipeline” around the site.

7. CI is defined in `.github/workflows/ci.yml`, so the validation flow is automated in GitHub Actions. The CI layer likely runs formatting/linting, custom checks, and Playwright tests before changes are accepted.

8. Deployment is configured for Vercel via `vercel.json`. That implies the site is deployed as static hosting or edge-served HTML, with no custom server code in this repository.

9. The important architectural boundary is between content/runtime and verification/tooling. The runtime side is just HTML pages plus static assets; the supporting side is tests, validators, and CI/CD scripts that ensure accessibility, SEO, and image/file integrity.

10. For a diagram, the main nodes should be: browser/user traffic into the static HTML pages, shared image assets, crawlability files (`robots.txt`, `sitemap.xml`), test/validation tooling, CI automation in GitHub Actions, and deployment to Vercel. That is the complete system visible from this repository.

Main entry points: [`tests`](https://github.com/jfeelgoodofficial/playcentralgames/tree/main/tests) (Playwright), [`.github/workflows/ci.yml`](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/.github/workflows/ci.yml) (CI), [`images`](https://github.com/jfeelgoodofficial/playcentralgames/tree/main/images) (Images), [`tests/seo.e2e.ts`](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/seo.e2e.ts) (SEO e2e)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Site runtime"]
  node_visitor(("Visitor<br/>browser"))
  node_index_page["Home<br/>html page<br/>[index.html]"]
  node_game_page["Game<br/>html page<br/>[game.html]"]
  node_carnival_page["Carnival<br/>html page"]
  node_images_dir[("Images<br/>asset dir")]
  node_site{{"Static site<br/>static website"}}
end

subgraph group_quality["Quality pipeline"]
  node_playwright_suite["Playwright<br/>browser tests"]
  node_homepage_test["Home e2e<br/>test<br/>[homepage.e2e.ts]"]
  node_game_test["Game e2e<br/>test<br/>[card-game.e2e.ts]"]
  node_a11y_test["A11y e2e<br/>test"]
  node_seo_test["SEO e2e<br/>test<br/>[seo.e2e.ts]"]
  node_image_check["Image check<br/>script<br/>[check-images.js]"]
  node_seo_check["SEO check<br/>script<br/>[check-seo-files.js]"]
  node_tooling["Linting<br/>config set"]
  node_ci_workflow["CI<br/>github actions<br/>[ci.yml]"]
end

subgraph group_delivery["Delivery"]
  node_robots_file["Robots<br/>crawl file<br/>[robots.txt]"]
  node_sitemap_file["Sitemap<br/>crawl file<br/>[sitemap.xml]"]
  node_vercel["Vercel<br/>deployment<br/>[vercel.json]"]
end

node_visitor -->|"browse"| node_site
node_site -->|"entry"| node_index_page
node_site -->|"entry"| node_game_page
node_site -->|"entry"| node_carnival_page
node_index_page -->|"uses"| node_images_dir
node_game_page -->|"uses"| node_images_dir
node_carnival_page -->|"uses"| node_images_dir
node_site -->|"crawl"| node_robots_file
node_site -->|"crawl"| node_sitemap_file
node_playwright_suite -->|"includes"| node_homepage_test
node_playwright_suite -->|"includes"| node_game_test
node_playwright_suite -->|"includes"| node_a11y_test
node_playwright_suite -->|"includes"| node_seo_test
node_homepage_test -->|"covers"| node_index_page
node_game_test -->|"covers"| node_game_page
node_a11y_test -->|"audits"| node_site
node_seo_test -->|"audits"| node_robots_file
node_seo_test -->|"audits"| node_sitemap_file
node_image_check -->|"validates"| node_images_dir
node_seo_check -->|"validates"| node_robots_file
node_seo_check -->|"validates"| node_sitemap_file
node_ci_workflow -->|"runs"| node_tooling
node_ci_workflow -->|"runs"| node_image_check
node_ci_workflow -->|"runs"| node_seo_check
node_ci_workflow -->|"runs"| node_playwright_suite
node_vercel -->|"hosts"| node_site

click node_index_page "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/index.html"
click node_game_page "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/game.html"
click node_carnival_page "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/slingshot-carnival.html"
click node_images_dir "https://github.com/jfeelgoodofficial/playcentralgames/tree/main/images"
click node_robots_file "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/robots.txt"
click node_sitemap_file "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/sitemap.xml"
click node_playwright_suite "https://github.com/jfeelgoodofficial/playcentralgames/tree/main/tests"
click node_homepage_test "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/homepage.e2e.ts"
click node_game_test "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/card-game.e2e.ts"
click node_a11y_test "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/accessibility.e2e.ts"
click node_seo_test "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/seo.e2e.ts"
click node_image_check "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/scripts/check-images.js"
click node_seo_check "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/scripts/check-seo-files.js"
click node_ci_workflow "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/.github/workflows/ci.yml"
click node_vercel "https://github.com/jfeelgoodofficial/playcentralgames/blob/main/vercel.json"

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_visitor,node_index_page,node_game_page,node_carnival_page,node_images_dir,node_site toneBlue
class node_playwright_suite,node_homepage_test,node_game_test,node_a11y_test,node_seo_test,node_image_check,node_seo_check,node_tooling,node_ci_workflow toneAmber
class node_robots_file,node_sitemap_file,node_vercel toneMint
```

## Components

### Site runtime

Static pages and assets served to visitors

- **Visitor**: browser · User browsing the site
- [Home](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/index.html): html page · Public landing page · `index.html`
- [Game](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/game.html): html page · Interactive gameplay entry point · `game.html`
- [Carnival](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/slingshot-carnival.html): html page · Themed alternate page · `slingshot-carnival.html`
- [Images](https://github.com/jfeelgoodofficial/playcentralgames/tree/main/images): asset dir · Shared visual assets · `images`
- **Static site**: static website · Repository content served as a public site

### Quality pipeline

Checks, tests, and CI around the site

- [Playwright](https://github.com/jfeelgoodofficial/playcentralgames/tree/main/tests): browser tests · End-to-end browser verification · `tests`
- [Home e2e](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/homepage.e2e.ts): test · Homepage journey checks · `tests/homepage.e2e.ts`
- [Game e2e](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/card-game.e2e.ts): test · Gameplay journey checks · `tests/card-game.e2e.ts`
- [A11y e2e](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/accessibility.e2e.ts): test · Accessibility checks · `tests/accessibility.e2e.ts`
- [SEO e2e](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/tests/seo.e2e.ts): test · Search and metadata checks · `tests/seo.e2e.ts`
- [Image check](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/scripts/check-images.js): script · Validates image assets · `scripts/check-images.js`
- [SEO check](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/scripts/check-seo-files.js): script · Validates crawl files · `scripts/check-seo-files.js`
- **Linting**: config set · ESLint, Prettier, Stylelint, HTML validation, Lighthouse
- [CI](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/.github/workflows/ci.yml): github actions · Automated validation pipeline · `.github/workflows/ci.yml`

### Delivery

Static hosting and indexing surface

- [Robots](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/robots.txt): crawl file · Crawler instructions · `robots.txt`
- [Sitemap](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/sitemap.xml): crawl file · Indexable page map · `sitemap.xml`
- [Vercel](https://github.com/jfeelgoodofficial/playcentralgames/blob/main/vercel.json): deployment · Static hosting deployment · `vercel.json`

## Connections

- Visitor → Static site: browse · Users access the site
- Static site → Home: entry · Landing page
- Static site → Game: entry · Gameplay page
- Static site → Carnival: entry · Alternate themed page
- Home → Images: uses · Home page loads shared visuals
- Game → Images: uses · Game page loads shared visuals
- Carnival → Images: uses · Themed page loads shared visuals
- Static site → Robots: crawl · Public indexing metadata
- Static site → Sitemap: crawl · Public indexing metadata
- Playwright → Home e2e: includes · Homepage verification
- Playwright → Game e2e: includes · Gameplay verification
- Playwright → A11y e2e: includes · Accessibility verification
- Playwright → SEO e2e: includes · SEO verification
- Home e2e → Home: covers · Exercises the landing page
- Game e2e → Game: covers · Exercises the gameplay page
- A11y e2e → Static site: audits · Checks site accessibility
- SEO e2e → Robots: audits · Checks crawlability files
- SEO e2e → Sitemap: audits · Checks crawlability files
- Image check → Images: validates · Checks image assets
- SEO check → Robots: validates · Checks SEO files
- SEO check → Sitemap: validates · Checks SEO files
- CI → Linting: runs · Formatting and linting gates
- CI → Image check: runs · Repository guardrail
- CI → SEO check: runs · Repository guardrail
- CI → Playwright: runs · Browser-level verification
- Vercel → Static site: hosts · Static deployment target
