# lucaswanderleygomes/conecta-adm-patos architecture

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

- Interactive diagram: https://gitdiagram.com/lucaswanderleygomes/conecta-adm-patos
- Repository: https://github.com/lucaswanderleygomes/conecta-adm-patos

## Overview

This is a Conecta ADM Patos event website with public event information, attendee registration, certificate lookup, and an admin area for registrations, questions, speakers, certificates, and event configuration. The main flow is visitor → event page → registration form → registration service and confirmation; organizers use the admin route to manage event data. Storage can use Supabase or a local fallback. Evidence for the certificate and several admin capabilities comes from the SOURCE INDEX/README context; the README itself only says “teste,” so unsampled links are omitted.

Main entry points: [`src/pages/AdminPage.jsx`](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/AdminPage.jsx) (Admin workspace), [`src/lib/registrations.js`](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/registrations.js) (Registration service), [`src/lib/config.js`](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/config.js) (Configuration service), [`src/pages/RegistrationPage.jsx`](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/RegistrationPage.jsx) (Registration form)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public experience"]
  node_app["Route dispatcher<br/>[App.jsx]"]
  node_event["Event landing<br/>[EventPage.jsx]"]
  node_eventcontent["Event content<br/>[ProgramList.jsx]"]
  node_registrationpage["Registration form"]
  node_options["Form options<br/>[OptionGroup.jsx]"]
  node_certlookup["Certificate lookup"]
  node_certificate["Certificate rendering<br/>[Certificate.jsx]"]
end

subgraph group_admin["Administration"]
  node_adminpage["Admin workspace<br/>[AdminPage.jsx]"]
  node_login["Admin sign-in<br/>[LoginGate.jsx]"]
  node_regadmin["Registration management"]
  node_questions["Question management<br/>[QuestionsTab.jsx]"]
  node_speakersadmin["Speaker management<br/>[SpeakersTab.jsx]"]
  node_certadmin["Certificate controls"]
  node_configadmin["Event configuration<br/>[ConfigTab.jsx]"]
end

subgraph group_domain["Event services"]
  node_regservice["Registration service<br/>[registrations.js]"]
  node_configservice["Configuration service<br/>[config.js]"]
  node_cpf["CPF validation<br/>[cpf.js]"]
  node_speakerservice["Speaker data service<br/>[speakers.js]"]
  node_speakerdata["Speaker content<br/>[speakers.js]"]
end

subgraph group_infra["Data and integrations"]
  node_store[("Storage fallback<br/>[storage.js]")]
  node_supabaseclient["Supabase client<br/>[supabaseClient.js]"]
end

node_visitor(("Visitor"))
node_supabase[("Supabase backend")]

node_visitor -->|"opens routes"| node_app
node_app -->|"routes to"| node_event
node_app -->|"routes to"| node_registrationpage
node_app -->|"routes to"| node_adminpage
node_event -->|"counts registrations"| node_regservice
node_event -->|"loads config"| node_configservice
node_event -->|"renders sections"| node_eventcontent
node_registrationpage -->|"submits attendee"| node_regservice
node_registrationpage -->|"loads config"| node_configservice
node_registrationpage -->|"validates CPF"| node_cpf
node_registrationpage -->|"renders choices"| node_options
node_visitor -.->|"registers"| node_registrationpage
node_certlookup -->|"finds registration"| node_regservice
node_certlookup -->|"checks CPF"| node_cpf
node_certlookup -->|"renders certificate"| node_certificate
node_adminpage -->|"requires sign-in"| node_login
node_adminpage -->|"renders tab"| node_regadmin
node_adminpage -->|"renders tab"| node_questions
node_adminpage -->|"renders tab"| node_speakersadmin
node_adminpage -->|"renders tab"| node_certadmin
node_adminpage -->|"renders tab"| node_configadmin
node_adminpage -->|"loads config"| node_configservice
node_regadmin -->|"lists registrations"| node_regservice
node_regadmin -->|"formats CPF"| node_cpf
node_questions -->|"reads questions"| node_regservice
node_speakersadmin -->|"manages speakers"| node_speakerservice
node_speakerservice -->|"uses fallback data"| node_speakerdata
node_certadmin -->|"loads settings"| node_configservice
node_certadmin -->|"previews certificate"| node_certificate
node_configadmin -->|"saves settings"| node_configservice
node_regservice -->|"reads and writes"| node_store
node_configservice -->|"reads and writes"| node_store
node_login -->|"uses local fallback"| node_store
node_regservice -->|"uses client"| node_supabaseclient
node_configservice -->|"uses client"| node_supabaseclient
node_login -->|"authenticates"| node_supabaseclient
node_speakerservice -->|"uses client"| node_supabaseclient
node_supabaseclient -.->|"connects when configured"| node_supabase

