TextInatorX
A web application designed to extract text from images using OCR, built on a robust microservice architecture orchestrated with Kafka.
I started this project primarily as a way to teach myself Apache Kafka and the principles of distributed systems, as my university curriculum didn't dive as deeply into those topics as I wanted. I’ve always been curious about how to properly scale applications using multiple replicas and how to manage heavy computational tasks—like OCR—within a web environment without bottlenecking the user experience.
The architecture is built around three core microservices: a Frontend, Image Storage, and Image Processing, all seamlessly integrated using .NET Aspire. To handle communication between these services, I used Wolverine, a mediator framework with built-in Kafka support. While the project is somewhat synthetic in nature, it served as a perfect playground for learning how to handle message queues and brokers in a real-world C# environment.
The choice of databases was driven mostly by curiosity; I wanted to experiment with different storage paradigms. I used Azure Blob Storage for raw image data, while choosing SQLite and MongoDB simply because I wanted to try out a document database and a lightweight relational setup in the same project.