# shawneetz/gfci architecture

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

- Interactive diagram: https://gitdiagram.com/shawneetz/gfci
- Repository: https://github.com/shawneetz/gfci

## Overview

Golden Faith is a church website with public pages, content-driven listings, and a password-protected admin panel. Visitors browse sermons, events, ministries and live-stream information, or submit Connect, prayer and giving-intent forms; staff sign in to manage published content and review submissions. The README documents the wider editable content set and Vercel Blob image uploads. Sampled source confirms event/ministry/sermon queries and form persistence; unsampled admin CRUD and other query behavior is represented only at subsystem level, with README evidence.

Main entry points: [`src/app/(site)`](https://github.com/shawneetz/gfci/tree/main/src/app/(site)) (Public pages), [`src/lib/prisma.ts`](https://github.com/shawneetz/gfci/blob/main/src/lib/prisma.ts) (PostgreSQL database), [`src/app/admin/(dashboard)`](https://github.com/shawneetz/gfci/tree/main/src/app/admin/(dashboard)) (Content management), [`src/app/(site)/events/page.tsx`](https://github.com/shawneetz/gfci/blob/main/src/app/(site)/events/page.tsx) (Events browsing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public experience"]
  node_public_site["Public pages"]
  node_events_page["Events browsing<br/>[page.tsx]"]
  node_sermons_page["Sermon pages<br/>[page.tsx]"]
  node_ministry_page["Ministry pages<br/>[page.tsx]"]
  node_live_page["Live stream<br/>[page.tsx]"]
  node_public_forms["Public forms"]
end

subgraph group_content["Content services"]
  node_form_actions["Form actions<br/>[forms.ts]"]
  node_event_queries["Event queries<br/>[events.ts]"]
  node_sermon_queries["Sermon queries<br/>[sermons.ts]"]
  node_ministry_queries["Ministry queries<br/>[ministries.ts]"]
  node_content_queries["Other content queries"]
  node_mutations["Content mutations"]
end

subgraph group_admin["Administration"]
  node_login["Admin sign-in<br/>[page.tsx]"]
  node_admin_dashboard["Admin dashboard<br/>[page.tsx]"]
  node_admin_tools["Content management"]
end

subgraph group_platform["Shared platform"]
  node_auth["Authentication<br/>[auth.ts]"]
  node_database[("PostgreSQL database<br/>[prisma.ts]")]
  node_blob[("Vercel Blob")]
  node_site_config["Site configuration<br/>[site.ts]"]
end

node_visitor(("Visitor"))
node_admin_actor(("Church staff"))

node_visitor -->|"browses"| node_public_site
node_public_site -->|"includes"| node_events_page
node_public_site -->|"includes"| node_sermons_page
node_public_site -->|"includes"| node_ministry_page
node_public_site -->|"includes"| node_live_page
node_events_page -->|"loads events"| node_event_queries
node_sermons_page -->|"loads sermons"| node_sermon_queries
node_ministry_page -->|"loads ministry"| node_ministry_queries
node_visitor -->|"submits forms"| node_public_forms
node_public_forms -->|"calls actions"| node_form_actions
node_form_actions -->|"writes submissions"| node_database
node_event_queries -->|"reads events"| node_database
node_sermon_queries -->|"reads sermons"| node_database
node_ministry_queries -->|"reads ministries"| node_database
node_admin_actor -->|"signs in"| node_login
node_login -->|"authenticates"| node_auth
node_auth -->|"checks credentials"| node_database
node_admin_actor -->|"manages content"| node_admin_dashboard
node_admin_dashboard -->|"loads overview"| node_content_queries
node_admin_tools -->|"runs changes"| node_mutations
node_mutations -->|"writes content"| node_database
node_admin_tools -.->|"uploads images"| node_blob
node_public_site -->|"uses settings"| node_site_config

click node_public_site "https://github.com/shawneetz/gfci/tree/main/src/app/(site)"
click node_events_page "https://github.com/shawneetz/gfci/blob/main/src/app/(site)/events/page.tsx"
click node_sermons_page "https://github.com/shawneetz/gfci/blob/main/src/app/(site)/sermons/page.tsx"
click node_ministry_page "https://github.com/shawneetz/gfci/blob/main/src/app/(site)/ministries/%5Bslug%5D/page.tsx"
click node_live_page "https://github.com/shawneetz/gfci/blob/main/src/app/(site)/live/page.tsx"
click node_public_forms "https://github.com/shawneetz/gfci/tree/main/src/sections"
click node_form_actions "https://github.com/shawneetz/gfci/blob/main/src/lib/forms.ts"
click node_event_queries "https://github.com/shawneetz/gfci/blob/main/src/server/queries/events.ts"
click node_sermon_queries "https://github.com/shawneetz/gfci/blob/main/src/server/queries/sermons.ts"
click node_ministry_queries "https://github.com/shawneetz/gfci/blob/main/src/server/queries/ministries.ts"
click node_content_queries "https://github.com/shawneetz/gfci/tree/main/src/server/queries"
click node_login "https://github.com/shawneetz/gfci/blob/main/src/app/admin/login/page.tsx"
click node_auth "https://github.com/shawneetz/gfci/blob/main/src/auth.ts"
click node_admin_dashboard "https://github.com/shawneetz/gfci/blob/main/src/app/admin/(dashboard)/page.tsx"
click node_admin_tools "https://github.com/shawneetz/gfci/tree/main/src/app/admin/(dashboard)"
click node_mutations "https://github.com/shawneetz/gfci/tree/main/src/server/mutations"
click node_database "https://github.com/shawneetz/gfci/blob/main/src/lib/prisma.ts"
click node_site_config "https://github.com/shawneetz/gfci/blob/main/src/config/site.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_public_site,node_events_page,node_sermons_page,node_ministry_page,node_live_page,node_public_forms toneBlue
class node_form_actions,node_event_queries,node_sermon_queries,node_ministry_queries,node_content_queries,node_mutations toneAmber
class node_login,node_admin_dashboard,node_admin_tools toneMint
class node_auth,node_database,node_blob,node_site_config toneRose
class node_visitor,node_admin_actor toneIndigo
```

## Components

### Public experience

- [Public pages](https://github.com/shawneetz/gfci/tree/main/src/app/(site)): `src/app/(site)`
- [Events browsing](https://github.com/shawneetz/gfci/blob/main/src/app/(site)/events/page.tsx): `src/app/(site)/events/page.tsx`
- [Sermon pages](https://github.com/shawneetz/gfci/blob/main/src/app/(site)/sermons/page.tsx): `src/app/(site)/sermons/page.tsx`
- [Ministry pages](https://github.com/shawneetz/gfci/blob/main/src/app/(site)/ministries/%5Bslug%5D/page.tsx): `src/app/(site)/ministries/[slug]/page.tsx`
- [Live stream](https://github.com/shawneetz/gfci/blob/main/src/app/(site)/live/page.tsx): `src/app/(site)/live/page.tsx`
- [Public forms](https://github.com/shawneetz/gfci/tree/main/src/sections): `src/sections`

### Content services

- [Form actions](https://github.com/shawneetz/gfci/blob/main/src/lib/forms.ts): `src/lib/forms.ts`
- [Event queries](https://github.com/shawneetz/gfci/blob/main/src/server/queries/events.ts): `src/server/queries/events.ts`
- [Sermon queries](https://github.com/shawneetz/gfci/blob/main/src/server/queries/sermons.ts): `src/server/queries/sermons.ts`
- [Ministry queries](https://github.com/shawneetz/gfci/blob/main/src/server/queries/ministries.ts): `src/server/queries/ministries.ts`
- [Other content queries](https://github.com/shawneetz/gfci/tree/main/src/server/queries): `src/server/queries`
- [Content mutations](https://github.com/shawneetz/gfci/tree/main/src/server/mutations): `src/server/mutations`

### Administration

- [Admin sign-in](https://github.com/shawneetz/gfci/blob/main/src/app/admin/login/page.tsx): `src/app/admin/login/page.tsx`
- [Admin dashboard](https://github.com/shawneetz/gfci/blob/main/src/app/admin/(dashboard)/page.tsx): `src/app/admin/(dashboard)/page.tsx`
- [Content management](https://github.com/shawneetz/gfci/tree/main/src/app/admin/(dashboard)): `src/app/admin/(dashboard)`

### Shared platform

- [Authentication](https://github.com/shawneetz/gfci/blob/main/src/auth.ts): `src/auth.ts`
- [PostgreSQL database](https://github.com/shawneetz/gfci/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`
- **Vercel Blob**
- [Site configuration](https://github.com/shawneetz/gfci/blob/main/src/config/site.ts): `src/config/site.ts`

### Other components

- **Visitor**
- **Church staff**

## Connections

- Visitor → Public pages: browses
- Public pages → Events browsing: includes
- Public pages → Sermon pages: includes
- Public pages → Ministry pages: includes
- Public pages → Live stream: includes
- Events browsing → Event queries: loads events (evidence: `src/app/(site)/events/page.tsx`)
- Sermon pages → Sermon queries: loads sermons (evidence: `src/app/(site)/sermons/page.tsx`)
- Ministry pages → Ministry queries: loads ministry (evidence: `src/app/(site)/ministries/[slug]/page.tsx`)
- Visitor → Public forms: submits forms
- Public forms → Form actions: calls actions (evidence: `src/sections/prayer-requests-page/prayer-request-form.tsx`)
- Form actions → PostgreSQL database: writes submissions (evidence: `src/lib/forms.ts`)
- Event queries → PostgreSQL database: reads events (evidence: `src/server/queries/events.ts`)
- Sermon queries → PostgreSQL database: reads sermons (evidence: `src/server/queries/sermons.ts`)
- Ministry queries → PostgreSQL database: reads ministries (evidence: `src/server/queries/ministries.ts`)
- Church staff → Admin sign-in: signs in
- Admin sign-in → Authentication: authenticates (evidence: `src/app/admin/login/page.tsx`)
- Authentication → PostgreSQL database: checks credentials (evidence: `src/auth.ts`)
- Church staff → Admin dashboard: manages content
- Admin dashboard → Other content queries: loads overview (evidence: `src/app/admin/(dashboard)/page.tsx`)
- Content management → Content mutations: runs changes
- Content mutations → PostgreSQL database: writes content (evidence: `src/server/mutations/service-times.ts`)
- Content management → Vercel Blob: uploads images
- Public pages → Site configuration: uses settings
