A real-time chat application with Gmail integration, built with React and FastAPI.
- Frontend: React + TypeScript + Vite + TailwindCSS + shadcn/ui
- Backend: FastAPI + PostgreSQL + Redis + MinIO
- Authentication: Google OAuth 2.0
- Real-time: WebSockets
- Storage: MinIO for media files
- Containerization: Docker + Docker Compose
ChatMail/
├── frontend/ # React frontend application
├── backend-code/ # FastAPI backend application
├── docker-compose.yml # Docker orchestration
└── README.md # This file
- Docker and Docker Compose
- Google Cloud Console project with OAuth 2.0 credentials
-
Clone the repository
git clone <your-repo-url> cd ChatMail
-
Configure Google OAuth
- Download your Google OAuth client secret JSON file from Google Cloud Console
- Place it in
backend-code/directory (it will be ignored by git) - Copy
backend-code/.env.exampletobackend-code/.env - Update the Google credentials in
backend-code/.envwith your actual values
-
Start all services
docker compose up --build
-
Access the application
- Frontend: http://localhost:8080
- Backend API: http://localhost:8000/docs
- MinIO Console: http://localhost:9003
- ✅ Google OAuth authentication
- ✅ Real-time messaging
- ✅ User invitation system
- ✅ Mobile-responsive design
- ✅ File upload support (via MinIO)
- ✅ Message status tracking
- ✅ Online presence indicators
cd frontend
npm install
npm run devcd backend-code
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -r requirements.txt
uvicorn app.main:app --reloadCheck backend-code/.env for configuration options including:
- Database settings
- Redis configuration
- MinIO settings
- Google OAuth credentials
- JWT settings
| Service | Port | Description |
|---|---|---|
| Frontend | 8080 | React development server |
| Backend | 8000 | FastAPI application |
| PostgreSQL | 5433 | Database |
| Redis | 6380 | Cache and real-time data |
| MinIO | 9002 | Object storage |
| MinIO Console | 9003 | MinIO web interface |
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
[Add your license here]