Back to Projects

ChallengeHub

ChallengeHub is a full-stack open innovation platform designed to connect challenge creators with solution providers. The platform supports structured challenge publishing, solution proposals, real-time notifications, and role-based workflows — built on a distributed microservice architecture.

ReactTypeScriptStrapi v5Node.jsExpressJWT AuthenticationMicroservicesDockerRabbitMQTraefikWebSocketsREST APIsMySQLMongoDBSQLiteEvent-Driven ArchitectureRole-Based AccessAPI Gateway
ChallengeHub

Full-Stack / Microservices Platform

2025

Full-Stack Developer

React, TypeScript, Strapi v5, Node.js, Express, Docker, RabbitMQ, Traefik, WebSockets, MySQL, MongoDB, SQLite

Overview

ChallengeHub is a web-based open innovation platform built around structured collaboration. Challenge creators can publish problems, solution providers can submit proposals, and users receive real-time updates when important actions happen across the platform. The system was designed as a distributed application with separate services for authentication, challenge management, solution handling, and notifications.

Goal

The goal was to build more than a standard CRUD web application. ChallengeHub was designed to demonstrate how a modular platform can coordinate multiple user roles, independent backend services, real-time notifications, and event-driven workflows. The focus was on creating a maintainable architecture where each service owns its own domain while still contributing to one connected product experience.

Architecture

The platform follows a microservice-based architecture with clearly separated domains. Authentication is handled by a custom Node.js and Express service using JWT-based role management. Challenge, solution, and notification features are implemented as separate backend services, with each service responsible for its own data and business logic. Traefik acts as the API gateway, routing frontend requests to the correct service through service-specific paths.

Core Features

The platform supports multiple role-based workflows. Challenge creators can create and manage challenges, solution providers can submit proposals, and users receive status updates when solutions are submitted, confirmed, rejected, or deleted. Real-time communication is handled through WebSockets, while RabbitMQ coordinates asynchronous domain events between services such as challenge.created, solution.submitted, solution.confirmed, and challenge.deleted.

Technical Focus

A major technical focus was designing a system that stays modular while still supporting connected workflows. The project combines REST APIs for direct frontend and service communication with RabbitMQ-based event messaging for asynchronous coordination. Docker Compose is used to run the services in isolated containers, while different databases are used depending on service needs, including MySQL, MongoDB, and SQLite.

Key Contributions

Built a role-based open innovation platform with challenge creator and solution provider flows
Developed the React frontend with protected routes and role-based UI behavior
Implemented a custom Node.js / Express authentication service with JWT handling
Used Strapi v5 services for challenge, solution, and notification domains
Designed service separation around authentication, challenges, solutions, and notifications
Added RabbitMQ-based event messaging for asynchronous coordination
Integrated WebSocket notifications for real-time user updates
Configured Docker Compose for local multi-service orchestration
Used Traefik as an API gateway for routing service requests
Worked with multiple persistence layers including MySQL, MongoDB, and SQLite
Structured the platform around maintainability, modularity, and future scalability

System Highlights

Role-Based Platform

Challenge creators, solution providers, guests, and admins interact with different workflows based on authentication and permissions.

Microservice Architecture

The system is divided into independent services for authentication, challenges, solutions, and notifications.

Event-Driven Messaging

RabbitMQ coordinates domain events between services, allowing workflows to continue without tightly coupling the backend.

Real-Time Notifications

WebSockets deliver immediate updates when solutions are submitted, confirmed, rejected, or removed.