Dependencies

Here you will see all the packages so we used them during the development of our application. We also provide a brief description and one or more places where we used it.

Backend

N.B. Information about some services such as AWS or Sentry etc. you will find in related block of documentation. The same rule applies to the frontend part of this block.

  1. AWS SDK Packages: We used these packages with Minio to store the files in the vault. Also as additional option to mail sender.

    • @aws-sdk/client-s3@^3.504.0: S3 client to manage file storage on AWS.

    • @aws-sdk/s3-request-presigner@^3.592.0: Enables presigned URLs for S3 file access.

    • @aws-sdk/client-ses@^3.504.0: Client for sending emails through Amazon Simple Email Service (SES).

  2. NestJS Core & Extensions:

    • @nestjs/common@^10.3.1: Core decorators and helper functions for NestJS applications.

    • @nestjs/core@^10.3.1: The main core for building NestJS applications.

    • @nestjs/event-emitter@^2.0.4: Adds event-driven functionality within NestJS.

    • @nestjs/jwt@^10.2.0: Provides JWT utilities to integrate JSON Web Token authentication.

    • @nestjs/mapped-types@*: Tools to define and transform TypeScript types.

    • @nestjs/passport@^10.0.3: Integrates NestJS with the Passport authentication library.

    • @nestjs/platform-express@^10.3.1: Integrates NestJS with the Express framework.

    • @nestjs/schedule@^4.1.0: Adds support for scheduling and running cron jobs in NestJS. Example you can find in Payment module where we synchronized subscriptions in DB with subscriptions on Stripe dashboard.

    • @nestjs/throttler@^5.1.2: Adds request throttling to limit repeated requests. Used in "search" methods in Leads, Businesses and User Admin modules.

    • @nestjs/typeorm@^10.0.1: Integrates TypeORM with NestJS for database management.

  3. Email and Notifications:

    • @sendgrid/mail@^8.1.0: Allows sending emails through SendGrid's email API. How to setup it and to use it please read Mailer block of documentation.

    • @sentry/nestjs@^8.33.1: Sentry integration for error monitoring in NestJS.

    • @sentry/profiling-node@^8.33.1: Adds Sentry profiling to monitor app performance.

  4. Authentication & Authorization:

    • passport@^0.7.0: Main Passport library for authentication strategies.

    • passport-facebook@^3.0.0: Implements Facebook OAuth authentication.

    • passport-google-oauth2@^0.2.0: Implements Google OAuth 2.0 authentication.

    • passport-jwt@^4.0.1: Provides JWT-based authentication strategy for Passport.

    • nest-casl@^1.9.2: Adds CASL-based role and permission management in NestJS.

  5. Data Validation & Transformation:

    • class-transformer@^0.5.1: Transforms plain JavaScript objects into class instances.

    • class-validator@^0.14.1: Provides decorators to validate data based on set rules.

  6. Database & ORM:

    • pg@^8.11.3: PostgreSQL client for database connectivity.

    • typeorm@^0.3.20: ORM for managing entities, relationships, and queries.

    • typeorm-extension@^3.5.0: Adds support for TypeORM features like migrations.

  7. Utility Libraries:

    • axios@^1.6.7: HTTP client for making API requests.

    • bcryptjs@^2.4.3: Hashes passwords for secure storage.

    • dayjs@^1.11.10: Library for date manipulation.

    • dotenv@^16.4.4: Loads environment variables from .env files.

    • hawk@^9.0.1: Security library for HTTP authentication.

    • jsonwebtoken@^9.0.2: Generates and verifies JSON Web Tokens.

    • jwt-decode@^4.0.0: Decodes JSON Web Tokens on the client side.

    • qrcode@^1.5.3: Generates QR codes. Used in Two-factor authentication.

    • reflect-metadata@^0.2.1: Adds support for metadata reflection.

    • rimraf@^5.0.5: Utility to delete files and directories.

    • rxjs@^7.8.1: Reactive extensions for handling asynchronous events.

    • uuid@^9.0.1: Generates unique identifiers.

  8. Data Generation:

    • @faker-js/faker@^8.4.1: Generates fake data for testing, such as names, emails, and addresses. How this was used, please read Demo block of documentation.

  9. File & PDF Handling:

    • @types/multer@^1.4.11: TypeScript definitions for Multer, a file-uploading middleware.

    • wkhtmltopdf@^0.4.0: Converts HTML files to PDFs, commonly used for generating reports. File import usage you will find in File module.

  10. Payment Processing:

    • stripe@^14.20.0: Official Stripe API library for handling payments.

    • @golevelup/nestjs-stripe@^0.6.5: Adds Stripe integration for NestJS applications.

    How to setup it and use please read Subscription (Stripe) block.

  11. Templating:

    • handlebars@^4.7.8: Templating engine for generating dynamic HTML content, often used in email templates. Used to form email templates.

