Chatify is a modern, real-time chat application designed to deliver a seamless, secure, and responsive messaging experience.
Built with a production-oriented architecture and deployed on Amazon Web Services (AWS), Chatify supports real-time messaging, online/offline presence, image sharing, email notifications, JWT authentication, and third-party security integrations.
This project demonstrates practical experience in full-stack development, cloud deployment, AWS infrastructure, reverse proxy configuration, process management, and production application deployment.
- π JWT Authentication & Authorization
- π¬ Real-time Messaging using Socket.IO
- π’ Online / Offline Presence Indicator
- πΌοΈ Image Sharing with Preview
- βοΈ Email Notifications using Resend API
- π‘οΈ Security Integration using ArcJet
- π Keyboard Sound Effects
- π¨ Modern Responsive UI with Tailwind CSS + DaisyUI
- β‘ State Management using Zustand
- π§ Optimized Rendering with React Hooks
- βοΈ AWS Cloud Deployment
- π Process Management using PM2
- π Nginx Reverse Proxy
- π HTTPS / SSL Support
Chatify is deployed on Amazon Web Services (AWS) using an EC2-based production architecture.
βββββββββββββββββββββββ
β Users β
β Web / Browser β
ββββββββββββ¬βββββββββββ
β
HTTPS
β
βΌ
βββββββββββββββββββββββ
β Nginx β
β Reverse Proxy β
β SSL / HTTPS β
ββββββββββββ¬βββββββββββ
β
βΌ
βββββββββββββββββββββββ
β AWS EC2 β
β β
β Node.js / Express β
β Socket.IO β
β PM2 β
ββββββββ¬βββββββ¬ββββββββ
β β
ββββββββββββββ βββββββββββββββ
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β MongoDB Atlas β β Third-Party β
β Database β β Services β
βββββββββββββββββββ β β
β Resend β
β ArcJet β
βββββββββββββββββββ
- βοΈ Amazon EC2 β Hosts the production Node.js application
- π Nginx β Reverse proxy and web server
- π PM2 β Node.js process management
- π HTTPS / SSL β Secure client-server communication
- π‘οΈ AWS Security Groups β Network-level access control
- π¦ Amazon S3 β Cloud storage
- ποΈ MongoDB Atlas β Application database
- React
- Vite
- Tailwind CSS
- DaisyUI
- Zustand
- Lucide Icons
- Axios
- Socket.IO Client
- Node.js
- Express.js
- Socket.IO
- MongoDB
- Mongoose
- JWT Authentication
- Resend API
- ArcJet
- AWS EC2
- AWS S3
- Nginx
- PM2
- Linux
- SSL / HTTPS
- Git
- GitHub
chatify/
βββ backend/
β βββ src/
β βββ controllers/
β βββ emails/
β βββ lib/
β βββ middleware/
β βββ models/
β βββ routes/
β
βββ frontend/
β βββ dist/
β β βββ assets/
β β βββ sounds/
β β
β βββ public/
β β βββ sounds/
β β
β βββ src/
β βββ components/
β βββ hooks/
β βββ lib/
β βββ pages/
β βββ store/
β
βββ README.md
Create a .env file inside the backend directory:
PORT=3000
MONGO_URI=your_mongodb_connection_string
NODE_ENV=production
JWT_SECRET=your_jwt_secret
RESEND_API_KEY=your_resend_api_key
EMAIL_FROM="your_email@resend.dev"
EMAIL_FROM_NAME="Your Name"
CLIENT_URL=https://your-domain.com
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
ARCJET_KEY=your_arcjet_key
ARCJET_ENV=productionWarning
Security: Never commit .env files, API keys, database credentials, JWT secrets, or other sensitive information to GitHub.
-
Clone the repository:
git clone https://github.com/inba-web/chatify.git cd chatify -
Install frontend dependencies:
cd frontend npm install -
Install backend dependencies:
cd ../backend npm install -
Configure environment variables: Create a
.envfile inside thebackenddirectory and configure the required environment variables. -
Start the backend:
npm run dev
-
Start the frontend:
cd ../frontend npm run dev
Open the application at: http://localhost:5173
Chatify is deployed on AWS EC2 and runs as a production Node.js application.
GitHub
β
βΌ
AWS EC2
β
βββ Node.js
βββ Express.js
βββ Socket.IO
β
βΌ
PM2
β
βΌ
Nginx
β
βΌ
HTTPS / SSL
β
βΌ
Users
| Component | Purpose |
|---|---|
| AWS EC2 | Application hosting |
| Node.js | Backend runtime |
| Express.js | REST API |
| Socket.IO | Real-time communication |
| PM2 | Process management |
| Nginx | Reverse proxy |
| HTTPS / SSL | Secure communication |
| MongoDB Atlas | Database |
| Amazon S3 | Object/file storage |
| Resend | Transactional emails |
| ArcJet | Security and request protection |
Chatify implements multiple layers of application and infrastructure security:
- JWT-based authentication
- Secure authentication cookies
- HTTPS communication
- AWS EC2 Security Groups
- Nginx reverse proxy
- ArcJet security integration
- Environment-based secret management
- MongoDB authentication
- Restricted server access
- Production environment configuration
Important
Sensitive credentials are never stored in the repository.
Through this project, I gained practical experience in:
- Building real-time applications with Socket.IO
- Implementing JWT authentication
- Managing online/offline presence
- Working with MongoDB and Mongoose
- Sending transactional emails with Resend
- Integrating third-party security services
- Deploying Node.js applications on AWS EC2
- Configuring Nginx as a reverse proxy
- Managing production processes with PM2
- Configuring HTTPS / SSL
- Working with AWS Security Groups
- Using Amazon S3 for cloud storage
- Connecting cloud applications with MongoDB Atlas
- Managing production environment variables
- Debugging production networking and authentication issues
- Structuring a full-stack application for production
- π¬ Message reactions
- β Read receipts
- π₯ Group chats
- ποΈ Voice messages
- π Push notifications
- π€ Advanced profile customization
- π± Progressive Web App support
- π Application monitoring
- π Automated CI/CD deployment
Built with consistency, persistence, and a strong focus on learning modern full-stack development and cloud technologies.
Chatify represents a practical implementation of a production-oriented real-time communication platform, combining modern web technologies with AWS cloud infrastructure.
This project is open-source and available under the MIT License.
- GitHub Repository: https://github.com/inba-web/chatify-v2-aws
- Live Application: Add your production Chatify URL here.