Building a Full-Stack Medieval Marketplace with Microservices: A Learning Journey
In my latest project, I embarked on creating an open-source, full-stack marketplace platform inspired by eBay, engineered with microservices architecture. Designed to support millions of users in theory, this platform primarily served as a sandbox for my personal learning objectives, specifically exploring JWT authentication, React development, and the intricacies of microservices design.
Technologies Utilized:
- Frontend: A React-based interface with client-side rendering, utilizing pure JavaScript and CSS for a streamlined user experience.
- API Gateway: An ASP.NET Core RESTful API acts as the central request router and data aggregator. While best practices suggest splitting these roles—having distinct gateways for routing and dedicated backend services for data handling—I opted for an integrated approach to simplify development.
- Microservices: Four separate ASP.NET Core RESTful API microservices, each connected to their own PostgreSQL database instance:
- AuthApi: Manages user authentication and stores user data.
- ListingsApi: Handles product listings.
- CommentsApi: Manages user comments.
- UserRatingApi: Records user ratings and reviews.
You can review the full source code on GitHub:
https://github.com/szr2001/BuyItPlatform
Project Goals and Future Plans
This platform was developed primarily for fun and educational purposes. I aimed to deepen my understanding of React, microservices architecture, and JWT-based authentication. Notably, I didn’t implement caching mechanisms — though I left room for future integration. Moving forward, I plan to explore containerization and orchestration tools like Docker and Kubernetes, as well as caching solutions such as Redis to enhance performance.
Experience and Insights
While I acknowledge that my current code might be considered beginner to mid-level, I believe it serves as a valuable resource for those interested in learning the fundamentals of microservices architecture and full-stack development.
Despite some unresolved bugs, I consider this project a successful learning milestone, having achieved the objectives I set out with.
Final Thoughts
Programming continues to be an exciting journey—never cease exploring, experimenting, and building!