# firat-o/invite-card architecture

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

- Interactive diagram: https://gitdiagram.com/firat-o/invite-card
- Repository: https://github.com/firat-o/invite-card

## Overview

This is a Next.js wedding-invitation and RSVP-management app. Invitees view the invitation, submit an acceptance or decline with guest counts and names, and the form writes RSVP records to Firestore. Administrators use the login page and Firebase Authentication to reach a dashboard that lists and summarizes RSVPs and can delete all records. The dashboard excerpt is partial; its authentication, query, and bulk-delete behavior is visible, but other details are not inferred.

Main entry points: [`app/admin/login/page.tsx`](https://github.com/firat-o/invite-card/blob/master/app/admin/login/page.tsx) (Admin login), [`app/page.tsx`](https://github.com/firat-o/invite-card/blob/master/app/page.tsx) (Invitation page), [`app/admin/dashboard/page.tsx`](https://github.com/firat-o/invite-card/blob/master/app/admin/dashboard/page.tsx) (RSVP dashboard), [`firebase/firebase.js`](https://github.com/firat-o/invite-card/blob/master/firebase/firebase.js) (Firebase client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Invitation and RSVP"]
  node_invitation["Invitation page<br/>[page.tsx]"]
  node_rsvp["RSVP form<br/>[Form.tsx]"]
  node_leaf["Background animation<br/>[LeafAnimation.tsx]"]
end

subgraph group_admin["Admin management"]
  node_login["Admin login<br/>[page.tsx]"]
  node_dashboard["RSVP dashboard<br/>[page.tsx]"]
end

subgraph group_firebase["Firebase services"]
  node_firebaseclient["Firebase client<br/>[firebase.js]"]
  node_auth["Firebase Auth"]
  node_firestore[("Firestore")]
end

node_invitee(("Invitee"))
node_adminuser(("Administrator"))

node_invitee -->|"views"| node_invitation
node_invitation -->|"renders"| node_rsvp
node_invitation -->|"renders"| node_leaf
node_rsvp -->|"writes RSVP"| node_firestore
node_adminuser -->|"enters credentials"| node_login
node_invitation -->|"links to"| node_login
node_login -->|"signs in"| node_auth
node_login -->|"navigates on success"| node_dashboard
node_dashboard -->|"observes session; signs out"| node_auth
node_dashboard -->|"redirects when signed out"| node_login
node_dashboard -->|"reads; deletes records"| node_firestore
node_firebaseclient -->|"initializes"| node_auth
node_firebaseclient -->|"initializes"| node_firestore

click node_invitation "https://github.com/firat-o/invite-card/blob/master/app/page.tsx"
click node_rsvp "https://github.com/firat-o/invite-card/blob/master/components/Form.tsx"
click node_leaf "https://github.com/firat-o/invite-card/blob/master/components/LeafAnimation.tsx"
click node_login "https://github.com/firat-o/invite-card/blob/master/app/admin/login/page.tsx"
click node_dashboard "https://github.com/firat-o/invite-card/blob/master/app/admin/dashboard/page.tsx"
click node_firebaseclient "https://github.com/firat-o/invite-card/blob/master/firebase/firebase.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_invitation,node_rsvp,node_leaf toneBlue
class node_login,node_dashboard toneAmber
class node_firebaseclient,node_auth,node_firestore toneMint
class node_invitee,node_adminuser toneIndigo
```

## Components

### Invitation and RSVP

- [Invitation page](https://github.com/firat-o/invite-card/blob/master/app/page.tsx): `app/page.tsx`
- [RSVP form](https://github.com/firat-o/invite-card/blob/master/components/Form.tsx): `components/Form.tsx`
- [Background animation](https://github.com/firat-o/invite-card/blob/master/components/LeafAnimation.tsx): `components/LeafAnimation.tsx`

### Admin management

- [Admin login](https://github.com/firat-o/invite-card/blob/master/app/admin/login/page.tsx): `app/admin/login/page.tsx`
- [RSVP dashboard](https://github.com/firat-o/invite-card/blob/master/app/admin/dashboard/page.tsx): `app/admin/dashboard/page.tsx`

### Firebase services

- [Firebase client](https://github.com/firat-o/invite-card/blob/master/firebase/firebase.js): `firebase/firebase.js`
- **Firebase Auth**
- **Firestore**

### Other components

- **Invitee**
- **Administrator**

## Connections

- Invitee → Invitation page: views
- Invitation page → RSVP form: renders
- Invitation page → Background animation: renders
- RSVP form → Firestore: writes RSVP
- Administrator → Admin login: enters credentials
- Invitation page → Admin login: links to
- Admin login → Firebase Auth: signs in
- Admin login → RSVP dashboard: navigates on success
- RSVP dashboard → Firebase Auth: observes session; signs out
- RSVP dashboard → Admin login: redirects when signed out
- RSVP dashboard → Firestore: reads; deletes records
- Firebase client → Firebase Auth: initializes
- Firebase client → Firestore: initializes
