]> Untitled Git - lemmy.git/blob - docs/src/contributing.md
Add more info to contributing. Fixes #429
[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 ## Translating
6
7 Go [here](https://github.com/dessalines/lemmy#translations) for translation instructions.
8
9 ## Architecture
10
11 ### Front end
12
13 - The front end is written in `typescript`, using a react-like framework called [inferno](https://infernojs.org/). All UI elements are reusable `.tsx` components.
14 - The main page and routing are in `ui/src/index.tsx`.
15 - The components are located in `ui/src/components`.
16
17 ### Back end
18
19 - The back end is written in `rust`, using `diesel`, and `actix`.
20 - The server source code is split into main sections in `server/src`. These include: 
21   - `db` - The low level database actions.
22     - Database additions are done using diesel migrations. Run `diesel migration generate xxxxx` to add new things.
23   - `api` - The high level user interactions (things like `CreateComment`)
24   - `routes` - The server endpoints .
25   - `apub` - The activitypub conversions.
26   - `websocket` - Creates the websocket server. 
27
28 ## Linting / Formatting
29
30 - Every front and back end commit is automatically formatted then linted using `husky`, and `lint-staged`.
31 - Rust with `cargo fmt` and `cargo clippy`.
32 - Typescript with `prettier` and `eslint`.