Awesome
💬 Groups
Introduction
"Groups" is a free and open-source chat application built on the Nostr protocol, utilizing the NIP-29 standard 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 message (kind:7 in supported relay).
- ✅ 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).
- 🚧 Add 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.
- ✅ Create new groups with custom settings.
Live Demo
You can access the live demo of "Groups" at the following URL:
Supported Kinds:
-
Moderation:
- 9000 add-user 🚧
- 9001 remove-user 🚧
- 9002 edit-metadata ✅
- 9003 add-permission ✅
- 9004 remove-permission ✅
- 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:
- Clone the repository:
git clone https://github.com/max21dev/groups.git
- Navigate to the project directory:
cd groups
- Install dependencies:
npm install
- 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. →
Contribution
We welcome contributions from the community! If you'd like to contribute, please follow these guidelines:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- 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.