Skip to content

govindpvenu/justbetweenus

Repository files navigation

Just Between Us - Shhh...it's just between us.

Create a private chat room, share the link, and chat. The room disappears after 10 minutes (or you can destroy it manually). All messages are encrypted client-side using AES-256-GCM - the server never sees your encryption keys or plaintext messages.

Features

  • Private rooms - Create a room, share the link, and start chatting without an account.
  • End-to-end encrypted messages - Messages are encrypted in the browser with AES-256-GCM before they leave your device.
  • Keys stay out of the server - Room keys are shared through the URL fragment, so they are never sent in API requests.
  • No accounts or tracking - Just Between Us does not ask for signups or collect personal profile data.
  • Real-time chat - Messages show up as they are sent, without refreshing the page.
  • Fast by default - Built with Elysia (Bun-first framwork), Turbopack, and React Compiler for a snappy development and runtime experience.
  • Short-lived by design - Rooms expire after 10 minutes, and you can destroy a room manually when you are done.
  • Minimal PWA - A small, responsive interface that can be installed and still has a basic offline fallback.

📊 Project Flow Diagram

Diagram: Just Between Us app architecture, encryption, and real-time flow.

🔗 View Interactive Flow Diagram on tldraw

🛠️ Tech Stack

Frontend

  • Next.js 16 - React framework with App Router
  • React 19 - Latest React with React Compiler
  • Tailwind CSS v4 - Modern utility-first CSS framework
  • TanStack Query - Powerful data synchronization for React

Backend & Infrastructure

  • Elysia - Fast, type-safe web framework (Bun runtime)
  • Upstash Redis - Serverless Redis for data persistence
  • Upstash Realtime - Real-time messaging infrastructure
  • Zod - TypeScript-first schema validation

Development Tools

  • TypeScript 5.0 - Type-safe development
  • Turbopack - Next-generation bundler for fast development
  • ESLint - Code linting and quality
  • React Compiler - Automatic React optimization
  • Bun - Fast JavaScript runtime and package manager
  • Serwist - Service worker library for PWA functionality and offline support

🚀 Getting Started

Prerequisites

  • Node.js 18+ or Bun (recommended)
  • Upstash Redis account (free tier available)

Installation

  1. Clone the repository

    git clone <repository-url>
    cd justbetweenus
  2. Install dependencies

    bun install
    # or
    npm install
  3. Set up environment variables

    Create a .env.local file in the root directory:

    UPSTASH_REDIS_REST_URL=your_redis_url
    UPSTASH_REDIS_REST_TOKEN=your_redis_token
  4. Run the development server

    bun dev
    # or
    npm run dev
  5. Open your browser

    Navigate to http://localhost:3000

🔑 How End-to-End Encryption Works

Just Between Us uses true end-to-end encryption to ensure your messages remain private. All encryption happens client-side using the browser's Web Crypto API - no external dependencies required.

Key Features

  • AES-256-GCM Encryption - Industry-standard authenticated encryption
  • Zero-Knowledge Architecture - Server never sees encryption keys or plaintext messages
  • Secure Key Exchange - Keys shared via URL fragments (never transmitted to server)
  • Unique IV per Message - Each message uses a random initialization vector for forward secrecy
  • Client-Side Only - All encryption/decryption happens in your browser

For a detailed explanation of the encryption flow, key generation, message encryption, and security guarantees, see the End-to-End Encryption Documentation.

📄 License

This project is open source and available under the MIT License.

🤝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.


Built with ❤️ using Next.js, React, and modern web technologies

About

A modern real-time chat app with auto-expiring rooms, end-to-end encryption and PWA support.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors