Comment on page
Gaining a deep understanding of our server repository's structure is a foundational requirement for developers. In this guide, you'll gain insight into the organized framework of the Rocket.Chat server repository, facilitating your navigation and understanding of its key components.
The Rocket.Chat Server embodies readability, maintainability, and real-time data handling. Its architectural design prioritizes modularity and clarity, reflected in the repository structure that segregates functions for diverse developer levels. This guide delves into this structure, exploring directories, functionalities, and organizational principles.
In the near future, Rocket.Chat will be moving away from Meteor to a more manual structure, which will allow it to be more flexible and scalable.
│ └── meteor/
│ ├── app/ # Features of Rocket.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
│ └── apps/
├── packages/ # Houses sharable code that can be used by different projects
│ ├── agenda/
│ ├── api-client/
│ ├── cas-validate/
│ ├── core-typings/ # Type definitions used for core Rocket.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/
In this directory, you'll discover a range of features offered by Rocket.Chat. Each primary folder here contains a
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 .
Rocket.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.
When client-side users see a Rocket.Chat page, it's the 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 Rocket.Chat. The root view of Rocket.Chat, which is the first file that is executed when a user opens Rocket.Chat in their web browser, can be found in
It contains a collection of objects that are reused on all of the client sides. This is done to limit code duplication, encourage contributors to use the code that is already existing in the codebase, and avoid re-implementing logic or re-creating functions.
All meteor methods are located here.
apps/meteor/server/lib/directory holds versatile functions related to server-side code.
Last modified 3mo ago