DevConnect

A developer social network for profiles, connections, posts, jobs, and real-time conversations.

Overview

A full-stack social platform where developers discover each other, build professional profiles, share posts, connect, and apply for opportunities. Messaging and notifications support conversations around connections and job applications.

A React/Vite frontend organizes data through Redux Toolkit and Axios services. Express routes and controllers manage MongoDB records through Mongoose. Socket.IO shares the Node HTTP server, with Redis supporting presence and cross-instance event distribution. Custom JWT authentication and GitHub OAuth handle identity.

Key features

  • Developer profiles, search, and connection requests
  • Feed posts, reactions, comments, and notifications
  • Job listings and application workflows
  • Real-time chat, presence, typing, and message status
  • GitHub OAuth and profile/repository integration
  • Image and document uploads with Cloudinary or local storage

Tech stack

ReactViteJavaScriptRedux ToolkitTailwind CSSExpressMongoDBMongooseSocket.IORedisJWTCloudinaryNodemailer

Product walkthrough

DevConnect — product walkthrough
DevConnect — screenshot 1
DevConnect — screenshot 1
DevConnect — screenshot 2
DevConnect — screenshot 2
DevConnect — screenshot 3
DevConnect — screenshot 3
DevConnect — screenshot 4
DevConnect — screenshot 4
A React SPA uses separate REST and Socket.IO paths. MongoDB stores product records; Redis coordinates live presence and socket fanout.

Arrows show direction. Dashed connections indicate conditional or supporting paths.

Read diagram as text
Browser application
React · Vite · Redux Toolkit · Tailwind
REST API
Express · controllers · JWT middleware
Real-time transport
Socket.IO · chat and presence events
Product records
MongoDB · Mongoose models
Uploads & email
Multer · Cloudinary / local · Nodemailer
Live coordination
ioredis · Socket.IO Redis adapter
GitHub integration
Custom OAuth · profile / repository API

Connections

  • Browser application → REST API: Axios + token.
  • Browser application → Real-time transport: socket events.
  • REST API → Product records: read / write.
  • REST API → Uploads & email: files / email.
  • Real-time transport → Product records: chat writes.
  • Real-time transport → Live coordination: presence / fanout.
  • REST API → GitHub integration: OAuth.
  • Express and Socket.IO share one Node HTTP server. REST JWT middleware and socket identity are separate implementation paths.
  • The active authentication flow uses custom JWT and GitHub OAuth; uploads can use Cloudinary or local storage.
A developer signs in, completes a profile, and explores social or job workflows. Connections and job relationships also feed the messaging experience.

Arrows show direction. Dashed connections indicate conditional or supporting paths.

Read diagram as text
Register or sign in
Email / password or GitHub OAuth
Build a profile
Skills · bio · avatar · GitHub details
Explore the network
Search developers, posts, and jobs
Connect with developers
Send, accept, or reject requests
Share and discuss
Publish posts · react · comment
Find an opportunity
Post jobs · apply · review applications
Continue the conversation
Messaging · presence · notifications

Connections

  • Register or sign in → Build a profile: session ready.
  • Build a profile → Explore the network: browse.
  • Explore the network → Connect with developers: people.
  • Explore the network → Share and discuss: feed.
  • Explore the network → Find an opportunity: opportunities.
  • Connect with developers → Continue the conversation: accepted connection.
  • Find an opportunity → Continue the conversation: job relationship.
  • Feed activity and job applications are persisted through REST controllers; live events update the interface.
  • Messaging eligibility checks include accepted connections, existing chats, and applicable job relationships.
The socket handler checks a conversation relationship, stores the message, and emits delivery events. Reading messages updates their status and notifies the sender.

Arrows show direction. Dashed connections indicate conditional or supporting paths.

Read diagram as text
Compose a message
React chat UI · temporary client message ID
Receive send_message
Socket.IO handler · supplied participants
Relationship allowed?
Existing chat, connection, or job relation
Return message_error
Do not save or emit the message
Save the message
Mongoose Chat · sent / delivered status
Acknowledge the sender
message_sent · map temporary ID
Notify the recipient
receive_message + stored notification
Update read status
Persist read state · emit messages_read

Connections

  • Compose a message → Receive send_message: send event.
  • Receive send_message → Relationship allowed?: check participants.
  • Relationship allowed? → Return message_error: no (conditional or supporting).
  • Relationship allowed? → Save the message: yes.
  • Save the message → Acknowledge the sender: acknowledge.
  • Save the message → Notify the recipient: emit to user room.
  • Notify the recipient → Update read status: open / read chat.
  • Redis supports cross-instance event distribution; the implementation also consults a local presence map for initial delivery status.
  • Messages are embedded in Chat documents. REST history reads and socket read events update persisted message status.