Custom channels list
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 233
- Forks
- 19
- Avg merge
- 9d 20h
- Merged PRs (30d)
- 3
Description
I would like to implement a channels list which contains not only the channel topic and number of users, but also show things like how active the conversation is, the current mood/vibe of the channel, as well as a short summary of the channel conversation, updated periodically.
There are also other things to consider such as if I want to mark a channel as "nsfw" for example, and be able to include or filter these explicitly in results.
I have a few considerations with regards to server-side implementation:
- METADATA - By setting this information as channel METADATA we could, as a client, query each value for each channel as they are received by the client. The problem with this is that could take a while to render depending on the size of the channels list.
- Message Tags - By including values in the Message Tag body, prefixed to the 322 numeric, we can easily reference all the data we need about a channel for the list frame by frame, meaning rendering might still be a little bit slow but each result will already be fully-formed. This also means we would need to implement some custom commands to set and change the values and propagate them to the client later in some new invented format.
I think we should go for a mix of both of these for most things, i.e. a channel operator could set the channel as nsfw using METADATA, which a user won't need to subscribe to but can still be shown in the channels list via tags, or maybe something like music or channel icon/avatar which a user could subscribe to and also show in the channels list via tags.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the existing channel-list handling and the IRC 322 numeric in the TypeScript client and server-related code. Compare the proposed METADATA and message-tag approaches, including how channel operators would set values and how clients would filter them. Done means a defined, implemented, and documented channel-list format supporting the requested metadata and filters.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend-api-design, full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100