Frontend

  1. UI & Icons:

    • @ant-design/icons@^5.2.6: Icon library for Ant Design components. Alternative to Flaticon.

    • @flaticon/flaticon-uicons@^3.3.0: Flaticon’s icon pack for additional visual assets. How to setup and to use please read Style block.

    • antd@^5.20.0: Ant Design, a popular React UI library.

    • antd-img-crop@^4.21.0: Image cropper component for Ant Design.

  2. Drag and Drop: Used in App Settings, Lead Statuses.

    • @dnd-kit/core@^6.1.0: Core DnD kit for drag-and-drop functionality.

    • @dnd-kit/sortable@^8.0.0: Adds sorting capabilities for draggable items.

    • @dnd-kit/utilities@^3.2.2: Utility functions for the DnD kit.

  3. PDF Generation:

    • @react-pdf/renderer@^3.3.4: Allows PDF generation directly from React components.

  4. Payment Integration:

    • @stripe/react-stripe-js@^2.6.2: React wrapper for Stripe.js to handle payments.

    • @stripe/stripe-js@^3.0.10: Core Stripe.js library for handling payments.

  5. Testing Libraries:

    • @testing-library/jest-dom@^6.3.0: Custom Jest matchers for DOM nodes.

    • @testing-library/react@^14.1.2: Testing utilities for React components.

    • @testing-library/user-event@^14.5.2: Simulates user interactions in tests.

  6. Hooks: UseMediaQuery hook. Can be found in ui/src/hooks/

    • @uidotdev/usehooks@^2.4.1: Collection of reusable React hooks.

  7. Data Visualization: Dashboard Page.

    • chart.js@^4.4.3: Charting library for data visualization.

    • chartjs-plugin-datalabels@^2.2.0: Plugin for displaying labels on Chart.js charts.

    • react-chartjs-2@^5.2.0: React wrapper for Chart.js, making it easier to use in React apps.

  8. Date Handling:

    • dayjs@^1.11.12: Lightweight date manipulation library.

  9. Environment Management:

    • env-cmd@^10.1.0: Manages and loads environment variables from files.

  10. Animations: Framer Motion block.

  • framer-motion@^11.3.2: Animations and transitions for React components.

  1. Internationalization (i18n): I18n block.

  • i18next@^23.11.5: Core internationalization library.

  • i18next-browser-languagedetector@^8.0.0: Detects user language in the browser.

  • i18next-http-backend@^2.5.2: Backend plugin for loading translations from an HTTP server.

  • react-i18next@^14.1.2: Integration of i18next with React for translation management.

  1. Utilities:

  • axios@^1.6.7: HTTP client for API requests.

  • jwt-decode@^4.0.0: Decodes JSON Web Tokens.

  • memoize@^10.0.0: Memoization library for caching results of function calls.

  1. React and Related:

  • react@^18.2.0: Core React library.

  • react-dom@^18.2.0: DOM bindings for React.

  • react-infinite-scroll-component@^6.1.0: Infinite scrolling functionality for React. Logs and comments on Leads and Businesses pages.

  • react-phone-input-2@^2.15.1: React component for handling international phone inputs.

  • react-router-dom@^6.21.3: Routing library for React applications.

  • react-scripts@5.0.1: Scripts and configurations for Create React App projects.

  1. Styling:

  • sass@^1.70.0: CSS preprocessor for writing styles in SCSS/SASS.

  1. Web Performance:

  • web-vitals@^3.5.2: Measures and reports web performance metrics, such as Core Web Vitals.

Last updated