Skip to main content
  1. DevOps & Cloud Engineering Blog/

·1331 words·7 mins
Author
Afzal Hassan
Senior DevOps Engineer & Cloud Architect

πŸš€ Chattingo - Mini Hackathon Challenge
#

A full-stack real-time chat application built with React, Spring Boot, and WebSocket technology. Your mission: Containerize this application using Docker and deploy it to Hostinger VPS using Jenkins CI/CD pipeline.

🚨 IMPORTANT: Registration Required
#

πŸ“ REGISTER NOW
#

Deadline: September 5, 2025

What you need to register:

  • Your Name
  • Email ID
  • LinkedIn Profile URL
  • GitHub Profile URL

πŸ“€ SUBMISSION FORM
#

Deadline: September 10, 2025 (11:59 PM)

πŸ“‚ Repository Access
#

Repository URL: https://github.com/iemafzalhassan/chattingo

  • Currently: Private repository (registration phase)
  • Will be public: After registration closes (Sept 6)
  • Action Required: Fork & star the repository once it becomes public

🎯 Hackathon Challenge
#

Transform this vanilla application into a production-ready, containerized system with automated deployment!

πŸ“‹ Table of Contents
#

πŸ† Hackathon Overview
#

🎯 Project Goals
#

  • Build & Deploy: Create Dockerfiles and containerize the application
  • CI/CD Pipeline: Implement Jenkins automated deployment
  • VPS Deployment: Deploy on Hostinger VPS using modern DevOps practices

πŸ“… Timeline & Registration
#

Registration Phase (Sept 3-5)
#

πŸ“ REGISTER HERE - Complete by Sept 5

Registration Form Requirements:

  • Name
  • Email ID
  • LinkedIn Profile
  • GitHub Profile

Event Schedule
#

  • Sept 6: Kickoff session (VPS setup, Docker + Jenkins basics)
  • Sept 7-10: Build period (3 days)
  • Sept 10: Submissions close at 11:59 PM
  • Sept 11-12: Judging & reviews
  • Sept 13: Winners announced

πŸ—οΈ Architecture Overview
#

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      β”‚    β”‚   Backend       β”‚    β”‚   Database      β”‚
β”‚   (React)       │◄──►│   (Spring Boot) │◄──►│   (MySQL)       β”‚
β”‚   Port: 80      β”‚    β”‚   Port: 8080    β”‚    β”‚   Port: 3306    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚
         └────── WebSocket β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Technology Stack
#

Frontend
#

  • React 18 - Modern UI framework
  • Redux Toolkit - State management
  • Material-UI - Component library
  • Tailwind CSS - Utility-first CSS
  • WebSocket (SockJS + STOMP) - Real-time messaging
  • React Router - Client-side routing

Backend
#

  • Spring Boot 3.3.1 - Java framework
  • Spring Security - Authentication & authorization
  • Spring Data JPA - Database operations
  • Spring WebSocket - Real-time communication
  • JWT - Token-based authentication
  • MySQL - Database

DevOps (Your Tasks)
#

  • Docker - Containerization (YOU BUILD)
  • Docker Compose - Multi-container orchestration (YOU BUILD)
  • Jenkins - CI/CD pipeline (YOU BUILD)
  • Nginx - Web server & reverse proxy (YOU BUILD)

πŸš€ Quick Start
#

Just Registered? Start Here!
#

Step 1: Fork & Clone
#

1
2
3
4
# Fork this repository on GitHub: https://github.com/iemafzalhassan/chattingo
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/chattingo.git
cd chattingo

Step 2: Join Discord
#

Step 3: Local Development Setup
#

Follow CONTRIBUTING.md for detailed setup instructions.

Step 4: Follow the Timeline
#

  • Sept 7-10: Build your implementation
  • Sept 10: Submit before 11:59 PM

Reference Guides
#

πŸ”§ YOUR TASKS
#

Task 1: Docker Implementation (5 Marks)
#

You need to create these files from scratch:

Frontend Dockerfile (3-stage build)
#

  • Stage 1: Node.js build environment
  • Stage 2: Build React application
  • Stage 3: Nginx runtime server

Backend Dockerfile (3-stage build)
#

  • Stage 1: Maven build environment
  • Stage 2: Build Spring Boot application
  • Stage 3: JRE runtime

Docker Compose (Root level)
#

Create docker-compose.yml to orchestrate all services.

Scoring: Single Stage (2), Two Stage (4), Multi Stage (5)

Task 2: Jenkins CI/CD Pipeline (17 Marks)
#

Create a Jenkinsfile with these stages:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
pipeline {
    agent any
    
    stages {
        stage('Git Clone') { 
            // Clone repository from GitHub (2 Marks)
        }
        stage('Image Build') { 
            // Build Docker images for frontend & backend (2 Marks)
        }
        stage('Filesystem Scan') { 
            // Security scan of source code (2 Marks)
        }
        stage('Image Scan') { 
            // Vulnerability scan of Docker images (2 Marks)
        }
        stage('Push to Registry') { 
            // Push images to Docker Hub/Registry (2 Marks)
        }
        stage('Update Compose') { 
            // Update docker-compose with new image tags (2 Marks)
        }
        stage('Deploy') { 
            // Deploy to Hostinger VPS (5 Marks)
        }
    }
}

