Welcome to the ITU-MiniTwit project! 🚀 This project is a simplified clone of Twitter, developed as part of the ITU DevOps course. It demonstrates modern development practices, including micro-blogging features, CI/CD pipelines, containerization with Docker, and simulator-driven testing.
- Project Overview
- Features
- Architecture
- Setup & Installation
- CI/CD Pipeline
- Simulator Integration
- Deployment & Releases
- Future Improvements
- License
ITU-MiniTwit is a micro-blogging platform that allows users to:
- Register and manage accounts.
- Post short messages (tweets).
- Follow and unfollow other users.
- View personal and public timelines.
This project includes:
- A web application for user interaction.
- A simulator API to emulate user behavior and load.
- CI/CD pipelines for automated testing, building, and deployment.
✅ User Registration & Login
✅ Secure password hashing with BCrypt
✅ Post and view messages
✅ Follow/Unfollow users
✅ Personal and public timelines
✅ Real-time data updates through shared database
✅ Full CI/CD pipeline with automated weekly releases
+------------------+ +--------------------+
| Web App (:5000)| <--> | Shared Database |
+------------------+ +--------------------+
↑ ↑
| |
↓ ↓
+------------------+ +--------------------+
|Simulator API (:5001)| | CI/CD Pipelines |
+------------------+ +--------------------+
- Web App: User interface to interact with the platform.
- Simulator API: Simulates user interactions like tweeting and following.
- Database: Shared SQLite database to synchronize data between the web app and simulator.
- CI/CD Pipelines: Handles build, test, release, and deployment stages automatically.
- Docker & Docker Compose
- Java 17 & Maven
- GitHub account for CI/CD integration
- Clone the repository:
git clone https://github.com/your-username/itu-minitwit.git cd itu-minitwit - Build and run with Docker Compose:
docker-compose up --build
- Access the app:
- Web Application: http://localhost:5000
- Simulator API: http://localhost:5001
We use GitHub Actions for our CI/CD setup. Key stages include:
- Build: Compiles the Java application and builds Docker images.
- Test: Runs unit and integration tests.
- Release: Weekly automatic releases every Friday at 12:00 UTC.
- Deploy: Pushes images to Docker Hub and deploys to production servers.
👉 Why GitHub Actions?
- Fully integrated with GitHub
- Free for public repositories
- Extensive community support
- Simple YAML configuration
For detailed pipeline configuration, check out the ci-cd.yml file.
The Simulator API runs on port 5001 and interacts with the main application to:
- Register users
- Post messages
- Follow and unfollow users
Why a simulator?
✅ Load testing
✅ Behavior simulation for active timelines
✅ Real-time monitoring via the web interface
- Weekly automated releases are created on GitHub.
- Docker images are pushed to Docker Hub.
- Production deployment is automated via SSH and Docker Compose.
- Developed as part of the ITU DevOps course
- Special thanks to course instructors and teaching assistants!
Want to contribute?
- Fork the repo
- Create a feature branch
- Submit a pull request
Happy coding! 💻🎉
-- readme generated by chat gpt --