Git Product home page Git Product logo

nests's Introduction

Room

Following NIP-53 using kind: 30311

service tag is added to point clients to the API which controls the room access

{
  "kind": 30311,
  "tags": [
    ["d", "<unique identifier>"],
    ["title", "<name of the event>"],
    ["summary", "<description>"],
    ["image", "<preview image url>"],
    ["t", "hashtag"],
    ["streaming", "<url>"],
    ["starts", "<unix timestamp in seconds>"],
    ["ends", "<unix timestamp in seconds>"],
    ["status", "<planned, live, ended>"],
    ["relays", "wss://one.com", "wss://two.com", ...],
    ["service", "https://nostrnests.com/api/v1/nests"],
  ],
  "content": "",
  ...
}

In order to make it more obvious the type of streaming backend being used the url should be one of the following:

  • wss+livekit://example.com - LiveKit websocket.
  • https://example.com/live.m3u8 - HLS playlist.

If the room is a LiveKit room clients should auth with the service tag using NIP-98 auth at <service-url>/auth to obtain an access token.

Other systems can be supported in the future by defining different streaming url formats.

Room Chat

Sames as NIP-53 kind: 1311, there is no reason to have another kind here as they always have a tag.

{
  "kind": 1311,
  "tags": [
    ["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>", "root"]
  ],
  "content": "Zaps to live streams is beautiful.",
  ...
}

Room Presence

New kind: 10312 provides an event which signals presence of a listener.

The presence event SHOULD be updated at regular intervals and clients SHOULD filter presence events older than a given time window.

This kind 10312 is a regular replaceable event, as such presence can only be indicated in one room at a time.

{
  "kind": 10312,
  "tags": [
    ["a" , "<room-a-tag>", "<relay-hint>", "root"],
    ["hand", "1"] // hand raised flag
  ]
}

ZapSplits

Zap splits should be set on the room kind: 30311 as NIP-57.G zap tags

Testing

Start by bringing up the dev env: docker compose up -d

Generate an access token using nak:

curl http://localhost:5544/api/v1/nests/auth -H "Authorization: Nostr $(nak event -k 27235 -t method=GET -t u=http://localhost:5544/api/v1/nests/auth | base64)"

Connect to the livekit room:

https://meet.livekit.io/custom?liveKitUrl=ws://localhost:7880&token=<token>

nests's People

Contributors

v0l avatar

Stargazers

Richard J. Safier avatar  avatar tigs avatar Niall Young avatar Venor avatar Marcelinho avatar Paul Capestany avatar LeitaoMD avatar Jonatas Martins avatar Jack Chakany avatar 22388o⚡️  avatar aurelienmaurel avatar Patrick Ulrich avatar  avatar Derek Ross avatar

Watchers

Derek Ross avatar  avatar  avatar  avatar tigs avatar  avatar

nests's Issues

Raiding other nests

Inspired by Twitch: raiding other nests

how about forwarding visitors of your nest to other nests once you shut down your nest?

I think that's something people would appreciate.

Zap window doesn't close

When zapping another user, the zap window doesnt automatically close.

This is because we dont know if the invoice is paid.

Using the zaps feed we COULD detect a payment is complete my comparing the zaps paymentHash to the paymentHash of the invoice displayed and automatically close it.

Chat moderation

Add chat moderation features the same as zap.stream

  • Mute user
  • Hide muted users from own mute list
  • Hide muted users from room host

Feature Request: Scheduled Nests should be shown in chronological order

The current implementation looks like this:
image and is confusing for users. This should be changed to show scheduled Nests in chronological order. We also previously discussed hiding Nests that were scheduled far out into the future as well. Maybe this would be a good time to implement that as well? By default show scheduled Nests in chronological order for Nests scheduled in the nest 7 days. Anything else can be viewed 'View All Scheduled' in an overflow / toggle button.

Reloading room should refresh token

When you reload the page while in a room, it uses the (probably) expired token.

2 options:

  1. Use the latest token which is being refreshed in the background
  2. Get a new token if we get auth issue

Ref: #17

Room volume control

Add controls to the room audio level (playback)

Sometimes you may need to do something else while keeping the room open so adjusting the room audio volume or muting the room audio can be useful.

Improve reactions display

Reactions currently show for a short time on the avatars.

Its easy to miss people reacting so reactions should be more obvious, maybe animate them as rising from the avatar like smoke.

Room list presence

On the room list page the presence events should be queried from the relays listed in the relays tag of each room instead of the default relay list

Mic volume adjusted on OS

Sometimes mic volumes are adjusted automatically on the OS when using nests even though AGC is disabled, not sure why..

Joining room from flyout broken

When joining another room from the profile flyout, the room audio doesn't connect to the new room instead it stays connected to the current room.

The flyout also doesn't close.

This may be because we use navigate with state object. I assume there is a react hook dependency

[Feature Request] Implement Bitcoin Connect

It would be cool If users could connect their lightning wallets and zap directly on Nostr Nest!

Bitcoin Connect is an easy to implement web component that allows it through WebLN (and NWC).
When implemented could easily connect their Alby, Mutiny, Umbrel, lnbits and some other wallets (and list is growing) to do payments directly from their own wallet (without confirmations or QR codes). And all that without the need to install WebLN browser extension

More about Bitcoin Connect on Github and website.

We can't join the room and high latency

I've identified two significant issues with nostrnests that need attention: room access and high latency

Room Access Issue:

Users encounter difficulties joining rooms, preventing them from participating effectively

The problem persists across different browsers, such as Firefox and Microsoft Edge, Opera

High Latency:

Latency during conversations is unacceptably high, ranging from 2-20 seconds
This delay impedes smooth communication, causing inconvenience for users

swappy-20240227-231106

Swipe gesture chat

Support swipe gestures to open/close the chat window on mobile,

The same should be supported for the profile flyout

Push profile updates to more relays

When updating profile, use a blaster relay or push to a larger set of relays.

The current implementation will broadcast to the current relay list, which may be a restricted relay set.

Lobby flyout

Similar to the profile flyout, create another flyout on the left which will display the room list (lobby)

Bunker token (NIP-46) sign in not working with valid bunker tokens

Nostr nests is not accepting a valid bunker token.

nsec.app produces tokens that look like this:

bunker://<key>?relay=wss://relay.nsec.app&secret=<secret>

However when pasting this into the "Nostr Address" field and attempting to log in, I get the error: "Not a valid nostr address".

Removing the query parameters did not fix this.

[feature request] Add screen sharing

A screen sharing function for the host in the nest would be great.

I've mentioned this topic before, but I thought I'd just write it as a feature request in your issue tracker.

I love the new nostr nests anyway

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.