# iammuhammadhasib/meccwave architecture

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

- Interactive diagram: https://gitdiagram.com/iammuhammadhasib/meccwave
- Repository: https://github.com/iammuhammadhasib/meccwave

## Overview

This repository implements a social-network backend for account access, profiles, friendships, posts, search, and messaging. Users enter through HTTP routes or chat sockets; authenticated controllers validate requests, apply domain operations, and read or write MongoDB-backed models. Friend-request acceptance creates a friendship, while chat supports persisted messages and delivery/seen status. The excerpts and source index establish the main routes, controllers, and storage relationships; several listed capabilities were not sampled, so their internal links are omitted rather than inferred.

Main entry points: [`routes/authRoutes.js`](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/authRoutes.js) (Auth routes), [`sockets/chatScoket.js`](https://github.com/iammuhammadhasib/meccwave/blob/main/sockets/chatScoket.js) (Realtime chat), [`index.js`](https://github.com/iammuhammadhasib/meccwave/blob/main/index.js) (Server bootstrap), [`controllers/authController.js`](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/authController.js) (Account access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_app["Server bootstrap<br/>[index.js]"]
  node_http_routes["HTTP route registry<br/>[index.js]"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_auth_mw["JWT authentication"]
  node_db_config["Mongo connection<br/>[database.js]"]
end

subgraph group_accounts["Accounts and social graph"]
  node_auth_controller["Account access<br/>[authController.js]"]
  node_validation["Request validation"]
  node_registration_rules["Registration rules"]
  node_contact_schema["Contact validation"]
  node_user_model[("User records<br/>[User.js]")]
  node_profile_model[("Profile records<br/>[Profile.js]")]
  node_friend_routes["Friend routes<br/>[friendRoutes.js]"]
  node_friend_controller["Friend operations"]
  node_request_routes["Friend-request routes"]
  node_request_controller["Friend-request operations"]
  node_friend_requests[("Friend requests<br/>[FriendRequest.js]")]
  node_friendships[("Friendships<br/>[Friendship.js]")]
  node_profile_controller["Profile operations"]
end

subgraph group_content["Posts and discovery"]
  node_search_routes["Search routes<br/>[searchRoutes.js]"]
  node_search_controller["People search"]
  node_post_routes["Post routes<br/>[postRoutes.js]"]
  node_post_controller["Post operations<br/>[postController.js]"]
  node_posts[("Posts<br/>[Post.js]")]
  node_media[("Media records<br/>[Media.js]")]
  node_comments[("Comments<br/>[Comment.js]")]
end

subgraph group_messaging["Messaging"]
  node_message_routes["Message routes<br/>[messageRoutes.js]"]
  node_message_controller["Message history"]
  node_chat_socket["Realtime chat<br/>[chatScoket.js]"]
  node_conversations[("Conversations<br/>[Conversation.js]")]
  node_messages[("Messages<br/>[Message.js]")]
end

node_user(("User"))
node_mongo[("MongoDB")]
node_socket_client(("Chat client"))

node_user -.->|"submits credentials"| node_auth_routes
node_app -->|"connects database"| node_db_config
node_db_config -->|"connects"| node_mongo
node_app -->|"mounts routes"| node_http_routes
node_app -->|"registers socket handler"| node_chat_socket
node_auth_routes -->|"validates registration"| node_validation
node_auth_routes -->|"uses rules"| node_registration_rules
node_registration_rules -->|"checks contact"| node_contact_schema
node_auth_routes -->|"dispatches requests"| node_auth_controller
node_auth_controller -->|"reads and writes"| node_user_model
node_auth_controller -->|"creates and populates"| node_profile_model
node_friend_routes -->|"authenticates"| node_auth_mw
node_friend_routes -->|"dispatches requests"| node_friend_controller
node_friend_controller -->|"reads friendships"| node_friendships
node_request_routes -->|"authenticates"| node_auth_mw
node_request_routes -->|"dispatches requests"| node_request_controller
node_request_controller -->|"reads and writes"| node_friend_requests
node_request_controller -->|"creates on acceptance"| node_friendships
node_profile_controller -->|"reads users"| node_user_model
node_search_controller -->|"searches users"| node_user_model
node_search_routes -->|"dispatches requests"| node_search_controller
node_post_routes -->|"dispatches requests"| node_post_controller
node_post_controller -->|"reads and writes"| node_posts
node_post_controller -->|"creates media"| node_media
node_message_routes -->|"authenticates"| node_auth_mw
node_message_routes -->|"dispatches requests"| node_message_controller
node_message_controller -->|"reads conversations"| node_conversations
node_message_controller -->|"reads and updates"| node_messages
node_socket_client -.->|"sends chat events"| node_chat_socket
node_chat_socket -->|"creates and updates"| node_messages
node_chat_socket -->|"reads and saves"| node_conversations

click node_app "https://github.com/iammuhammadhasib/meccwave/blob/main/index.js"
click node_http_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/index.js"
click node_auth_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/authRoutes.js"
click node_auth_mw "https://github.com/iammuhammadhasib/meccwave/blob/main/middlewares/authenticationMiddleware.js"
click node_db_config "https://github.com/iammuhammadhasib/meccwave/blob/main/config/database.js"
click node_auth_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/authController.js"
click node_validation "https://github.com/iammuhammadhasib/meccwave/blob/main/middlewares/validateMiddlware.js"
click node_registration_rules "https://github.com/iammuhammadhasib/meccwave/blob/main/validators/registrationValidator.js"
click node_contact_schema "https://github.com/iammuhammadhasib/meccwave/blob/main/schema/emailPhoneSchema.js"
click node_user_model "https://github.com/iammuhammadhasib/meccwave/blob/main/models/User.js"
click node_profile_model "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Profile.js"
click node_friend_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/friendRoutes.js"
click node_friend_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/friendController.js"
click node_request_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/friendRequestRoutes.js"
click node_request_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/friendRequestController.js"
click node_friend_requests "https://github.com/iammuhammadhasib/meccwave/blob/main/models/FriendRequest.js"
click node_friendships "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Friendship.js"
click node_profile_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/profileController.js"
click node_search_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/searchRoutes.js"
click node_search_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/searchController.js"
click node_post_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/postRoutes.js"
click node_post_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/postController.js"
click node_posts "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Post.js"
click node_media "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Media.js"
click node_comments "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Comment.js"
click node_message_routes "https://github.com/iammuhammadhasib/meccwave/blob/main/routes/messageRoutes.js"
click node_message_controller "https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/messageController.js"
click node_chat_socket "https://github.com/iammuhammadhasib/meccwave/blob/main/sockets/chatScoket.js"
click node_conversations "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Conversation.js"
click node_messages "https://github.com/iammuhammadhasib/meccwave/blob/main/models/Message.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_http_routes,node_auth_routes,node_auth_mw,node_db_config,node_user,node_socket_client toneBlue
class node_auth_controller,node_validation,node_registration_rules,node_contact_schema,node_user_model,node_profile_model,node_friend_routes,node_friend_controller,node_request_routes,node_request_controller,node_friend_requests,node_friendships,node_profile_controller,node_mongo toneAmber
class node_search_routes,node_search_controller,node_post_routes,node_post_controller,node_posts,node_media,node_comments toneMint
class node_message_routes,node_message_controller,node_chat_socket,node_conversations,node_messages toneRose
```

## Components

### Application entry

- [Server bootstrap](https://github.com/iammuhammadhasib/meccwave/blob/main/index.js): `index.js`
- [HTTP route registry](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/index.js): `routes/index.js`
- [Auth routes](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/authRoutes.js): `routes/authRoutes.js`
- [JWT authentication](https://github.com/iammuhammadhasib/meccwave/blob/main/middlewares/authenticationMiddleware.js): `middlewares/authenticationMiddleware.js`
- [Mongo connection](https://github.com/iammuhammadhasib/meccwave/blob/main/config/database.js): `config/database.js`

### Accounts and social graph

- [Account access](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/authController.js): `controllers/authController.js`
- [Request validation](https://github.com/iammuhammadhasib/meccwave/blob/main/middlewares/validateMiddlware.js): `middlewares/validateMiddlware.js`
- [Registration rules](https://github.com/iammuhammadhasib/meccwave/blob/main/validators/registrationValidator.js): `validators/registrationValidator.js`
- [Contact validation](https://github.com/iammuhammadhasib/meccwave/blob/main/schema/emailPhoneSchema.js): `schema/emailPhoneSchema.js`
- [User records](https://github.com/iammuhammadhasib/meccwave/blob/main/models/User.js): `models/User.js`
- [Profile records](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Profile.js): `models/Profile.js`
- [Friend routes](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/friendRoutes.js): `routes/friendRoutes.js`
- [Friend operations](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/friendController.js): `controllers/friendController.js`
- [Friend-request routes](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/friendRequestRoutes.js): `routes/friendRequestRoutes.js`
- [Friend-request operations](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/friendRequestController.js): `controllers/friendRequestController.js`
- [Friend requests](https://github.com/iammuhammadhasib/meccwave/blob/main/models/FriendRequest.js): `models/FriendRequest.js`
- [Friendships](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Friendship.js): `models/Friendship.js`
- [Profile operations](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/profileController.js): `controllers/profileController.js`

### Posts and discovery

- [Search routes](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/searchRoutes.js): `routes/searchRoutes.js`
- [People search](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/searchController.js): `controllers/searchController.js`
- [Post routes](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/postRoutes.js): `routes/postRoutes.js`
- [Post operations](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/postController.js): `controllers/postController.js`
- [Posts](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Post.js): `models/Post.js`
- [Media records](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Media.js): `models/Media.js`
- [Comments](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Comment.js): `models/Comment.js`

### Messaging

- [Message routes](https://github.com/iammuhammadhasib/meccwave/blob/main/routes/messageRoutes.js): `routes/messageRoutes.js`
- [Message history](https://github.com/iammuhammadhasib/meccwave/blob/main/controllers/messageController.js): `controllers/messageController.js`
- [Realtime chat](https://github.com/iammuhammadhasib/meccwave/blob/main/sockets/chatScoket.js): `sockets/chatScoket.js`
- [Conversations](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Conversation.js): `models/Conversation.js`
- [Messages](https://github.com/iammuhammadhasib/meccwave/blob/main/models/Message.js): `models/Message.js`

### Other components

- **User**
- **MongoDB**
- **Chat client**

## Connections

- User → Auth routes: submits credentials
- Server bootstrap → Mongo connection: connects database (evidence: `index.js`)
- Mongo connection → MongoDB: connects (evidence: `config/database.js`)
- Server bootstrap → HTTP route registry: mounts routes (evidence: `index.js`)
- Server bootstrap → Realtime chat: registers socket handler (evidence: `index.js`)
- Auth routes → Request validation: validates registration (evidence: `routes/authRoutes.js`)
- Auth routes → Registration rules: uses rules (evidence: `routes/authRoutes.js`)
- Registration rules → Contact validation: checks contact (evidence: `validators/registrationValidator.js`)
- Auth routes → Account access: dispatches requests (evidence: `routes/authRoutes.js`)
- Account access → User records: reads and writes (evidence: `controllers/authController.js`)
- Account access → Profile records: creates and populates (evidence: `controllers/authController.js`)
- Friend routes → JWT authentication: authenticates (evidence: `routes/friendRoutes.js`)
- Friend routes → Friend operations: dispatches requests (evidence: `routes/friendRoutes.js`)
- Friend operations → Friendships: reads friendships (evidence: `controllers/friendController.js`)
- Friend-request routes → JWT authentication: authenticates (evidence: `routes/friendRequestRoutes.js`)
- Friend-request routes → Friend-request operations: dispatches requests (evidence: `routes/friendRequestRoutes.js`)
- Friend-request operations → Friend requests: reads and writes (evidence: `controllers/friendRequestController.js`)
- Friend-request operations → Friendships: creates on acceptance (evidence: `controllers/friendRequestController.js`)
- Profile operations → User records: reads users (evidence: `controllers/profileController.js`)
- People search → User records: searches users (evidence: `controllers/searchController.js`)
- Search routes → People search: dispatches requests
- Post routes → Post operations: dispatches requests (evidence: `routes/postRoutes.js`)
- Post operations → Posts: reads and writes (evidence: `controllers/postController.js`)
- Post operations → Media records: creates media (evidence: `controllers/postController.js`)
- Message routes → JWT authentication: authenticates (evidence: `routes/messageRoutes.js`)
- Message routes → Message history: dispatches requests (evidence: `routes/messageRoutes.js`)
- Message history → Conversations: reads conversations (evidence: `controllers/messageController.js`)
- Message history → Messages: reads and updates (evidence: `controllers/messageController.js`)
- Chat client → Realtime chat: sends chat events
- Realtime chat → Messages: creates and updates (evidence: `sockets/chatScoket.js`)
- Realtime chat → Conversations: reads and saves (evidence: `sockets/chatScoket.js`)
