project details

#overview
This project models a warehouse and storefront as separate services. The warehouse manages products and inventory, while the store accepts orders through its own API and interface. Redis Streams carries events between the two sides, demonstrating asynchronous communication without requiring both applications to complete the same synchronous request.
The domain makes service ownership concrete: product administration belongs to one boundary and ordering belongs to another. A React interface exposes the workflows so the architecture can be explored as a working system rather than only through API calls.
#architecture and features
Python and FastAPI provide typed HTTP endpoints for the backend services. Each service owns its local persistence, while Redis Streams transports product and order events. Consumers respond to those events and update local state, keeping the services loosely coupled around their external contracts.
The React client communicates with the appropriate service for warehouse or store actions. Shell scripts automate repeated setup and execution tasks. The result is a compact example of eventual consistency, event processing, and independent service development without introducing a large orchestration layer.
#using the project
- 01Clone the repository and install the dependencies for each Python service and the React client. Start Redis first because the event producers and consumers depend on its stream infrastructure.
- 02Run the warehouse and store APIs using the repository's documented commands or automation scripts. Start their event consumers where those are separate processes, then launch the frontend with the configured service URLs.
- 03Create products through the warehouse flow and confirm that the store receives the relevant updates. Place an order in the store and observe the corresponding inventory behavior driven by events. Redis stream inspection and service logs are the most useful tools when tracing a message across the system.