debian-mirror-gitlab/doc/development/fe_guide/index.md

119 lines
4.1 KiB
Markdown
Raw Normal View History

2017-08-17 22:00:37 +05:30
# Frontend Development Guidelines
This document describes various guidelines to ensure consistency and quality
across GitLab's frontend team.
## Overview
2019-12-21 20:55:43 +05:30
GitLab is built on top of [Ruby on Rails](https://rubyonrails.org) using [Haml][haml] and also a JavaScript based Frontend with [Vue.js](https://vuejs.org).
Be wary of [the limitations that come with using Hamlit][hamlit-limits]. We also use [SCSS](https://sass-lang.com) and plain JavaScript with
2018-10-15 14:42:47 +05:30
modern ECMAScript standards supported through [Babel][babel] and ES module support through [webpack][webpack].
2019-03-02 22:35:43 +05:30
Working with our frontend assets requires Node (v8.10.0 or greater) and Yarn
(v1.10.0 or greater). You can find information on how to install these on our
2017-08-17 22:00:37 +05:30
[installation guide][install].
### Browser Support
For our currently-supported browsers, see our [requirements][requirements].
2019-10-12 21:52:04 +05:30
Use [BrowserStack](https://www.browserstack.com/) to test with our supported browsers. Login to BrowserStack with the credentials saved in GitLab's [shared 1Password account](https://about.gitlab.com/handbook/security/#1password-for-teams).
2019-07-07 11:18:12 +05:30
## Initiatives
Current high-level frontend goals are listed on [Frontend Epics](https://gitlab.com/groups/gitlab-org/-/epics?label_name%5B%5D=frontend).
## [Principles](principles.md)
High-level guidelines for contributing to GitLab.
2018-10-15 14:42:47 +05:30
## [Development Process](development_process.md)
2019-07-07 11:18:12 +05:30
2018-10-15 14:42:47 +05:30
How we plan and execute the work on the frontend.
2017-08-17 22:00:37 +05:30
## [Architecture](architecture.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
How we go about making fundamental design decisions in GitLab's frontend team
or make changes to our frontend development guidelines.
2018-03-17 18:26:18 +05:30
## [Testing](../testing_guide/frontend_testing.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
How we write frontend tests, run the GitLab test suite, and debug test related
issues.
2019-12-21 20:55:43 +05:30
## Pajamas Design System
Reusable components with technical and usage guidelines can be found in our
[Pajamas Design System](https://design.gitlab.com/).
2017-08-17 22:00:37 +05:30
## [Design Patterns](design_patterns.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
Common JavaScript design patterns in GitLab's codebase.
## [Vue.js Best Practices](vue.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
Vue specific design patterns and practices.
2018-10-15 14:42:47 +05:30
## [Vuex](vuex.md)
2019-07-07 11:18:12 +05:30
2018-10-15 14:42:47 +05:30
Vuex specific design patterns and practices.
2017-08-17 22:00:37 +05:30
2018-03-17 18:26:18 +05:30
## [Axios](axios.md)
2019-07-07 11:18:12 +05:30
2018-03-17 18:26:18 +05:30
Axios specific practices and gotchas.
2019-02-15 15:39:39 +05:30
## [GraphQL](graphql.md)
2019-07-07 11:18:12 +05:30
2019-02-15 15:39:39 +05:30
How to use GraphQL
2018-11-08 19:23:39 +05:30
## [Icons and Illustrations](icons.md)
2019-07-07 11:18:12 +05:30
2018-11-08 19:23:39 +05:30
How we use SVG for our Icons and Illustrations.
2018-03-17 18:26:18 +05:30
2019-07-31 22:56:46 +05:30
## Frontend FAQ
Read the [frontend's FAQ](frontend_faq.md) for common small pieces of helpful information.
2017-08-17 22:00:37 +05:30
## Style Guides
2020-01-01 13:55:28 +05:30
See the relevant style guides for our guidelines and for information on linting:
2017-08-17 22:00:37 +05:30
2020-01-01 13:55:28 +05:30
- [JavaScript](style/javascript.md). Our guide is based on
2017-08-17 22:00:37 +05:30
the excellent [Airbnb][airbnb-js-style-guide] style guide with a few small
changes.
2020-01-01 13:55:28 +05:30
- [SCSS](style/scss.md): our SCSS conventions which are enforced through [`scss-lint`](https://github.com/brigade/scss-lint).
- [HTML](style/html.md). Guidelines for writing HTML code consistent with the rest of the codebase.
- [Vue](style/vue.md). Guidelines and conventions for Vue code may be found here.
2017-08-17 22:00:37 +05:30
2020-01-01 13:55:28 +05:30
## Tooling
2017-08-17 22:00:37 +05:30
2020-01-01 13:55:28 +05:30
Our code is automatically formatted with [Prettier](https://prettier.io) to follow our guidelines. Read our [Tooling guide](tooling.md) for more detail.
2017-08-17 22:00:37 +05:30
## [Performance](performance.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
Best practices for monitoring and maximizing frontend performance.
## [Security](security.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
Frontend security practices.
## [Accessibility](accessibility.md)
2019-07-07 11:18:12 +05:30
2017-08-17 22:00:37 +05:30
Our accessibility standards and resources.
2018-03-17 18:26:18 +05:30
## [Internationalization (i18n) and Translations](../i18n/externalization.md)
2019-07-07 11:18:12 +05:30
2018-03-17 18:26:18 +05:30
Frontend internationalization support is described in [this document](../i18n/).
The [externalization part of the guide](../i18n/externalization.md) explains the helpers/methods available.
2017-08-17 22:00:37 +05:30
[haml]: http://haml.info/
[hamlit]: https://github.com/k0kubun/hamlit
[hamlit-limits]: https://github.com/k0kubun/hamlit/blob/master/REFERENCE.md#limitations
[babel]: https://babeljs.io/
[webpack]: https://webpack.js.org/
[jquery]: https://jquery.com/
2018-03-27 19:54:05 +05:30
[axios]: https://github.com/axios/axios
2017-08-17 22:00:37 +05:30
[airbnb-js-style-guide]: https://github.com/airbnb/javascript
[install]: ../../install/installation.md#4-node
[requirements]: ../../install/requirements.md#supported-web-browsers