FinChange

Comprehensive Stock Portfolio Management and Order Execution Platform

Project Summary

FinChange is a comprehensive stock portfolio management and order execution platform developed in the financial technology sector. In this full-stack project, I took end-to-end responsibility for designing and developing the system's most critical components: the order execution engine, portfolio management, user services, and the entire infrastructure (DevOps). Built with Java (Spring Boot) and React, this project focused on solving fundamental engineering problems such as performance, scalability, and data integrity.

My Role and Contributions

1. Order Execution and Matching Engine

At the heart of the platform, I designed an event-driven architecture that can instantly respond to real-time price changes and high-volume order flows.

Asynchronous Data Flow

  • Used Apache Kafka to ensure the system is real-time and reactive. Developed a matching service that listens to market data and triggers pending limit orders
  • Instantly notified other modules of executed or cancelled orders via Kafka, enabling different parts of the system to work independently. This made system maintenance easier and increased flexibility

Real-time User Notifications

  • Transmitted order status updates from Kafka to the React interface in real-time via WebSocket. This allowed users to track their order status live without refreshing the page

User Experience and Performance

  • To prevent API response delays when users submit orders, I ran intensive operations like matching asynchronously in the background using @Async and TransactionalEventListener. This approach ensured users receive immediate responses after submitting orders, eliminating wait times in the interface

Data Consistency

  • Implemented optimistic locking mechanism with JPA @Version to prevent data loss during concurrent operations under high order traffic

Automated Processes

  • Created @Scheduled tasks that cancel remaining orders at end of day and activate pending orders at market opening, ensuring the system operates reliably without manual intervention

2. Portfolio, Asset and Group Management

In this area where customers' cash and securities assets are reliably managed, I developed services centered on data integrity.

Reliable Financial Transactions

  • Managed all financial operations such as order blocking, commission deduction, and settlement with Spring @Transactional. This ensured that if any step in a process fails, the entire process is automatically rolled back and the system remains consistent

System Performance

  • Cached frequently used data like asset definitions on Redis to reduce database load and improve overall API response times

Flexible Data Modeling

  • Modeled the complex structure where customers can be included in different portfolio groups (Many-to-Many) on JPA, creating services that efficiently retrieve portfolio information for all members of a group in a single operation

3. User and Role Management System

Developed core functions such as user invitations, role assignments, and system access management. Particularly moved the new user invitation process to an asynchronous structure via Kafka, preventing potential delays in email delivery from affecting user experience.

4. Infrastructure, Integration and DevOps

Not only wrote the project code but also prepared the entire infrastructure it would run on with Docker and Docker Compose.

Portable Development Environment

  • Containerized all dependencies including backend service, MSSQL, Redis, Kafka, and MinIO. This enabled the entire development environment to be set up with a single command, accelerating the adaptation process for new developers joining the team

Database Design

  • Designed database schemas for the modules I was responsible for, structuring relationships between data (One-to-Many, Many-to-Many) in accordance with normalization rules and in a performant manner

External Service Integration

  • Developed a service that matches official data from Borsa Istanbul with local asset definitions in the system and enriches this combined data on Redis cache. This ensured the system always works with current and validated asset data

File Storage

  • Implemented MinIO integration for secure storage of customer documents

Technical Details & Architecture

  • Backend: Java 17, Spring Boot, Spring Security, Spring Data JPA
  • Frontend: React, WebSocket for real-time updates
  • Database: MSSQL for primary data storage
  • Message Queue: Apache Kafka for event-driven architecture
  • Cache: Redis for performance optimization
  • File Storage: MinIO for document management
  • Containerization: Docker, Docker Compose
  • Architecture: Event-Driven, RESTful APIs

Project Outcomes & Personal Growth

This project provided me with comprehensive experience in building enterprise-level financial applications. I gained deep expertise in event-driven architectures, real-time data processing, financial transaction management, and scalable system design. The project successfully handles high-volume trading operations while maintaining data consistency and providing excellent user experience.