mirror of
https://github.com/spacebarchat/docs.git
synced 2024-11-08 19:32:30 +01:00
Update contributing
This commit is contained in:
parent
4ec439d122
commit
135e55a18b
@ -2,12 +2,15 @@
|
|||||||
|
|
||||||
!!! info "[Have you read the Code of Conduct?](conduct.md)"
|
!!! info "[Have you read the Code of Conduct?](conduct.md)"
|
||||||
|
|
||||||
## Notable Technologies
|
## Style and a note on etiquette
|
||||||
|
|
||||||
- Typescript
|
- We use [prettier](https://www.npmjs.com/package/prettier) for code formatting. We have a `.prettierrc` file in fosscord-server's root
|
||||||
- [Typeorm](https://www.npmjs.com/package/typeorm)
|
and use a git precommit hook to autorun it.
|
||||||
- [WS](https://www.npmjs.com/package/ws)
|
- Try to stay consistent with the rest of the project
|
||||||
- [Express](https://www.npmjs.com/package/express)
|
- Try to keep each commit to a single feature or idea, with descriptions of what it is and why it is done. No "Large refactor" commits that touch every file.
|
||||||
|
- Leave comments in your code about why something is done when appropriate, not just what it is doing.
|
||||||
|
- If you're working on a feature, please announce that you're working on it (in the relevant GH issue or our Discord, preferably both), so that we can work more effectively.
|
||||||
|
Additionally, please do not try to snipe features that others are working on.
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
@ -18,14 +21,17 @@ Fosscord is written in Typescript and is comprised of 4 main parts:
|
|||||||
- HTTP CDN server for storing user file content.
|
- HTTP CDN server for storing user file content.
|
||||||
- `utils` module to separate our database models, schemas, and other things from the above 3 components.
|
- `utils` module to separate our database models, schemas, and other things from the above 3 components.
|
||||||
|
|
||||||
### Gateway
|
## Implementing endpoints, opcodes, etc
|
||||||
|
|
||||||
The Gateway is a WebSocket server that is responsible for listening and emitting events to/from connected clients.
|
Generally, the approach is to just see what the Discord.com client sends and receives from Discord.com (through your browsers devtools, for example)
|
||||||
|
and guessing about any functionality server-side, if it's undocumented.
|
||||||
|
|
||||||
### API
|
For a lot of things it's pretty simple to guess, `GET /api/users/@me` returns private details about your user for example.
|
||||||
|
This route is also detailed in [Discords own documentation](https://discord.com/developers/), [here specifically](https://discord.com/developers/docs/resources/user#get-current-user).
|
||||||
|
|
||||||
The API is a HTTP REST server which does the bulk of the database reads/writes.
|
Discords does not document anything that is not related to application/bot development, though.
|
||||||
|
As an example, `GET /api/updates?platform={}` which returns the `url`, `pub_date`, `name` and any `notes` about the latest client release for a platform.
|
||||||
|
|
||||||
## Documentation
|
For the Gateway it's the same procedure, except now you can't use the network logger of your devtools
|
||||||
|
because the gateway returns responses encoded with [erlpack](https://github.com/discord/erlpack).
|
||||||
Unfortunately writing documentation is quite annoying. There's tons of comments in the codebase tho, so don't worry :)
|
Easy fix though, just edit the `DeveloperOptionsStore` localStorage key so that `logGatewayEvents` is true, and reload the client.
|
||||||
|
Loading…
Reference in New Issue
Block a user