Technologies

This documentation page outlines the technologies utilized in this project. Each technology plays a crucial role in the functionality of the project. Below is a comprehensive list of all tools, technologies, and resources used:

Frontend Technologies

Bot Studio employs SSR (Server Side Rendering) for rendering page contents, which enhances speed and provides greater control over SEO and optimization.

JavaScript Libraries

  • Bootstrap: A popular CSS framework for creating responsive, mobile-first websites, offering a wide range of pre-built components and utilities for easier design.
  • jQuery: A JavaScript library that simplifies HTML document traversal, event handling, animation, and Ajax interactions for rapid web development.
  • Chart.js: A JavaScript library for creating interactive and customizable charts on web pages, supporting various chart types such as bar, line, and pie.
  • SweetAlert 2: A JavaScript library for creating beautiful and customizable alert messages, offering a user-friendly alternative to default browser alerts.
  • Pace.js: A JavaScript library for adding loading progress bars to web pages, automatically detecting and displaying page load progress for a smoother user experience.
  • Intro.js: A JavaScript library for creating step-by-step introductions or tutorials on web pages, providing an easy way to guide developers through new features or processes.
  • Datatables.net: A JavaScript library for creating interactive and customizable data tables on web pages, supporting features like sorting, searching, and pagination.
  • D3.js: A JavaScript library for creating dynamic and interactive data visualizations on web pages, supporting various chart and graph types, making it popular for data-driven websites.
  • Ace Editor: A JavaScript library for creating code editors on web pages, supporting syntax highlighting, auto-completion, and other code editor features.
  • Prism.js: A lightweight tool for highlighting code elements, chosen for its speed and efficiency.

CSS Libraries

  • Bootstrap: A widely used CSS framework for creating responsive, mobile-friendly websites, including a range of pre-designed components and styles for professional-looking designs.
  • Font Awesome: A CSS library for adding icons to web pages, offering a large collection of customizable icons that can be easily integrated into any website.

Backend Technologies

Languages

  • JavaScript: A versatile language for creating dynamic, interactive web pages, used primarily for client-side scripting but also on the server-side with Node.js.
  • Python: A versatile language used for web development, data analysis, and more, known for its simple syntax and extensive standard library.
  • Markdown: A lightweight markup language for creating formatted text documents, commonly used in documentation and README files.
  • YAML: A human-readable data serialization language often used for configuration files and applications requiring structured data.
  • JSON: A lightweight data interchange format widely used for web APIs and configuration files.
  • EJS: The rendering engine for Bot Studio, used for rendering page content using SSR technologies.

Libraries and Frameworks

  • Node.js: A JavaScript runtime environment that allows running JavaScript code on the server-side.
  • Express: A minimal and flexible Node.js web application framework providing a robust set of features for web and mobile applications.
  • chalk: A library for styling command-line output with colors and formatting, enhancing console logs' visual appeal.
  • clone-deep: A library for creating deep copies of JavaScript objects and arrays, useful for manipulating complex data structures without altering the original data.
  • compression: Middleware for compressing HTTP responses, improving performance, and reducing bandwidth usage.
  • cookie-parser: Middleware for parsing cookies from HTTP requests and making them available in the request object.
  • dotenv: A module that loads environment variables from a .env file into process.env, commonly used in development to keep sensitive information out of version control.
  • cors: Middleware enabling cross-origin resource sharing, allowing servers to specify which origins can access their resources.
  • express-rate-limit: Middleware for limiting the number of requests a client can make to an API within a specified time period, helping prevent abuse and improving server performance.
  • express-useragent: Middleware for parsing user agent strings from HTTP requests, useful for determining the client's device or browser type.
  • mailersend: A library for sending transactional emails, providing an easy interface for integrating email functionality into applications.
  • python-shell: A library allowing the execution of Python scripts from within a Node application, useful for integrating machine learning or data analysis capabilities.
  • telegraf: A library for creating Telegram bots, providing an easy-to-use interface for handling messages, sending replies, and managing bot commands.
  • velocedb: A local JSON database created by Absyro for use as the default database in Bot Studio.
  • PM2: A process manager for Node.js applications, facilitating deployment and management of multiple instances, along with monitoring and automatic restarts.
  • Nodemon: A utility that monitors changes in Node.js applications and automatically restarts the server, simplifying development and testing.
  • xss: A module for filtering inputs to prevent XSS attacks.
  • response-time: Middleware for recording response times for requests in HTTP servers.
  • @slack/web-api: A package containing a simple, convenient, and configurable HTTP client for making requests to Slack's Web API.
  • Playwright: A framework for web testing and automation, supporting testing across Chromium, Firefox, and WebKit with a single API.
  • Discord.js: Provides more control over Discord bots, offering additional features for handling bot operations.
  • Baileys: A powerful library for creating WhatsApp bots using WhatsApp's websockets.
  • Deep Compare Objects: An NPM package developed by Amir Farzamnia for Bot Studio, used for comparing the database's previous and new data for optimized handling.
  • EJS: The rendering engine for Bot Studio, used for rendering page content with SSR techniques.
  • Front Matter: An NPM package used for retrieving front matter from markdown files.
  • Marked: A simple NPM package for converting markdown files into HTML content.
  • Pino: A logger used for WhatsApp bots and the Baileys library, disabling default logs for WhatsApp bots.
  • QRcode: A Node.js module for creating QR codes.
  • Response Time: Used for setting request response times in Express.js apps.
  • WS: A package for creating websocket clients and servers in Node.js.
  • Isolated Virtual Machine: The Isolated Virtual Machine is a Node.js library designed for running JavaScript codes in a safe environment.
  • string-similarity-js: This is an optimized package that is used to find the similarity between two given strings. This package was used for our search algorithms, such as finding items on the shop page.
  • Discord Bolt: Discord Bolt is the fastest and most straightforward Discord library for Node.js. This library was created for use in Bot Studio.

Other Tools

  • Git: Used for version control and collaboration on the Bot Studio codebase, allowing easy tracking of changes and merging of code from multiple contributors.
  • VS Code: The preferred code editor for Bot Studio development, offering a wide range of features and extensions for easier, more efficient coding.
  • Google Fonts: Provides a wide range of free and open-source fonts for consistent and visually appealing typography across all platforms.
  • Ubuntu: The preferred operating system for Bot Studio development, offering a stable and secure environment for coding.
  • Cloudflare: A content delivery network and security service used to optimize website performance and protect against cyber attacks.
  • Canva: A graphic design platform used for creating professional-looking graphics for social media, marketing materials, and more.
  • GitHub: A code hosting platform used for version control and collaboration, providing a platform for open-source contributions and community involvement.
  • Freepik: Provides free and premium graphic resources, used to find high-quality images, icons, and illustrations for various projects.
  • GitHub Actions: Used for automating processes like updating services on new updates.