šŸ“ Location-Based Chatroom Application

A real-time, location-aware chatroom application built as part of the CodeVior Technical Assignment.


šŸ‘‹ Who Am I

Hi, I’m Yash Agrawal — a full-stack Software Engineer working with modern web technologies.
I focus on building scalable, real-time applications using TypeScript, Next.js, and cloud-native backends.

  • Tech stack focused on JavaScript & TypeScript
  • Experience with real-time systems, auth, and modern UI frameworks
  • Interested in AI, cloud computing, and product-level engineering

šŸ“ Assignment Summary

This project is a Location-Based Chatroom Application where users can:

  • Authenticate using email/password or Google OAuth
  • Create chatrooms tied to a geographic location
  • Join chatrooms only if they are within a defined radius
  • Chat in real time with time-limited messaging (2 hours)

The app validates user location before granting access and ensures messages respect the defined time constraints.


āœ… Assignment Checklist

Authentication

  • [āœ“] Email & password login
  • [āœ“] Google OAuth login
  • [āœ“] Single-method login supported

User Features

  • [āœ“] User registration
  • [āœ“] Secure login & session handling
  • [āœ“] Create chatrooms
  • [āœ“] Join existing chatrooms <!-- if user is under radius then they can access any chatroom -->

Chatroom Features

  • [āœ“] Multiple chatrooms per user
  • [āœ“] Chatroom name
  • [āœ“] Location (latitude/longitude or area name)
  • [āœ“] Radius-based access control (2km / 5km / 10km, etc.)

Location Logic

  • [āœ“] Fetch location via browser or manual input
  • [āœ“] Distance calculation for access validation
  • [āœ“] Restrict chatroom access based on radius

Chat Features

  • [āœ“] Real-time messaging
  • [āœ“] Username & timestamp per message
  • [āœ“] WebSocket-based updates

Message Rules

  • [āœ“] Messaging allowed for only 2 hours
  • [āœ“] Messages auto-expire or input disabled after time limit

šŸ› ļø Tech Stack

Frontend

  • Next.js (App Router)
  • TypeScript
  • shadcn/ui for modern, accessible UI components
  • Tailwind CSS

Authentication

  • Clerk
    • Email/Password authentication
    • Google OAuth integration
    • Secure session handling

Backend & Database

  • Convex
    • Real-time database
    • Serverless backend functions
    • Built-in WebSocket support for live chat

Real-Time Communication

  • Convex real-time subscriptions (WebSocket-based)

šŸš€ Getting Started

# Install dependencies
npm install | bun install

# Run development server
npm run dev | bun dev
Share this project:

Updates