Learn using Shoulder.dev Shoulder.dev transforms codebases into tailored learning experiences. Below are organized categories of the codebase to help you start with your initial focus. Ruby on Rails The core framework used for GitLab’s web application. Learn about its structure, conventions, and common libraries used. Git GitLab is built around Git version control. Understanding Git commands and concepts is crucial for interacting with the codebase. PostgreSQL The relational database system powering GitLab. Learn about database design, querying, and migrations. Redis Used for caching and other data storage needs. Understanding Redis commands and how it interacts with GitLab is essential. Sidekiq Background job processing system for tasks like email sending, CI/CD, and background updates. Puma The web server used for GitLab, responsible for handling incoming web requests. GitLab CI/CD GitLab’s built-in continuous integration and continuous delivery system. Learn about its configuration, runners, jobs, and pipelines. GitLab API Learn how to interact with GitLab programmatically through its REST API. GraphQL The query language used for more efficient and powerful data fetching in GitLab. Vue.js The JavaScript framework used for building user interfaces in GitLab, especially for front-end interactions. React Used in specific parts of the user interface for advanced functionality. Security Learn about security best practices and how GitLab handles sensitive data. Authentication and Authorization Understand how GitLab manages user authentication and authorization, including OAuth, LDAP, and two-factor authentication. CI/CD Security Focus on securing CI/CD pipelines, including vulnerability scanning, secret management, and secure runner configuration. DevOps Practices Learn how GitLab promotes DevOps principles like collaboration, automation, and continuous improvement. Testing Understand how the GitLab codebase is tested, including unit tests, integration tests, and end-to-end testing. Debugging Learn about debugging tools and techniques for troubleshooting issues within GitLab. GitLab Development Kit A tool for setting up a development environment and running tests locally. GitLab Architecture Understand the high-level design and components of GitLab, including the web application, API, and database interactions. Data Transfer Learn about data transfer mechanisms in GitLab, including importing and exporting data from different sources. Internationalization and Localization Understand how GitLab supports multiple languages and locales.