Additional Requirements
#

  • Jenkins Shared Library: 3 Marks
  • Active Engagement: 2 Marks
  • Creativity: 2 Marks
  • Quality Storytelling: 10 Marks
    • README (Compulsory): 3 Marks
    • Blog (Optional): 2 Marks
    • Video (Compulsory): 5 Marks

Task 3: VPS Deployment
#

  • Hostinger VPS Setup: Ubuntu 22.04 LTS, 2GB RAM
  • Domain Configuration: Setup your domain with DNS
  • SSL Certificate: Configure HTTPS with Let’s Encrypt
  • Production Deployment: Automated deployment via Jenkins

Detailed Instructions: See CONTRIBUTING.md

πŸ“± Application Features
#

Core Functionality
#

  • βœ… User authentication (JWT)
  • βœ… Real-time messaging (WebSocket)
  • βœ… Group chat creation
  • βœ… User profile management
  • βœ… Message timestamps
  • βœ… Responsive design

API Endpoints
#

POST   /api/auth/register    - User registration
POST   /api/auth/login       - User login
GET    /api/users            - Get users
POST   /api/chats/create     - Create chat
GET    /api/chats            - Get user chats
POST   /api/messages/create  - Send message
GET    /api/messages/{chatId} - Get chat messages
WS     /ws                   - WebSocket endpoint

πŸ“Š Project Structure
#

chattingo/
β”œβ”€β”€ backend/                 # Spring Boot application
β”‚   β”œβ”€β”€ src/main/java/
β”‚   β”‚   └── com/chattingo/
β”‚   β”‚       β”œβ”€β”€ Controller/  # REST APIs
β”‚   β”‚       β”œβ”€β”€ Service/     # Business logic
β”‚   β”‚       β”œβ”€β”€ Model/       # JPA entities
β”‚   β”‚       └── config/      # Configuration
β”‚   β”œβ”€β”€ src/main/resources/
β”‚   β”‚   └── application.properties
β”‚   β”œβ”€β”€ .env                 # Environment variables
β”‚   └── pom.xml
β”œβ”€β”€ frontend/               # React application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ Components/     # React components
β”‚   β”‚   β”œβ”€β”€ Redux/          # State management
β”‚   β”‚   └── config/         # API configuration
β”‚   β”œβ”€β”€ .env                # Environment variables
β”‚   └── package.json
β”œβ”€β”€ CONTRIBUTING.md         # Detailed setup & deployment guide
└── README.md              # This file

πŸŽ₯ Submission Requirements
#

πŸ“€ Submission Form: Submit Here
#

Deadline: Sept 10, 11:59 PM

Required Submission Fields
#

  1. Name - Your full name
  2. Email ID - Contact email
  3. GitHub Repository URL - Your forked and implemented project
  4. Video Demo URL - 3-minute demo video (YouTube/Drive link)
  5. Live Application URL - Your deployed application on VPS
  6. Blog URL - Technical writeup (Optional but recommended)
  7. README URL - Link to your updated README file

Required Deliverables
#

  1. GitHub Repository with your implementation

    • βœ… Dockerfiles (Backend & Frontend - 3-stage builds)
    • βœ… docker-compose.yml (Root level orchestration)
    • βœ… Jenkinsfile (Complete CI/CD pipeline)
    • βœ… nginx.conf (Frontend configuration)
    • βœ… Environment configurations
    • βœ… Updated README with deployment instructions
  2. Live Application deployed on Hostinger VPS

    • βœ… Working chat application with HTTPS
    • βœ… SSL certificate configured
    • βœ… Domain properly configured
    • βœ… All features functional (registration, login, messaging)
  3. Video Demo (3 minutes max) showing:

    • βœ… Local Docker setup demonstration
    • βœ… Jenkins pipeline execution
    • βœ… Live application walkthrough on VPS
    • βœ… Key features demonstration

Bonus Points
#

  1. Blog Post - Technical writeup of your implementation (2 marks)
  2. Additional Features - Enhancements to the chat app
  3. Monitoring - Application monitoring and logging
  4. Security - Additional security measures

πŸš€ Getting Started with the Challenge
#

Implementation Flow (Following Hackathon Timeline)
#

Phase 1: Registration (Sept 3-5)
#

  1. Register Here with your details
  2. Fork this repository: https://github.com/iemafzalhassan/chattingo
  3. Join Discord channels for updates and support

Phase 2: Kickoff Session (Sept 6)
#

  • Attend intro session - VPS setup guide, Docker & Jenkins basics
  • Get your VPS access and domain setup
  • Ask questions and clarify requirements

Phase 3: Build Period (Sept 7-10)
#

Phase 4: Submission (Sept 10)
#

πŸ“€ SUBMIT HERE before 11:59 PM

Phase 5: Results (Sept 11-13)
#

  • Sept 11-12: Judging & reviews
  • Sept 13: Winners announced

πŸ“ž Support & Resources
#

Discord Channels
#

Reference Links#

πŸ… Judging Criteria
#

ComponentMarksDescription
Dockerfile5Multi-stage implementation
Jenkinsfile17Complete CI/CD pipeline
Shared Library3Reusable Jenkins components
Engagement2Active participation
Creativity2Unique features/implementation
Documentation10README, blog, video

Good luck with your hackathon project! πŸš€