CaysFashion
This project is a simple fashion store inspired by Uniqlo, built to practice microservices architecture. It includes services for clients, users, products, and orders. The system uses Redis for temporary data, RabbitMQ for background processing like stock updates, and JWT for secure authentication. Docker Compose manages Redis, PostgreSQL, and RabbitMQ. Prisma is used for database access and migrations, while the RajaOngkir API helps calculate real-time shipping costs. Cron jobs are also implemented to automate tasks like checking order statuses.
Tech Stack
React.js
Node.js
Express.js
TailwindCSS
PostgreSql
Prisma
RabbitMQ
Docker
Redis
Project Gallery

Key Features
- Microservices Architecture: The project is structured into multiple microservices—client, user, product, and order—enabling independent development, deployment, and scalability.
- Redis Integration: Redis is used for handling temporary and fast-access data, such as caching and session management, improving overall system performance.
- RabbitMQ for Background Processing: RabbitMQ manages asynchronous tasks like order processing and stock updates, ensuring reliable and decoupled communication between services.
- Scheduled Tasks with Cron: Cron jobs are implemented to periodically check order statuses and RabbitMQ messages, enabling automated background tasks and system health monitoring.
- JWT-Based Authentication: User authentication and authorization are handled using JWT, providing a secure and stateless mechanism across services.
- Docker Compose Orchestration: Docker Compose is used to orchestrate essential services such as Redis, PostgreSQL, and RabbitMQ, enabling consistent and simplified development environments.
- Prisma for Database Management: Prisma is used as the ORM and migration tool, offering type-safe queries and streamlined database schema management.
- External API (RajaOngkir API) for Shipping Costs: The application integrates the RajaOngkir API to calculate shipping costs dynamically based on destination and courier, enhancing user experience during the checkout process.