A real-time chat application where users can create and join chat rooms placed anywhere on an interactive world map.
GlobeChat is a weekend project built to explore WebSocket-based real-time communication with a unique twist: chat rooms are geographically placed on a 3D globe. Users can discover rooms by exploring the map, join conversations happening around the world, and even set "moodsic" (mood music) to create the perfect atmosphere for their room.
Whether you want to chat with people interested in a specific location, create a virtual hangout spot, or just vibe with others while listening to shared music - GlobeChat makes it possible.
Discover chat rooms placed around the world on an interactive map.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
View room details, member count, and join code before entering.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Real-time messaging with moodsic player controls at the bottom.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
Click anywhere on the map to place a new chat room.
- Map-Based Rooms: Create chat rooms anywhere on an interactive globe
- Real-Time Chat: WebSocket-powered instant messaging
- Moodsic: Set mood music for your room that all members can enjoy
- Join Codes: Share 8-character codes to invite others (QR-friendly)
- Role System: Owner, Moderator, and Chatter roles with appropriate permissions
- Moderation Tools: Kick and ban users, promote moderators
- Responsive Design: Works seamlessly on desktop and mobile devices
- Backend: Spring Boot 4.x, Java 25, Spring Security (JWT), Spring WebSocket
- Frontend: Angular 21, MapLibre GL, STOMP over SockJS
- Database: PostgreSQL with Flyway migrations
- Build: Maven with GraalVM native image support
- Java 25 (GraalVM recommended for native builds)
- Docker and Docker Compose
- Node.js 20+ (for frontend development)
-
Start the database:
docker compose up -d
-
Run the application:
./mvnw spring-boot:run -Pdev
The application will be available at
http://localhost:9090
# Unit tests only
./mvnw test
# Integration tests only
./mvnw verify -DskipUTs
# All tests
./mvnw verify./mvnw clean package -Pprod -DskipTestsFor faster startup and lower memory footprint, build a native executable:
# Ensure GraalVM is installed and JAVA_HOME is set
./mvnw clean package -Pnative -DskipTestsThe native binary will be created at target/globechat.
# Set required environment variables
export DB_URL=jdbc:postgresql://localhost:5432/globechat
export DB_USER=globechat
export DB_PASSWORD=your_password
export JWT_SECRET=your_secret_key
# Run the application
./target/globechatContributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests if applicable
- Run the test suite:
./mvnw verify - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style and patterns
- Write tests for new functionality
- Update documentation as needed
- Keep commits focused and well-described
This project is licensed under the MIT License - see the LICENSE file for details.
Built with care by Chol Nhial






