# vbakhyshov/wemeeter architecture

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

- Interactive diagram: https://gitdiagram.com/vbakhyshov/wemeeter
- Repository: https://github.com/vbakhyshov/wemeeter

## Overview

weMeeter is a location-based social meetup app: signed-in users discover meetups on a map, create or edit posts, and connect through profiles, friend requests, notifications, and chat. The route layer is the main entry point, while Firebase provides authentication and live application data. Settings and theme preferences form a separate account/personalization branch. The README only describes the Create React App scaffold; feature names and wiring beyond the sampled excerpts are inferred only where the tree or route excerpt supports them.

Main entry points: [`src/Pages/Router/Router.jsx`](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Router/Router.jsx) (Routes and auth), [`src/firebase/firebase.js`](https://github.com/vbakhyshov/wemeeter/blob/main/src/firebase/firebase.js) (Firebase setup), [`src/Pages/Settings/SettingsPage.jsx`](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Settings/SettingsPage.jsx) (Account settings), [`src/Pages/HomePage/HomePage.jsx`](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/HomePage/HomePage.jsx) (Meetup map)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["App and navigation"]
  node_app["App shell<br/>[App.js]"]
  node_router["Routes and auth<br/>[Router.jsx]"]
  node_protected["Protected route<br/>[ProtectedRoute.jsx]"]
  node_login["Login<br/>[LoginPage.jsx]"]
  node_signup["Signup<br/>[SignupPage.jsx]"]
  node_sidebar["Navigation sidebar<br/>[Sidebar.jsx]"]
end

subgraph group_meetups["Meetup discovery"]
  node_home["Meetup map<br/>[HomePage.jsx]"]
  node_create["Create meetup"]
  node_postform["Meetup form<br/>[CreatePostPage.jsx]"]
end

subgraph group_social["Profiles and social"]
  node_profile["Profile and friends<br/>[Profile.jsx]"]
  node_profiledetails["Profile details"]
  node_editprofile["Edit profile"]
  node_notifications["Notifications"]
end

subgraph group_communication["Messaging"]
  node_messages["Messages page<br/>[MessagesPage.jsx]"]
  node_chatlist["Chat list<br/>[ChatList.jsx]"]
  node_chatwindow["Chat window<br/>[ChatWindow.jsx]"]
end

subgraph group_platform["Firebase and preferences"]
  node_settings["Account settings<br/>[SettingsPage.jsx]"]
  node_theme["Theme context<br/>[ThemeContext.jsx]"]
  node_firebase["Firebase setup<br/>[firebase.js]"]
  node_authservice["Firebase Auth"]
  node_firestore[("Cloud Firestore")]
end

node_person(("User"))

node_person -->|"opens routes"| node_router
node_app -->|"renders"| node_router
node_app -->|"provides theme"| node_theme
node_router -->|"guards pages"| node_protected
node_router -->|"routes to"| node_login
node_router -->|"routes to"| node_signup
node_router -->|"renders"| node_sidebar
node_router -->|"routes to"| node_home
node_router -->|"routes to"| node_profile
node_router -->|"routes to"| node_editprofile
node_router -->|"routes to"| node_messages
node_router -->|"opens"| node_create
node_login -->|"uses auth"| node_firebase
node_signup -->|"uses auth"| node_firebase
node_router -->|"subscribes auth"| node_firebase
node_router -->|"watches counts"| node_firestore
node_home -->|"uses services"| node_firebase
node_home -->|"reads and updates"| node_firestore
node_create -->|"hosts form"| node_postform
node_postform -->|"reads and updates"| node_firestore
node_profiledetails -->|"uses services"| node_firebase
node_profiledetails -->|"reads and updates"| node_firestore
node_notifications -->|"watches and updates"| node_firestore
node_chatwindow -->|"reads and writes"| node_firestore
node_settings -->|"uses services"| node_firebase
node_settings -->|"reads and updates"| node_firestore
node_settings -->|"changes mode"| node_theme
node_firebase -->|"configures"| node_authservice
node_firebase -->|"configures"| node_firestore

click node_app "https://github.com/vbakhyshov/wemeeter/blob/main/src/App.js"
click node_router "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Router/Router.jsx"
click node_protected "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Router/ProtectedRoute.jsx"
click node_login "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/LogSign/LoginPage.jsx"
click node_signup "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/LogSign/SignupPage.jsx"
click node_sidebar "https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/Sidebar/Sidebar.jsx"
click node_home "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/HomePage/HomePage.jsx"
click node_create "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/CreatePost/CreatePostOverlay.jsx"
click node_postform "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/CreatePost/CreatePostPage.jsx"
click node_profile "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Profile/Profile.jsx"
click node_profiledetails "https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/ProfileComponents/ProfileUserDetails.jsx"
click node_editprofile "https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/ProfileComponents/EditProfilePage.jsx"
click node_notifications "https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/Notifications/NotificationsDrawer.jsx"
click node_messages "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Messages/MessagesPage.jsx"
click node_chatlist "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Messages/ChatList.jsx"
click node_chatwindow "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Messages/ChatWindow.jsx"
click node_settings "https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Settings/SettingsPage.jsx"
click node_theme "https://github.com/vbakhyshov/wemeeter/blob/main/src/context/ThemeContext.jsx"
click node_firebase "https://github.com/vbakhyshov/wemeeter/blob/main/src/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_app,node_router,node_protected,node_login,node_signup,node_sidebar,node_person toneBlue
class node_home,node_create,node_postform toneAmber
class node_profile,node_profiledetails,node_editprofile,node_notifications toneMint
class node_messages,node_chatlist,node_chatwindow toneRose
class node_settings,node_theme,node_firebase,node_authservice,node_firestore toneIndigo
```

## Components

### App and navigation

- [App shell](https://github.com/vbakhyshov/wemeeter/blob/main/src/App.js): `src/App.js`
- [Routes and auth](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Router/Router.jsx): `src/Pages/Router/Router.jsx`
- [Protected route](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Router/ProtectedRoute.jsx): `src/Pages/Router/ProtectedRoute.jsx`
- [Login](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/LogSign/LoginPage.jsx): `src/Pages/LogSign/LoginPage.jsx`
- [Signup](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/LogSign/SignupPage.jsx): `src/Pages/LogSign/SignupPage.jsx`
- [Navigation sidebar](https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/Sidebar/Sidebar.jsx): `src/Components/Sidebar/Sidebar.jsx`

### Meetup discovery

- [Meetup map](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/HomePage/HomePage.jsx): `src/Pages/HomePage/HomePage.jsx`
- [Create meetup](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/CreatePost/CreatePostOverlay.jsx): `src/Pages/CreatePost/CreatePostOverlay.jsx`
- [Meetup form](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/CreatePost/CreatePostPage.jsx): `src/Pages/CreatePost/CreatePostPage.jsx`

### Profiles and social

- [Profile and friends](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Profile/Profile.jsx): `src/Pages/Profile/Profile.jsx`
- [Profile details](https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/ProfileComponents/ProfileUserDetails.jsx): `src/Components/ProfileComponents/ProfileUserDetails.jsx`
- [Edit profile](https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/ProfileComponents/EditProfilePage.jsx): `src/Components/ProfileComponents/EditProfilePage.jsx`
- [Notifications](https://github.com/vbakhyshov/wemeeter/blob/main/src/Components/Notifications/NotificationsDrawer.jsx): `src/Components/Notifications/NotificationsDrawer.jsx`

### Messaging

- [Messages page](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Messages/MessagesPage.jsx): `src/Pages/Messages/MessagesPage.jsx`
- [Chat list](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Messages/ChatList.jsx): `src/Pages/Messages/ChatList.jsx`
- [Chat window](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Messages/ChatWindow.jsx): `src/Pages/Messages/ChatWindow.jsx`

### Firebase and preferences

- [Account settings](https://github.com/vbakhyshov/wemeeter/blob/main/src/Pages/Settings/SettingsPage.jsx): `src/Pages/Settings/SettingsPage.jsx`
- [Theme context](https://github.com/vbakhyshov/wemeeter/blob/main/src/context/ThemeContext.jsx): `src/context/ThemeContext.jsx`
- [Firebase setup](https://github.com/vbakhyshov/wemeeter/blob/main/src/firebase/firebase.js): `src/firebase/firebase.js`
- **Firebase Auth**
- **Cloud Firestore**

### Other components

- **User**

## Connections

- User → Routes and auth: opens routes
- App shell → Routes and auth: renders
- App shell → Theme context: provides theme
- Routes and auth → Protected route: guards pages
- Routes and auth → Login: routes to
- Routes and auth → Signup: routes to
- Routes and auth → Navigation sidebar: renders
- Routes and auth → Meetup map: routes to
- Routes and auth → Profile and friends: routes to
- Routes and auth → Edit profile: routes to
- Routes and auth → Messages page: routes to
- Routes and auth → Create meetup: opens
- Login → Firebase setup: uses auth
- Signup → Firebase setup: uses auth
- Routes and auth → Firebase setup: subscribes auth
- Routes and auth → Cloud Firestore: watches counts
- Meetup map → Firebase setup: uses services
- Meetup map → Cloud Firestore: reads and updates
- Create meetup → Meetup form: hosts form
- Meetup form → Cloud Firestore: reads and updates
- Profile details → Firebase setup: uses services
- Profile details → Cloud Firestore: reads and updates
- Notifications → Cloud Firestore: watches and updates
- Chat window → Cloud Firestore: reads and writes
- Account settings → Firebase setup: uses services
- Account settings → Cloud Firestore: reads and updates
- Account settings → Theme context: changes mode
- Firebase setup → Firebase Auth: configures
- Firebase setup → Cloud Firestore: configures
