Skip to content
AsimMahataPublic

About

Hangout with random peoples.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“ Hout

React 18 TypeScript Vite Node.js PostgreSQL WebSockets MapLibre GL

Hout is a real-time, location-based ephemeral chat platform.

Create a temporary chatroom at your current location, discover Houts happening around you, and join conversations with people who are physically nearby.

Houts last for a maximum of 2 hours. Once a Hout expires, its messages and temporary data are permanently deleted.


🧭 How It Works

Create a Hout at your location
              ↓
  Nearby people discover it
              ↓
        Join the Hout
              ↓
Chat & interact in real time
              ↓
         Hout expires
              ↓
  Temporary data is deleted

Each Hout has a configurable radius of up to 10 km, so discovery is based on where people actually are.


✨ Features

  • Location-based Hout discovery
  • Interactive map
  • Temporary chatrooms
  • Real-time messaging
  • Live online presence
  • Real-time polls
  • Hout invite links
  • User profiles
  • Friends and friend requests
  • Merit and community reputation
  • Medals and titles
  • Hout participation history
  • Community moderation
  • Automatic Hout expiration and cleanup

πŸ› οΈ Tech Stack

Client

React 18 TypeScript Vite React Router MapLibre GL CSS3

  • React 18 & TypeScript β€” Component-driven UI architecture with strict typing
  • MapLibre GL β€” Vector map rendering with geospatial markers and dynamic radius visualization
  • Vite β€” Fast modern build tooling and hot module replacement
  • CSS3 Design System β€” Custom responsive design tokens and transition animations

Server

Node.js TypeScript WebSockets

  • Node.js & TypeScript β€” Modular architecture (controllers, services, repositories)
  • WebSockets (ws) β€” Low-latency bidirectional connection for chat, live presence, and voting
  • Native HTTP Engine β€” Custom lightweight request dispatcher and REST routing

Database & Security

PostgreSQL dbmate JWT

  • PostgreSQL β€” Relational storage for users, friendships, reputations, and active Houts
  • dbmate β€” Version-controlled database schema migrations
  • JWT & bcryptjs β€” Secure stateless authentication and hashed credentials

πŸ“ Project Structure

Hout/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ db/
β”‚   β”‚   └── migrations/
β”‚   └── src/
β”‚       β”œβ”€β”€ config/
β”‚       β”œβ”€β”€ controllers/
β”‚       β”œβ”€β”€ database/
β”‚       β”œβ”€β”€ errors/
β”‚       β”œβ”€β”€ jobs/
β”‚       β”œβ”€β”€ logger/
β”‚       β”œβ”€β”€ repositories/
β”‚       β”œβ”€β”€ routes/
β”‚       β”œβ”€β”€ services/
β”‚       └── websocket/
β”‚
└── frontend/
    └── src/
        β”œβ”€β”€ components/
        β”œβ”€β”€ constants/
        β”œβ”€β”€ context/
        β”œβ”€β”€ pages/
        └── services/

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL
  • dbmate

Installation

Clone the repository:

git clone https://github.com/your-username/Hout.git
cd Hout

Install backend dependencies:

cd backend
npm install

Install frontend dependencies:

cd ../frontend
npm install
cd ..

Environment Variables

Create the backend environment file:

cp backend/.env.example backend/.env

Configure backend/.env:

PORT=3000
DATABASE_URL=postgresql://user:password@host/database
JWT_SECRET=your-secret-key

Create the frontend environment file:

cp frontend/.env.example frontend/.env

Configure frontend/.env:

VITE_API_URL=http://localhost:3000

Database

Run the database migrations:

cd backend
npm run db:migrate
cd ..

Development

Start both the frontend and backend:

npx concurrently -n "backend,frontend" -c "blue,green" "npm --prefix backend run dev" "npm --prefix frontend run dev"

The application will be available at:


πŸ—„οΈ Database Migrations

Hout uses dbmate for PostgreSQL migrations.

cd backend

# Create a migration
npm run db:new <migration_name>

# Apply migrations
npm run db:migrate

# Roll back the latest migration
npm run db:rollback

# Check migration status
npm run db:status

⏳ Ephemeral by Design

Hout is built around temporary digital spaces.

An active Hout can exist for up to two hours. When it expires, the active room and its associated temporary data are removed. Aggregate participation statistics can remain available as part of a user's Hout history, but the conversation itself does not persist.


πŸ“Œ Status

Hout is actively being developed.

Hout - a place for people who are already there.

About

Hangout with random peoples.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages