1 of 16

Juiced Platform Architecture

2 of 16

Juiced Introduction

Juiced is a multi platform application for online sellers. Juiced allows sellers to easily source, list, and manage their inventory and syncs directly with platforms such as Amazon, eBay, Shopify, StockX, and Facebook Marketplace.

3 of 16

Backend Architecture Overview

Our backend architecture is designed to be robust, scalable, and efficient, leveraging modern technologies and best practices.

  • Framework & Programming Language
    • We utilize Nest JS, a powerful and scalable Node.js framework, for handling HTTP requests and responses. Nest JS provides a modular structure and built-in support for TypeScript, making development more organized and maintainable.
    • Complete backend is written in TypeScript�
  • Microservices
    • Our backend consists of four microservices:
      • API Microservice
      • SELL Microservice
      • MONITOR Microservice
      • NOTIFIER Microservice

4 of 16

  • Data Storage:
    • MySQL: We utilize MySQL hosted on AWS RDS for persistent data storage. MySQL is a reliable and scalable relational database management system that ensures data integrity and provides ACID-compliant transactions.�
  • Additional Components:
    • Elasticsearch: Used for efficient search functionality.
    • Redis: Acts as a cache and message broker, enhancing performance and facilitating communication between microservices.
    • Logstash: Handles logging and data processing, collecting and analyzing log data from various components in real-time.
    • AWS SQS Queue: Provides scalable and reliable message queuing service, facilitating asynchronous communication and decoupling of components.
    • AWS SNS: Enables pub/sub messaging for amazon integration.
    • AWS Simple Email Service: Integrates with AWS SES for sending notifications and alerts to users via email.
    • AWS Translate: Enables multilingual support, enabling translation of text-based content.
    • Discord Bots: Integrates with Discord API to facilitate communication and engagement with users via Discord chatbots.
    • AWS Lambda Function: Executes serverless functions in response to events, enabling scalable and cost-effective processing of background tasks and automation.
    • Firebase: Incorporates Firebase FCM service for push notifications.
    • AWS S3: scalable object storage for storing and retrieving reports and images.
    • Vimeo: Integrates with Vimeo API for video hosting and streaming services.
    • Stripe: Utilizes Stripe API for handling online payments and transactions securely.
    • IP Stack: Provides geolocation and IP address lookup services for identifying user locations.
    • Fixer: Offers currency conversion and exchange rate data for financial applications.
    • Sentry: Offers error monitoring and reporting for identifying and resolving software issues.
    • New Relic: Provides application performance monitoring and insights for optimizing performance and user experience.

5 of 16

Backend Architecture Design

6 of 16

Microservices Architecture

- Api Microservice: Handles user authentication, authorization, and serves as the entry point for client interactions. Implements RESTful APIs for communication.

- Sell Microservice: Manages selling functionality including third party platform integration, inventory management, orders, and transactions, ensuring seamless user experience.

- Monitor Microservice: Integrate Discord Bots that collects latest website information data for our database and manage website integration with our platform.

- Notifier Microservice: Handle push notification, cron jobs and mail service of the application.

All service communicate to each other via Redis Pub/Sub functionality used as message broker and only API microservice is open to the client side.

7 of 16

Data Management

Our backend architecture employs various data management strategies and technologies to ensure reliability, performance, and scalability.

- MySQL on AWS RDS: Hosts the relational database for storing structured data. Provides ACID-compliant transactions and ensures data integrity.

- AWS Elasticsearch: Powers advanced search functionality with support for full-text search and complex queries. Scales horizontally to handle large volumes of data.

- Redis: Acts as a cache to store frequently accessed data and speed up read operations. Facilitates communication between microservices through message queues also used for storing cron and queue related task.

- AWS S3: Used for storing images and user exported data.

Note: The information data in every platform come at fast speed at huge amount for future purpose we are currently looking for option like database sharding & partitioning at the moment. Would like your comments on which strategy we should go with.

8 of 16

Authentication & Authorization: JWT Implementation

Authentication: Our platform verifies user identity through JSON Web Tokens (JWT), ensuring secure access to resources. Upon login, users are issued JWT tokens, which are then used to authenticate subsequent requests.

Authorization: JWT tokens contain encoded user roles and permissions, dictating access levels within the platform. This ensures that only authorized users can perform specific actions and access protected resources.

Integration: JWT tokens are seamlessly integrated into our platform's authentication workflow. They are generated dynamically upon user login and validated for each request, providing a robust mechanism for user authentication and authorization.

Security: Security measures are paramount in our implementation. JWT tokens feature expiration times to mitigate unauthorized access and are transmitted securely over HTTPS to prevent tampering or interception.

Future Enhancements: Looking ahead, we are exploring enhancements such as multi-factor authentication (MFA) to further bolster security and improved token management for better scalability and flexibility.

9 of 16

Frontend Architecture Overview

Our frontend is build with ReactJS, We plan to use the same code base for all our client side applications. Our web app is a Single Page application to provide users with native feel. We publish the same code base for Mobile using PWA, Desktop using electron and it runs natively on web.

Our frontend code is divided into Individual UI components, Pages and stores. For stores we are using Redux a predictable State Container so all our UI is just a reflection of the store.

10 of 16

UI challenges

The most challenging part of our UI is Add listing form that let’s user publish there listings to platforms they have selected. This is a core feature and needs to be robust and provide better experience for users then the existing platforms they are used to.

All platforms have unique inputs and some common ones all combined can be more than 50+ inputs for users to fill, To make this process smooth as possible for users we have come up with a very easy to use interface.

  • We autofill most of the inputs based on the product user enters so they can just click publish
  • Error handling so user knows about most of the problems before even clicking publish
  • Section based divide for inputs so user’s can concentrate on one part at a time.
  • Schema based form, our backend generate a schema file this schema file has all the inputs user needs to fill, this schema is very powerful it’s auto-filled, has conditions, conditional options and many more features custom made for our requirements

11 of 16

Frontend deployment

Our frontend Is deployed to vercel, our CI for our frontend is very straight forward

With every commit to main branch it’s published to our production domain. We have different deployments for development and have preview branch for all the pull request and branches.

Our web app is a static CSS and JS bundle and can be deployed to any static web hosting platforms.

12 of 16

Third Party Integrations

  • Seller Module: We have integration for multiple sell platform including Amazon, Shopify & Ebay official API’s. For facebook we have a separate chrome extension which utilizes facebook api on user end for facebook marketplace integrations. �
  • Customer Support: Intercom integration is being used in the web app side for the customer support, faq and guides.�
  • Real Time Functionality: We are utilizing socket technology for real time communication between server and client. FCM is used for relaying notification to the user.�
  • SDK: We have created a internal SDK for our sell module in the typescript that can be integrated by any client side for easy and fast implementation.�
  • Currency Conversion: We are using Fixer api for real time currency conversion in the application.�
  • Multi Language Support: AWS translate is being used to make application dynamic data multi language support.

13 of 16

Infrastructure & Deployment

Production Environment:

  • Utilizing Render for microservices hosting, seamlessly integrating CI/CD for efficient deployment and updates.
  • Redis hosted on Render ensures reliable asynchronous communication between microservices.
  • AWS RDS for scalable relational databases and Elasticsearch for robust search functionality.

Development Environment:

Leveraging a single Lightsail instance for streamlined testing and experimentation. Utilizing github action for CI/CD pipeline.

14 of 16

Monitoring and Logging

Our backend architecture includes robust monitoring and logging mechanisms to ensure system health, diagnose issues, and optimize performance.

- New Relic: Used for system monitoring of all microservices and error logging. It allow us to monitor each api request separately and filter our API that are failing or having slow response rate.

- Sentry: For Development environment we are using sentry for monitoring services and errors.

- ElasticSearch: This is used for storing logs of development environment.

15 of 16

Cost Management

Our Production Server Costs around $200 with following breakdown:

  • Render - $50 (Hosting All 4 Microservice & Redis Database)
  • AWS RDS - $50
  • AWS Elasticsearch: $40
  • Other Services - $20

Development Server Costs us $80 with AWS Lightsail being only instance.

16 of 16

Roadmap Changes

As we scale to more user following are the changes we are thinking about

  • Replacing queue and microservice communication with Kafka.
  • Implement Data Sharding as the data we get from the website comes in large quantities.