* get hidden user by util * add tests for changed actions * add tests for getting users from local storage
Frontend guide
Code Style
- project uses typescript to statically analyze code
- project uses
eslintto check frontend code. You can manually run vianpm run lint. - git hooks (via husky) installed automatically on
npm installand check and try to fix code style if possible, otherwise commit will be rejected - if you want IDE integration, you need
eslintplugin to be installed.
CSS Styles
- although styles have
scssextension, it is actually pack of post-css plugins, so syntax differs, for example incalcfunction. - component styles use BEM notation (at least it should):
block__element_modifier. Also there aremixclasses:block_modifier. - component base style resides in the component's root directory with name of component converted to kebab-case. For example
ListCommentsstyle is located in./app/components/list-comments/list-comments/scss - component's element style resides in its own subdirectory, with name consisting of full elements selector, for example
ListCommentsitemelement is placed in__itemdirectory under name./list-comments__item.scss - each style should be
required inindex.tsof component's root directory
Imports
- imports for typescript, javascript files should be without extension:
./index, not./index.ts - if file resides in same directory or in subdirectory import should be relative:
./types/something - otherwise it should start from
@appnamespace:@app/common/storewhich mapped to/app/common/store.tsin webpack, tsconfig and jest
Testing
- project uses
jestas test harness. - jest check files that match regex
\.test\.(j|t)s(x?)$, i.ecomment.test.tsx,comment.test.js - tests are running on push attempt
- example tests can be found in
./app/store/user/reducers.test.ts,./app/components/auth-panel/auth-panel.test.tsx
how to add new locale.
- add new item to
./tasks/supportedLocales.json - run
npm run generate-langs - commit all changed files
- translate all string in new generated dictionary
./app/locale/<new-locale>.json
Notes
- Frontend part being bundled on docker env gets placed on
/src/weband is available viahttp://{host}/web. for exampleembed.jsentry point will be available athttp://{host}/web/embed.js