# rkchoudhury/devtinder architecture

> Architecture diagram of the GitHub repository rkchoudhury/devtinder, 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/rkchoudhury/devtinder
- Repository: https://github.com/rkchoudhury/devtinder

## Overview

DevTinder is a web and mobile developer networking app. Users sign up or log in, maintain profiles, discover people in a feed, send and manage connection requests, and chat; premium membership adds payments. The repository separates React and React Native clients from an Express API with MongoDB models and Socket.IO setup. The sampled source confirms client auth/payment requests, server auth behavior, and API mounting; several other route and screen implementations were not sampled, so their detailed wiring is left out.

Main entry points: [`server/src/app.js`](https://github.com/rkchoudhury/devtinder/blob/main/server/src/app.js) (Express API), [`client-web/src/App.tsx`](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/App.tsx) (Web app), [`client-mobile/src/app/index.tsx`](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/app/index.tsx) (Mobile app), [`server/src/routes/auth.js`](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/auth.js) (Auth routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client apps"]
  node_web["Web app<br/>[App.tsx]"]
  node_mobile["Mobile app<br/>[index.tsx]"]
end

subgraph group_identity["Identity and profiles"]
  node_web_auth["Web auth<br/>[authService.ts]"]
  node_mobile_auth["Mobile auth<br/>[authService.ts]"]
  node_web_profile["Web profile<br/>[profileService.ts]"]
  node_mobile_profile["Mobile profile<br/>[profileService.ts]"]
end

subgraph group_networking["Discovery and messaging"]
  node_web_users["Web discovery<br/>[userService.ts]"]
  node_web_requests["Web requests<br/>[requestService.ts]"]
  node_web_chat["Web chat<br/>[chatService.ts]"]
  node_mobile_users["Mobile discovery<br/>[userService.ts]"]
  node_mobile_requests["Mobile requests<br/>[requestService.ts]"]
  node_mobile_chat["Mobile chat<br/>[chatService.ts]"]
end

subgraph group_membership["Premium membership"]
  node_web_payment["Web payments<br/>[paymentService.ts]"]
  node_mobile_payment["Mobile payments<br/>[paymentService.ts]"]
end

subgraph group_backend["API and persistence"]
  node_server["Express API<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[auth.js]"]
  node_profile_routes["Profile routes<br/>[profile.js]"]
  node_request_routes["Request routes<br/>[request.js]"]
  node_user_routes["User routes<br/>[user.js]"]
  node_chat_routes["Chat routes<br/>[chat.js]"]
  node_payment_routes["Payment routes<br/>[payment.js]"]
  node_socket["Realtime sockets"]
  node_database[("MongoDB<br/>[database.js]")]
  node_user_model[("User records<br/>[user.js]")]
  node_request_model[("Connection requests")]
  node_chat_model[("Chat records<br/>[chat.js]")]
  node_payment_model[("Payment records<br/>[payment.js]")]
end

node_user(("App user"))
node_razorpay["Razorpay"]

node_user -->|"uses"| node_web
node_user -->|"uses"| node_mobile
node_web -->|"authenticates via"| node_web_auth
node_mobile -->|"authenticates via"| node_mobile_auth
node_web -->|"manages profile via"| node_web_profile
node_mobile -->|"manages profile via"| node_mobile_profile
node_web -->|"discovers via"| node_web_users
node_web -->|"connects via"| node_web_requests
node_web -->|"chats via"| node_web_chat
node_mobile -->|"discovers via"| node_mobile_users
node_mobile -->|"connects via"| node_mobile_requests
node_mobile -->|"chats via"| node_mobile_chat
node_user -->|"buys membership"| node_web_payment
node_user -->|"buys membership"| node_mobile_payment
node_web_auth -->|"POST auth"| node_server
node_mobile_auth -->|"POST auth"| node_server
node_web_payment -->|"POST payment"| node_server
node_mobile_payment -->|"POST payment"| node_server
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_profile_routes
node_server -->|"mounts"| node_request_routes
node_server -->|"mounts"| node_user_routes
node_server -->|"mounts"| node_chat_routes
node_server -->|"mounts"| node_payment_routes
node_server -->|"initializes"| node_socket
node_server -->|"connects"| node_database
node_auth_routes -->|"reads/writes"| node_user_model
node_auth_routes -->|"uses"| node_database
node_payment_routes -.->|"integrates"| node_razorpay

click node_web "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/App.tsx"
click node_mobile "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/app/index.tsx"
click node_web_auth "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/authService.ts"
click node_mobile_auth "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/authService.ts"
click node_web_profile "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/profileService.ts"
click node_mobile_profile "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/profileService.ts"
click node_web_users "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/userService.ts"
click node_web_requests "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/requestService.ts"
click node_web_chat "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/chatService.ts"
click node_mobile_users "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/userService.ts"
click node_mobile_requests "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/requestService.ts"
click node_mobile_chat "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/chatService.ts"
click node_web_payment "https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/paymentService.ts"
click node_mobile_payment "https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/paymentService.ts"
click node_server "https://github.com/rkchoudhury/devtinder/blob/main/server/src/app.js"
click node_auth_routes "https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/auth.js"
click node_profile_routes "https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/profile.js"
click node_request_routes "https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/request.js"
click node_user_routes "https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/user.js"
click node_chat_routes "https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/chat.js"
click node_payment_routes "https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/payment.js"
click node_socket "https://github.com/rkchoudhury/devtinder/blob/main/server/src/utils/socketUtils/initializeSocket.js"
click node_database "https://github.com/rkchoudhury/devtinder/blob/main/server/src/config/database.js"
click node_user_model "https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/user.js"
click node_request_model "https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/connectionRequest.js"
click node_chat_model "https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/chat.js"
click node_payment_model "https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/payment.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_web,node_mobile,node_user toneBlue
class node_web_auth,node_mobile_auth,node_web_profile,node_mobile_profile toneAmber
class node_web_users,node_web_requests,node_web_chat,node_mobile_users,node_mobile_requests,node_mobile_chat toneMint
class node_web_payment,node_mobile_payment toneRose
class node_server,node_auth_routes,node_profile_routes,node_request_routes,node_user_routes,node_chat_routes,node_payment_routes,node_socket,node_database,node_user_model,node_request_model,node_chat_model,node_payment_model,node_razorpay toneIndigo
```

## Components

### Client apps

- [Web app](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/App.tsx): `client-web/src/App.tsx`
- [Mobile app](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/app/index.tsx): `client-mobile/src/app/index.tsx`

### Identity and profiles

- [Web auth](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/authService.ts): `client-web/src/services/authService.ts`
- [Mobile auth](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/authService.ts): `client-mobile/src/services/authService.ts`
- [Web profile](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/profileService.ts): `client-web/src/services/profileService.ts`
- [Mobile profile](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/profileService.ts): `client-mobile/src/services/profileService.ts`

### Discovery and messaging

- [Web discovery](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/userService.ts): `client-web/src/services/userService.ts`
- [Web requests](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/requestService.ts): `client-web/src/services/requestService.ts`
- [Web chat](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/chatService.ts): `client-web/src/services/chatService.ts`
- [Mobile discovery](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/userService.ts): `client-mobile/src/services/userService.ts`
- [Mobile requests](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/requestService.ts): `client-mobile/src/services/requestService.ts`
- [Mobile chat](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/chatService.ts): `client-mobile/src/services/chatService.ts`

### Premium membership

- [Web payments](https://github.com/rkchoudhury/devtinder/blob/main/client-web/src/services/paymentService.ts): `client-web/src/services/paymentService.ts`
- [Mobile payments](https://github.com/rkchoudhury/devtinder/blob/main/client-mobile/src/services/paymentService.ts): `client-mobile/src/services/paymentService.ts`

### API and persistence

- [Express API](https://github.com/rkchoudhury/devtinder/blob/main/server/src/app.js): `server/src/app.js`
- [Auth routes](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/auth.js): `server/src/routes/auth.js`
- [Profile routes](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/profile.js): `server/src/routes/profile.js`
- [Request routes](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/request.js): `server/src/routes/request.js`
- [User routes](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/user.js): `server/src/routes/user.js`
- [Chat routes](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/chat.js): `server/src/routes/chat.js`
- [Payment routes](https://github.com/rkchoudhury/devtinder/blob/main/server/src/routes/payment.js): `server/src/routes/payment.js`
- [Realtime sockets](https://github.com/rkchoudhury/devtinder/blob/main/server/src/utils/socketUtils/initializeSocket.js): `server/src/utils/socketUtils/initializeSocket.js`
- [MongoDB](https://github.com/rkchoudhury/devtinder/blob/main/server/src/config/database.js): `server/src/config/database.js`
- [User records](https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/user.js): `server/src/models/user.js`
- [Connection requests](https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/connectionRequest.js): `server/src/models/connectionRequest.js`
- [Chat records](https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/chat.js): `server/src/models/chat.js`
- [Payment records](https://github.com/rkchoudhury/devtinder/blob/main/server/src/models/payment.js): `server/src/models/payment.js`

### Other components

- **App user**
- **Razorpay**

## Connections

- App user → Web app: uses
- App user → Mobile app: uses
- Web app → Web auth: authenticates via
- Mobile app → Mobile auth: authenticates via
- Web app → Web profile: manages profile via
- Mobile app → Mobile profile: manages profile via
- Web app → Web discovery: discovers via
- Web app → Web requests: connects via
- Web app → Web chat: chats via
- Mobile app → Mobile discovery: discovers via
- Mobile app → Mobile requests: connects via
- Mobile app → Mobile chat: chats via
- App user → Web payments: buys membership
- App user → Mobile payments: buys membership
- Web auth → Express API: POST auth
- Mobile auth → Express API: POST auth
- Web payments → Express API: POST payment
- Mobile payments → Express API: POST payment
- Express API → Auth routes: mounts
- Express API → Profile routes: mounts
- Express API → Request routes: mounts
- Express API → User routes: mounts
- Express API → Chat routes: mounts
- Express API → Payment routes: mounts
- Express API → Realtime sockets: initializes
- Express API → MongoDB: connects
- Auth routes → User records: reads/writes
- Auth routes → MongoDB: uses
- Payment routes → Razorpay: integrates
