GitHunt
SE

NIP-29 Group Chat (Web Client)

๐Ÿ’ฌ Groups

Introduction

"Groups" is a free and open-source chat application built on the Nostr protocol, utilizing the NIP-29 to support relay-based groups with specific moderation capabilities.
This client enables users to participate in groups managed by relays, where access and participation are governed by rules enforced by the relay.

Features

  • User-Friendly Interface:
    • โœ… Clean and intuitive design.
    • โœ… Easy navigation and group management.
    • โœ… Responsive layout for all devices.
    • โœ… Animated transitions and effects.
    • โœ… Real-time updates.
    • โœ… Built-in caching and data persistence.
    • โœ… Image and URL previews.
    • โœ… Video previews for direct links and YouTube.
    • โœ… Dark mode support.
    • ๐Ÿšง Customizable settings.
    • ๐Ÿšง Offline support.
    • ๐Ÿšง PWA support.
    • ๐Ÿšง Rich text formatting.
  • Messaging:
    • โœ… View and join existing groups.
    • โœ… Send and delete messages.
    • โœ… React to messages with emojis.
    • โœ… Reply to messages.
    • โœ… Zap to messages sender.
    • โœ… Reaction to messages.
    • โœ… upload images.
    • ๐Ÿšง Mention users in messages.
    • ๐Ÿšง Pin important messages.
    • ๐Ÿšง Receive notifications for new messages.
    • ๐Ÿšง Attach files.
    • ๐Ÿšง Create and manage threads.
    • ๐Ÿšง Create and manage polls.
  • Group Moderation:
    • โœ… Create new groups with custom settings.
      • โœ… Create group (kind 9007).
    • โœ… Edit and customize existing groups.
      • โœ… Update group metadata (kind 9002).
      • โœ… Update group status (kind 9006).
      • โœ… Delete group (kind 9008).
    • โœ… View and manage group members and admins.
      • โœ… View members (kind 39002).
      • โœ… View admins (kind 39001).
      • โœ… Remove user (kind 9001).
      • โœ… Put user (kind 9000).
    • ๐Ÿšง Moderate group content and messages.
      • โœ… Add admin permission (kind 9003).
      • โœ… Remove admin permission (kind 9004).
      • โœ… Delete message (kind 9005).
      • ๐Ÿšง Ban user.
      • ๐Ÿšง Change member to admin.
    • ๐Ÿšง Create and manage private groups.
      • โœ… Create private groups.
      • ๐Ÿšง Join private groups.

Live Demo

You can access the live demo of "Groups" at the following URL:

Supported Kinds:

  • Moderation:

    • 9000 put-user โœ…
    • 9001 remove-user โœ…
    • 9002 edit-metadata โœ…
    • 9005 delete-event โœ…
    • 9006 edit-group-status โœ…
  • Chat:

    • 7 send-reaction โœ…
    • 9 send-message โœ…
  • Group:

    • 9007 create-group โœ…
    • 9008 delete-group โœ…
    • 9021 join request โœ…
    • 9022 leave request โœ…
    • 39000 group metadata โœ…
    • 39001 group admins โœ…
    • 39002 group members โœ…

Installation

To install and run "Groups" locally, follow these steps:

  1. Clone the repository:
    git clone https://github.com/max21dev/groups.git
  2. Navigate to the project directory:
    cd groups
  3. Install dependencies:
    npm install
  4. Run the development server:
    npm run dev

Usage

Once the development server is running, you can access the chat client through your web browser. The interface will allow you to create or join groups, participate in discussions, and manage group settings.

Libraries and Tools Used

  • Vite: Frontend build tool and development server. โ†’

  • TypeScript: Strongly typed programming language that builds on JavaScript. โ†’

  • React: JavaScript library for building user interfaces. โ†’

  • Tailwind CSS: Utility-first CSS framework for styling. โ†’

  • Shadcn UI: Beautiful designed components. โ†’

  • Zustand: Bear necessities for state management in React. โ†’

  • nostr-tools: Tools for developing Nostr clients. โ†’

  • NDK (Nostr Dev Kit): NDK is a nostr development kit that makes the experience of building Nostr-related applications. โ†’

  • Nostr-Hooks: Nostr-Hooks is a stateful wrapper library of React hooks around NDK. โ†’

    Vite
    TypeScript
    React
    TailwindCSS
    Shadcn UI
    Zustand
    Nostr Tools
    NDK
    Nostr Hooks

Contribution

We welcome contributions from the community! If you'd like to contribute, please follow these guidelines:

  1. Fork the repository.
  2. Create a new branch for your feature or bugfix.
  3. Submit a pull request with a clear description of your changes.

License

This project is licensed under the MIT License.

Acknowledgements

Special thanks to the Nostr protocol community and all contributors who helped make this project possible.

Languages

TypeScript97.4%JavaScript1.1%CSS0.9%HTML0.6%

Contributors

MIT License
Created August 27, 2024
Updated December 30, 2024
sepehr-safari/groups | GitHunt