Real-time multiplayer territory strategy game
Conquest Global
- React
- TypeScript
- Java
- Spring Boot
- PostgreSQL
- WebSocket
Real-time multiplayer territory strategy game
Conquest Global
- React
- TypeScript
- Java
- Spring Boot
- PostgreSQL
- WebSocket
Short intro
Conquest Global is a browser-based multiplayer strategy game where 3 to 6 commanders compete for control of a custom world map. The project combines a responsive React and TypeScript interface with a server-authoritative Spring Boot game engine, so turns, combat, cards, objectives, and victory conditions are validated and persisted on the backend.
Featured project
Authoritative real-time game engine
The main technical challenge is keeping a live game consistent for every player while supporting reconnects, bots, and interrupted mobile connections. Game commands travel through STOMP over WebSocket, but the Spring Boot backend remains the single source of truth: it validates player permissions, turn order, territory adjacency, combat rules, and state transitions before persisting a recoverable snapshot to PostgreSQL and broadcasting public or player-private projections.
Stack
- React
- TypeScript
- Java 21
- Spring Boot
- Spring Security
- STOMP/WebSocket
- PostgreSQL
- Redis
- Docker
Highlights
- Built a full online turn flow covering setup, reinforcements, card exchanges, attacks, conquest movement, maneuvers, eliminations, and victory objectives.
- Implemented Google OAuth2/OIDC login with secure server sessions, CSRF protection, and player profiles.
- Designed a custom interactive world map with 45 territories, transparent SVG interaction layers, ownership markers, troop counters, and maritime connections.
- Added persistent bots with Easy, Normal, and Hard strategies, plus mobile-friendly WebSocket reconnection and presence recovery.
Authentication and single sign-on study project
SSO Platform
- Java
- Spring Security
- OAuth2
- PostgreSQL
Authentication and single sign-on study project
SSO Platform
- Java
- Spring Security
- OAuth2
- PostgreSQL
Short intro
SSO Platform is a custom Single Sign-On provider built with Spring Authorization Server to explore OAuth2, OpenID Connect, JWT customization, and centralized authentication for multiple applications. The project includes authorization code flow, PKCE-ready clients, user registration, custom login/logout, user info claims, password reset, email confirmation, PostgreSQL persistence, and an admin area for managing OAuth2 clients.
Featured project
Custom OAuth2/OIDC authorization server
The main feature of this project is a Spring-based authorization server capable of issuing access tokens, ID tokens, and refresh tokens for application clients and service clients. I customized token claims to include user identity, email, display name, tenant access, client credentials metadata, and scopes, while persisting users, registered clients, redirects, reset tokens, and tenant access rules in PostgreSQL through Flyway migrations.
Stack
- Java 21
- Spring Authorization Server
- Spring Security
- OAuth2/OIDC
- PostgreSQL
- Flyway
Highlights
- Implemented OAuth2 Authorization Code flow with OpenID Connect support and custom login/logout pages.
- Customized JWT claims for user identity, tenant access, client credentials, scopes, and user info responses.
- Persisted registered clients, users, redirects, password reset tokens, and tenant access data in PostgreSQL.
- Built admin-facing flows to create and update OAuth2 registered clients backed by Spring Authorization Server.
Multi-tenant farm operations platform with modular services
Farm SaaS
- ReactJS
- Java
- Spring Boot
- PostgreSQL
Multi-tenant farm operations platform with modular services
Farm SaaS
- ReactJS
- Java
- Spring Boot
- PostgreSQL
Short intro
Farm SaaS is a multi-tenant platform built to manage farm operations through separate domain services and a ReactJS frontend. The system uses a gateway as the main entry point for authentication, routing, tenant context, roles, and capabilities. Its modules cover administration, orders, egg production, deliveries, and financial workflows, with internal service integrations designed to avoid direct database sharing and preserve clear domain boundaries.
Featured project
Financial workflow integration
One of the strongest parts of the Farm SaaS project is the financial workflow that connects operational events with receivables. When an order is delivered or a route sale is registered, the order service communicates with the financial service through internal HTTP integration, creating receivables without sharing databases directly between services.
Stack
- ReactJS
- Java
- Spring Boot
- PostgreSQL
- HTTP APIs
Highlights
- Designed service boundaries between order management and financial operations.
- Used origin tracking to connect receivables back to orders, route sales, or manual entries.
- Applied tenant-aware data handling so financial records stay isolated by tenant.
- Supported payment registration, partial payments, refunds, and financial dashboard summaries.
Multi-tenant SaaS for construction operations management
FLN Track SaaS
- ReactJS
- Java
- Spring Boot
- PostgreSQL
Multi-tenant SaaS for construction operations management
FLN Track SaaS
- ReactJS
- Java
- Spring Boot
- PostgreSQL
Short intro
FLN Track is a multi-tenant SaaS platform for construction companies in Canada, focused on improving project visibility, workforce control, timesheets, and operational workflows. The system follows a service-oriented architecture with a gateway for authentication, session handling, tenant context, and routing, plus domain services for administration and operations. Tenant isolation, role/capability checks, and PostgreSQL Row-Level Security are central parts of the architecture.
Featured project
Timesheets with location-aware review
A core MVP feature in FLN Track is the timesheet flow for tracking hours by project and employee. Workers can clock in and out through a web flow that captures location at the action moment, while supervisors and office admins review submitted entries before operational closure. Project addresses are geocoded in the backend, and the system uses proximity, range status, and rejection reasons as evidence for approval instead of blindly blocking out-of-range registrations.
Stack
- ReactJS
- Java
- Spring Boot
- PostgreSQL RLS
- Geocoding
Highlights
- Separated worker-facing Work Clock flows from management-facing Timesheets review screens.
- Resolved project latitude and longitude in the backend from address data instead of exposing coordinates as manual fields.
- Modeled approval and rejection as explicit business actions for submitted timesheet entries.
- Preserved tenant isolation and authorization through gateway-propagated tenant context and backend checks.
Workout planning with AI-assisted training suggestions
AI Gym System
- ReactJS
- Java
- Spring Boot
- Gemini
Workout planning with AI-assisted training suggestions
AI Gym System
- ReactJS
- Java
- Spring Boot
- Gemini
Short intro
AI Gym System is a workout planning platform built as a multi-module personal project with a Spring Boot backend, API gateway, ReactJS web app, mobile app, and a dedicated AI service. The core domain manages exercises, equipment, muscles, workout plans, workout groups, and workout sessions, while the AI module connects Gemini to real application data and actions instead of acting as a standalone chatbot.
Featured project
AI-assisted workout planning with function calling
The featured part of this project is the AI service that lets users interact with workout data conversationally. The service keeps conversation history, sends available tool declarations to Gemini, interprets function calls returned by the model, executes application actions through ports/adapters, and feeds the results back into the conversation. This makes the assistant capable of finding exercises, looking up equipment and muscles, listing workout plans, creating new plans, and deleting plans with confirmation.
Stack
- Java 21
- Spring Boot
- Gemini
- WebClient
- ReactJS
- MySQL
Highlights
- Designed the AI module around ports and adapters so the LLM provider and gym backend integration stay replaceable.
- Implemented Gemini function calling for domain actions such as finding exercises, muscles, equipment, and workout plans.
- Connected conversational AI to real application workflows, including creating and deleting workout plans.
- Separated the AI service from the core gym backend while preserving API-based integration boundaries.