]> Untitled Git - lemmy.git/blob - docs/src/contributing.md
Isomorphic docker (#1124)
[lemmy.git] / docs / src / contributing.md
1 # Contributing
2
3 Information about contributing to Lemmy, whether it is translating, testing, designing or programming.
4
5 ## Issue tracking / Repositories
6
7 - [GitHub (for issues and pull requests)](https://github.com/LemmyNet/lemmy)
8 - [Gitea (only for pull requests)](https://yerbamate.dev/LemmyNet/lemmy)
9 - [GitLab (only code-mirror)](https://gitlab.com/dessalines/lemmy)
10
11 ## Translating
12
13 Check out [Lemmy's Weblate](https://weblate.yerbamate.dev/projects/lemmy/) for translations.
14
15
16 ## Architecture
17
18 ### Front end
19
20 - The front end is written in `typescript`, using a react-like framework called [inferno](https://infernojs.org/). All UI elements are reusable `.tsx` components.
21 - The front end repository is [lemmy-ui](https://github.com/LemmyNet/lemmy-ui).
22 - The routes are at `src/shared/routes.ts`.
23 - The components are located in `src/shared/components`.
24
25 ### Back end
26
27 - The back end is written in `rust`, using `diesel`, and `actix`.
28 - The server source code is split into main sections in `src`. These include: 
29   - `db` - The low level database actions.
30     - Database additions are done using diesel migrations. Run `diesel migration generate xxxxx` to add new things.
31   - `api` - The high level user interactions (things like `CreateComment`)
32   - `routes` - The server endpoints .
33   - `apub` - The activitypub conversions.
34   - `websocket` - Creates the websocket server. 
35
36 ## Linting / Formatting
37
38 - Every front and back end commit is automatically formatted then linted using `husky`, and `lint-staged`.
39 - Rust with `cargo fmt` and `cargo clippy`.
40 - Typescript with `prettier` and `eslint`.