š 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
Log in or sign up for Devpost to join the conversation.