Skip to content

Commit

Permalink
docs: update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
MaddyUnderStars committed Dec 13, 2024
1 parent 2dcbed0 commit 0c0d1ce
Showing 1 changed file with 55 additions and 3 deletions.
58 changes: 55 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Shoot - Federated Instant Messenger

Shoot is an instant messenger for the fediverse.
Shoot is a (work in progress) instant messenger for the fediverse.

Connect with your friends on Shoot or other federated services like Mastodon, Pixelfed, \*key with
direct messenges, group chats, and guilds with thousands of others.
direct messenges, group chats, and guilds.

Planned featureset:

Expand All @@ -13,4 +13,56 @@ Planned featureset:
- Voice and video chat(?)
- End to end encryption(?)
- Instantly messenge your friends on other Activitypub federated services
- Or log in using your Mastodon/\*key/Pixelfed/etc account to gain access to additional features not supported by your platform, without a new identity
- Various trust/safety/antispam features

## Getting Started

Requires:
- Nodejs version 18 or higher
- Postgresql
- Git
- Optional: [Janus media server](https://janus.conf.meetecho.com/) for voice chat support
- Optional: [Redis](https://redis.io/) can be used for the inbound federation queue.

Once you have all the prerequisites set up, download and build the server:

```sh
# clone/download the latest server code
git clone https://github.com/MaddyUnderStars/shoot.git
cd shoot

npm i # install dependencies

npm run build
```

You should now create a config file.
Shoot uses the [config](https://www.npmjs.com/package/config) package for reading config files. By defualt, they will be read from the `config` directory, and supports [many file formats](https://github.com/node-config/node-config/wiki/Configuration-Files#file-formats), although Shoot's CLI only supports JSON.

You can find all available config options along with their documentation [here](https://github.com/MaddyUnderStars/shoot/blob/main/src/util/config.ts)

You can use `npm run cli -- generate-keys` to generate the public and private keys needed for federation. *You still need to enable federation by setting `federation.enaled` to `true`*
This command will also generate the JWT token used for user authentication.

Once you have your config file, you can start the server with:
```sh
npm run start
```

While you're in the server's CLI, you may also create a new user using the command:
```sh
npm run cli -- add-user [username]
```

Now you'll need a client. Head over to [shoot-client](https://github.com/MaddyUnderStars/shoot-client) for the official Shoot client.

## Contributing

I've become pretty busy with my job, so I haven't had the time to work on Shoot.
I would love if anyone interested could contribute to the project.
Feel free to open any issues or pull requests, and I'll review them when I have the time.

### Tests

You can run the tests with `npm run test`.
Shoot uses [Ava](https://github.com/avajs/ava) for testing.

0 comments on commit 0c0d1ce

Please sign in to comment.