Bridge-RabbitMQ is a real-time messaging and voice/video call application.
- Real-time Messaging: Instantaneous text-based communication between users.
- Voice and Video Calls: High-quality, low-latency voice and video calls using WebRTC.
- User Authentication: Secure user registration and login with email verification.
- Friend Management: Users can add and manage their friends.
- File Sharing: Users can send files to each other.
The project architecture maintains separation between the frontend client and the backend server.
The backend is built with Python and FastAPI, and it communicates with the frontend client through a combination of REST APIs and WebSockets. RabbitMQ is used as a message broker for asynchronous communication between different parts of the system. It uses Celery to handle heavy background tasks.
- Vue.js: A progressive JavaScript framework for building user interfaces.
- Vite: A fast build tool for modern web projects.
- IndexedDB: To store messages and files as a cache.
- Pinia: A state management library for Vue.js.
- Tailwind CSS: A utility-first CSS framework.
- Python: A versatile and popular programming language.
- FastAPI: A modern, fast (high-performance), web framework for building APIs with Python 3.7+.
- RabbitMQ: A popular open-source message broker.
- MongoDB: A NoSQL database for storing application data.
- WebRTC: For real-time voice and video communication.
- Celery: For handling cpu-heavy tasks.
- Docker: For containerizing the application and its dependencies.
- Ansible and Terraform: For automating the deployment and infrastructure setup.
- GitHub Actions: For continuous integration and continuous deployment (CI/CD).
-
Clone the repository:
git clone https://github.com/your-username/Bridge-RabbitMQ.git
-
Set up the development environment:
cd Bridge-RabbitMQ/development docker-compose up -d -
Install frontend dependencies:
cd ../client pnpm install -
Install backend dependencies:
cd ../server uv venv uv sync
-
Start the frontend development server:
cd client pnpm dev -
Start the backend server:
bash cd server uvicorn app.main:app --reloadThe application will be available athttp://localhost:5173.