click node_app "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/App.jsx"
click node_event "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/EventPage.jsx"
click node_eventcontent "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/ProgramList.jsx"
click node_registrationpage "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/RegistrationPage.jsx"
click node_options "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/OptionGroup.jsx"
click node_certlookup "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/CertificateSection.jsx"
click node_certificate "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/Certificate.jsx"
click node_adminpage "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/AdminPage.jsx"
click node_login "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/LoginGate.jsx"
click node_regadmin "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/RegistrationsTab.jsx"
click node_questions "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/QuestionsTab.jsx"
click node_speakersadmin "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/SpeakersTab.jsx"
click node_certadmin "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/CertificatesTab.jsx"
click node_configadmin "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/ConfigTab.jsx"
click node_regservice "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/registrations.js"
click node_configservice "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/config.js"
click node_cpf "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/cpf.js"
click node_speakerservice "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/speakers.js"
click node_speakerdata "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/data/speakers.js"
click node_store "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/storage.js"
click node_supabaseclient "https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/supabaseClient.js"

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_app,node_event,node_eventcontent,node_registrationpage,node_options,node_certlookup,node_certificate toneBlue
class node_adminpage,node_login,node_regadmin,node_questions,node_speakersadmin,node_certadmin,node_configadmin,node_supabase toneAmber
class node_regservice,node_configservice,node_cpf,node_speakerservice,node_speakerdata toneMint
class node_store,node_supabaseclient toneRose
class node_visitor toneIndigo
```

## Components

### Public experience

- [Route dispatcher](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/App.jsx): `src/App.jsx`
- [Event landing](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/EventPage.jsx): `src/pages/EventPage.jsx`
- [Event content](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/ProgramList.jsx): `src/components/ProgramList.jsx`
- [Registration form](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/RegistrationPage.jsx): `src/pages/RegistrationPage.jsx`
- [Form options](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/OptionGroup.jsx): `src/components/OptionGroup.jsx`
- [Certificate lookup](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/CertificateSection.jsx): `src/components/CertificateSection.jsx`
- [Certificate rendering](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/components/Certificate.jsx): `src/components/Certificate.jsx`

### Administration

- [Admin workspace](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/pages/AdminPage.jsx): `src/pages/AdminPage.jsx`
- [Admin sign-in](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/LoginGate.jsx): `src/admin/LoginGate.jsx`
- [Registration management](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/RegistrationsTab.jsx): `src/admin/RegistrationsTab.jsx`
- [Question management](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/QuestionsTab.jsx): `src/admin/QuestionsTab.jsx`
- [Speaker management](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/SpeakersTab.jsx): `src/admin/SpeakersTab.jsx`
- [Certificate controls](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/CertificatesTab.jsx): `src/admin/CertificatesTab.jsx`
- [Event configuration](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/admin/ConfigTab.jsx): `src/admin/ConfigTab.jsx`

### Event services

- [Registration service](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/registrations.js): `src/lib/registrations.js`
- [Configuration service](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/config.js): `src/lib/config.js`
- [CPF validation](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/cpf.js): `src/lib/cpf.js`
- [Speaker data service](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/speakers.js): `src/lib/speakers.js`
- [Speaker content](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/data/speakers.js): `src/data/speakers.js`

### Data and integrations

- [Storage fallback](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/storage.js): `src/lib/storage.js`
- [Supabase client](https://github.com/lucaswanderleygomes/conecta-adm-patos/blob/main/src/lib/supabaseClient.js): `src/lib/supabaseClient.js`

### Other components

- **Visitor**
- **Supabase backend**

## Connections

- Visitor → Route dispatcher: opens routes (evidence: `src/App.jsx`)
- Route dispatcher → Event landing: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Registration form: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Admin workspace: routes to (evidence: `src/App.jsx`)
- Event landing → Registration service: counts registrations (evidence: `src/pages/EventPage.jsx`)
- Event landing → Configuration service: loads config (evidence: `src/pages/EventPage.jsx`)
- Event landing → Event content: renders sections (evidence: `src/pages/EventPage.jsx`)
- Registration form → Registration service: submits attendee (evidence: `src/pages/RegistrationPage.jsx`)
- Registration form → Configuration service: loads config (evidence: `src/pages/RegistrationPage.jsx`)
- Registration form → CPF validation: validates CPF (evidence: `src/pages/RegistrationPage.jsx`)
- Registration form → Form options: renders choices (evidence: `src/pages/RegistrationPage.jsx`)
- Visitor → Registration form: registers
- Certificate lookup → Registration service: finds registration (evidence: `src/components/CertificateSection.jsx`)
- Certificate lookup → CPF validation: checks CPF (evidence: `src/components/CertificateSection.jsx`)
- Certificate lookup → Certificate rendering: renders certificate (evidence: `src/components/CertificateSection.jsx`)
- Admin workspace → Admin sign-in: requires sign-in (evidence: `src/pages/AdminPage.jsx`)
- Admin workspace → Registration management: renders tab (evidence: `src/pages/AdminPage.jsx`)
- Admin workspace → Question management: renders tab (evidence: `src/pages/AdminPage.jsx`)
- Admin workspace → Speaker management: renders tab (evidence: `src/pages/AdminPage.jsx`)
- Admin workspace → Certificate controls: renders tab (evidence: `src/pages/AdminPage.jsx`)
- Admin workspace → Event configuration: renders tab (evidence: `src/pages/AdminPage.jsx`)
- Admin workspace → Configuration service: loads config (evidence: `src/pages/AdminPage.jsx`)
- Registration management → Registration service: lists registrations (evidence: `src/admin/RegistrationsTab.jsx`)
- Registration management → CPF validation: formats CPF (evidence: `src/admin/RegistrationsTab.jsx`)
- Question management → Registration service: reads questions (evidence: `src/admin/QuestionsTab.jsx`)
- Speaker management → Speaker data service: manages speakers (evidence: `src/admin/SpeakersTab.jsx`)
- Speaker data service → Speaker content: uses fallback data (evidence: `src/lib/speakers.js`)
- Certificate controls → Configuration service: loads settings (evidence: `src/admin/CertificatesTab.jsx`)
- Certificate controls → Certificate rendering: previews certificate (evidence: `src/admin/CertificatesTab.jsx`)
- Event configuration → Configuration service: saves settings (evidence: `src/admin/ConfigTab.jsx`)
- Registration service → Storage fallback: reads and writes (evidence: `src/lib/registrations.js`)
- Configuration service → Storage fallback: reads and writes (evidence: `src/lib/config.js`)
- Admin sign-in → Storage fallback: uses local fallback
- Registration service → Supabase client: uses client (evidence: `src/lib/registrations.js`)
- Configuration service → Supabase client: uses client (evidence: `src/lib/config.js`)
- Admin sign-in → Supabase client: authenticates (evidence: `src/admin/LoginGate.jsx`)
- Speaker data service → Supabase client: uses client (evidence: `src/lib/speakers.js`)
- Supabase client → Supabase backend: connects when configured (evidence: `src/lib/supabaseClient.js`)
