2020-01-17 22:52:48 +00:00
# Contributing
Information about contributing to Lemmy, whether it is translating, testing, designing or programming.
2020-03-18 23:59:34 +00:00
## Issue tracking / Repositories
2020-06-24 18:08:17 +00:00
- [GitHub (for issues and pull requests) ](https://github.com/LemmyNet/lemmy )
- [Gitea (only for pull requests) ](https://yerbamate.dev/LemmyNet/lemmy )
2020-10-04 19:01:12 +00:00
- [Codeberg ](https://codeberg.org/LemmyNet/lemmy )
2020-03-18 23:59:34 +00:00
2020-01-17 22:52:48 +00:00
## Translating
2020-04-09 20:11:11 +00:00
Check out [Lemmy's Weblate ](https://weblate.yerbamate.dev/projects/lemmy/ ) for translations.
2020-01-17 22:52:48 +00:00
## Architecture
### Front end
- The front end is written in `typescript` , using a react-like framework called [inferno ](https://infernojs.org/ ). All UI elements are reusable `.tsx` components.
2020-09-15 19:26:47 +00:00
- The front end repository is [lemmy-ui ](https://github.com/LemmyNet/lemmy-ui ).
- The routes are at `src/shared/routes.ts` .
- The components are located in `src/shared/components` .
2020-01-17 22:52:48 +00:00
### Back end
- The back end is written in `rust` , using `diesel` , and `actix` .
2020-09-15 19:26:47 +00:00
- The server source code is split into main sections in `src` . These include:
2020-01-17 22:52:48 +00:00
- `db` - The low level database actions.
- Database additions are done using diesel migrations. Run `diesel migration generate xxxxx` to add new things.
- `api` - The high level user interactions (things like `CreateComment` )
- `routes` - The server endpoints .
- `apub` - The activitypub conversions.
- `websocket` - Creates the websocket server.
## Linting / Formatting
- Every front and back end commit is automatically formatted then linted using `husky` , and `lint-staged` .
- Rust with `cargo fmt` and `cargo clippy` .
- Typescript with `prettier` and `eslint` .