Repository Structure
    • Dark
      Light
    • PDF

    Repository Structure

    • Dark
      Light
    • PDF

    Article summary

    Gaining a deep understanding of QuickMeet.Chat’s server repository structure is a foundational requirement for developers. The QuickMeet.Chat server's architectural design prioritizes modularity and clarity, reflected in the repository structure, segregating functions for diverse developer levels.

    QuickMeet.Chat uses a monorepo to house essential code and packages required by various QuickMeet.Chat projects, such as the Apps-Engine and Livechat. This makes maintaining and sharing the code easier and allows developers to work on different projects simultaneously.

    QuickMeet.Chat builds its components using the Meteor framework and React. To understand the QuickMeet.Chat repository structure, you should be familiar with the Meteor and React project structures.

    In the near future, QuickMeet.Chat will move away from Meteor to a more manual structure, which will allow it to be more flexible and scalable.

    This document helps you navigate and understand the server’s components, directories, functionalities, and organizational principles.

    Directory structure

    QuickMeet.Chat
    ├── README.md
    ├── _templates/
    ├── apps/
    │   └── meteor/
    │       ├── app/            # Features of QuickMeet.Chat
    │       ├── client/         # General frontend only related code 
    │       ├── definition/
    │       ├── ee/             # Enterprise related code
    │       ├── imports/
    │       ├── install.sh*
    │       ├── lib/            # Helper functions, classes, and methods
    │       ├── package.json
    │       ├── packages/       # Meteor packages customized in use
    │       ├── private/        # Private files and assets only available within the project
    │       ├── public/         # Publicly available files served directly from the project root
    │       ├── server/         # Server side only code
    │       ├── tests/          # Tests
    ├── ee/
    │   └── apps/
    ├── package.json
    ├── packages/               # Houses sharable code that can be used by different projects
    │   ├── agenda/
    │   ├── api-client/
    │   ├── cas-validate/
    │   ├── core-typings/       # Type definitions used for core QuickMeet.Chat
    │   │   ├── src/
    │   ├── eslint-config/      # Config files and rules for code and unit tests
    │   │   ├── best-practices/
    │   │   ├── errors/
    │   │   ├── ...
    │   │   └── variables/
    │   ├── livechat/
    │   ├── model-typings/
    │   ├── models/
    │   ├── rest-typings/        # Signatures of endpoints
    │   ├── ui-client/
    │   ├── ui-contexts/
    │   └── ui-video-conf/
    • apps/meteor/app/: This directory shows the various features QuickMeet.Chat offers. Each primary folder here contains a client/ and server/ subdirectory, housing feature-specific code for the feature, respectively. Occasionally, a lib/ directory contains code usable by both the app's server and client.

    To learn more, see the Meteor guide.

    QuickMeet.Chat is incorporating new features that won't adhere to the legacy Meteor structure within the apps/ directory. These new features will adopt a distinct structure, while the existing code structure will continue to be mantained.

    • apps/meteor/client/views/: Every QuickMeet.Chat page a client-side user interacts with is a result of multiple components working together. A good starting point for beginners to see how this works is the apps/meteor/client/views/ directory, which contains all of the views for QuickMeet.Chat. The root view of QuickMeet.Chat is the first file that is executed when a user opens QuickMeet.Chat in their web browser can be found at apps/meteor/client/views/root/AppRoot.tsx.

    • apps/meteor/client/lib/: This is a collection of objects that are reused on all client sides. This exists to limit code duplication, encourage contributors to use the code already in the codebase, and avoid re-implementing logic or re-creating functions.

    • apps/meteor/packages/: This directory houses any meteor packages used in the project or customized for a specific purpose. Notable examples include the meteor-accounts-linkedin for LinkedIn login service, rocketchat-i18n for internationalization, etc.

    • apps/meteor/server/methods/: This directory contains all meteor methods

    • apps/meteor/server/lib/: This directory holds versatile functions related to server-side code.

    Now that you are familiar with the repository structure, you can confidently continue with your server environment setup.


    Was this article helpful?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.
    ESC

    Eddy AI, facilitating knowledge discovery through conversational intelligence