Rails and React microservices

Rails and React microservices application. The application contains authentication features and well as product ordering, stock inventory, viewing orders etc. The services communicate with each other via HTTP APIs, and an API Gateway is used to route requests to the correct services. The application is developed using Ruby on Rails, React, and TailwindCSS.

Features:

  • User Authentication and Authorization:
    Devise JWT authentication implementation.
  • Order Management:
    Manages the creation and fulfillment of customer orders. Handles validation for stock availability by communicating with the Product Service. Integrates with the User Service to ensure orders are linked to authenticated users.
  • Product Service:
    Manages product catalog and inventory. Handles CRUD operations for products. Allows stock management and updates when orders are placed.
  • API Gateway:
    Central point for routing all client requests to the appropriate microservice. Handles CORS, authentication, and logging. Simplifies client interaction by providing a single entry point for all services.
  • User Service:
    Manages user registration, authentication, and authorization. Uses Devise with JWT for token-based authentication. Provides user-related operations such as login, signup, and profile management.
  • React Frontend:
    Provides a user interface for customers to view products, place orders, and manage their profiles. State management using Redux, including authentication tokens and user session handling

Planned Improvements:

  • Docker Integration and/or Kubernetes (K8s):
    Implement docker to ensure consistent environments across systems, and Kubernetes to manages containerized services, enabling easier scaling, high availability, and simpler deployments.
  • Use GraphQL to Fetch Data from Multiple Service Databases:
    Add GraphQL to fetch data from multiple services in a single request, reduce network overhead, improving query performance, and simplify data aggregation.
  • Integrate a Messaging Broker:
    Add a messaging broker to enable asynchronous communication between services.
  • Add a Nginx Reverse Proxy:
    Add a Nginx server for load balancing, SSL termination, and request routing, improving security, performance, and handling of traffic across services.
  • Improve Front End UI:
    Improve the UIs branch and style.
  • Improve Front End Error Handling:
    Improve UI error handling by implementing default responses and global notification banners.