Skip to content

imshrishk/omestr

Repository files navigation

Omestr - Anonymous Chat on Nostr

Omestr is a decentralized, anonymous chat application built on the Nostr protocol, inspired by the classic Omegle experience. It allows users to connect randomly with strangers across the Nostr network for one-on-one conversations.

Features

  • 🎭 Anonymous Chat: Generate ephemeral keypairs for each session
  • 🌐 Decentralized: Powered by the Nostr protocol and relay network
  • 🔀 Random Matching: Connect with random users from around the world
  • 💬 Real-time Messaging: Instant message delivery via Nostr relays
  • 🔄 Skip Function: Easily disconnect and find a new chat partner
  • ⏱️ Connection Timer: See how long you've been chatting with your partner
  • 🔔 Sound Notifications: Audio alerts for new messages and connections
  • 😀 Emoji Reactions: React to messages with emoji

Technology Stack

  • Next.js: React framework for the frontend
  • TypeScript: For type-safe code
  • Nostr Protocol: Decentralized social networking protocol
  • TailwindCSS: For styling the user interface

Getting Started

Prerequisites

  • Node.js (v18 or later)
  • npm or yarn

Installation

  1. Clone the repository:

    git clone https://github.com/imshrishk/omestr.git
    cd omestr
    
  2. Install dependencies:

    npm install
    # or
    yarn install
    
  3. Run the development server:

    npm run dev
    # or
    yarn dev
    
  4. Open http://localhost:3000 in your browser to see the application.

How It Works

  1. Key Generation: When you open Omestr, it generates a new Nostr keypair for your anonymous session.
  2. Finding Partners: The app broadcasts a "looking for chat" event to Nostr relays.
  3. Matching: When another user is also looking, you're matched together.
  4. Chatting: Chat messages are sent via Nostr relays between matched users.
  5. Next: Click "Next" to end the current chat and find a new partner. (Currently there's an issue with messaging and messages might appear not in order and some might even not be received While matchmaking, if you already have multiple instnaces open just try refresh or clear data from debug)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

Sound Files

The application uses sound notifications for various events. You'll need to add your own sound files to the public/sounds directory:

  • message.mp3: Played when receiving a new message
  • connect.mp3: Played when connecting with a new partner
  • disconnect.mp3: Played when disconnecting from a chat

You can use any MP3 files of your choice, just make sure they're short and appropriate for notifications.(not added yet)

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages