A modern, secure chat application for temporary team collaboration with real-time messaging, media sharing, and advanced moderation features.
AetherMeet is a full-stack web application designed for secure, temporary team collaboration. Built with Node.js, Express, MongoDB, and Socket.IO, it offers real-time communication with end-to-end encryption capabilities.
Key Features:
- Instant demo rooms (no registration required)
- Secure authenticated rooms with JWT
- Real-time messaging with Socket.IO
- Media file sharing
- Advanced moderation and voting systems
- PDF chat export
- Dark/light theme support
Backend: Node.js, Express.js, MongoDB, Mongoose, Socket.IO, JWT, bcrypt
Frontend: EJS, Tailwind CSS, Vanilla JavaScript
Security: Helmet.js, Express Rate Limit, Input Sanitization
Testing: Jest, Supertest, MongoDB Memory Server
- Node.js (v18.0.0 or higher)
- npm (v9.0.0 or higher)
- MongoDB (local or cloud)
-
Clone and install
git clone https://github.com/yourusername/aethermeet.git cd aethermeet npm install -
Configure environment
Create
.envfile:PORT=5000 MONGO_URI=mongodb://localhost:27017/aethermeet JWT_SECRET=your_secret_key_here SESSION_SECRET=your_session_secret_here
-
Run the application
npm start
Development mode:
npm run dev
-
Access at:
http://localhost:5000
Complete Jest testing suite with 50+ tests covering unit tests, integration tests, and API tests.
# Run all tests
npm test
# Run with coverage
npm test -- --coverage
# Run specific test suite
npm run test:unit # Unit tests only
npm run test:integration # Integration tests only
npm run test:api # API tests only
# Watch mode
npm run test:watchtests/
├── setup.js # Test environment setup
├── helpers.js # Test utilities
├── unitTests.test.js # 20+ unit tests
├── integrationTests.test.js # 15+ integration tests
└── apiTests.test.js # 15+ API tests
- ✅ Unit Tests - Helper functions, validation, utilities
- ✅ Integration Tests - User/Room models, database operations
- ✅ API Tests - Authentication, room management, health checks
Expected Coverage: 85%+ statements, 75%+ branches
- Go to
http://localhost:5000 - Click "Try Demo"
- Share the room link
- Start chatting
- Register - Create account
- Create Room - Set name, password, admission type
- Join Room - Enter room code and password
- Chat - Send messages and share media
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /api/auth/register |
Register user | No |
| POST | /api/auth/login |
Login user | No |
| POST | /api/auth/logout |
Logout | Yes |
| POST | /api/auth/refresh |
Refresh token | Yes |
| GET | /api/auth/sessions |
Get sessions | Yes |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /api/rooms/create-demo |
Create demo room | No |
| POST | /api/rooms/instant |
Create instant room | Yes |
| POST | /api/rooms/schedule |
Schedule room | Yes |
| POST | /api/rooms/:code/join |
Join room | Yes |
| GET | /api/rooms/:code/export |
Export PDF | Yes |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /api/health |
Health check | No |
aethermeet/
├── tests/ # Jest test suite
│ ├── setup.js # Test setup
│ ├── helpers.js # Test utilities
│ ├── unitTests.test.js # Unit tests
│ ├── integrationTests.test.js # Integration tests
│ └── apiTests.test.js # API tests
├── models/ # Database models
│ ├── User.js
│ ├── Room.js
│ ├── Message.js
│ └── ...
├── routes/ # API routes
│ ├── auth.js
│ ├── rooms.js
│ └── ...
├── utils/ # Utilities
│ └── helpers.js
├── views/ # EJS templates
├── public/ # Static files
├── jest.config.js # Jest configuration
├── server.js # Main server
└── package.json # Dependencies
- Instant demo rooms
- Authenticated rooms
- Scheduled rooms
- Flexible passwords
- Owner approval
- Democratic voting
- Real-time messaging
- Media sharing
- Message history
- PDF export
- JWT authentication
- Password hashing
- Rate limiting
- Input sanitization
- Session management
ISC License
B.Tech Final Year Project
Ready for Demonstration! 🚀