Skip to content

tsherrington/TalkativeTom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

# TalkativeTom - Multi-Room Live Chat Application A real-time multi-room chat application built with Astro, HTMX, SSE, and PostgreSQL. ## Features - **Nickname Picker** - Pick any nickname (2-20 chars) without passwords - **Avatar Selection** - Choose from 6 avatars with customizable colors - **Multiple Rooms** - Lobby exists by default, create public or private rooms - **Private Rooms** - Create private rooms and invite users with @username - **Private Messages** - Send direct messages using @username "message" - **Real-time Messaging** - Messages appear instantly via Server-Sent Events (SSE) - **Typing Indicators** - See when others are typing - **Online Presence** - See who's online in each room - **Message History** - Messages persist in PostgreSQL database - **Mobile Responsive** - Works on desktop and mobile ## Tech Stack - **Framework**: Astro with Node adapter (SSR) - **Real-time**: HTMX with SSE extension - **Database**: PostgreSQL with Drizzle ORM - **Styling**: Tailwind CSS - **Deployment**: Railway ## Prerequisites - Node.js 18+ - PostgreSQL database ## Setup 1. **Install dependencies**: ```bash npm install ``` 2. **Set up environment variables**: ```bash cp .env.example .env # Edit .env with your PostgreSQL connection string ``` 3. **Set up the database**: ```bash # Generate Drizzle migrations npm run db:generate # Run migrations npm run db:migrate # (Optional) Seed default rooms npm run db:seed ``` 4. **Run development server**: ```bash npm run dev ``` 5. **Open http://localhost:3000** in your browser ## Deployment to Railway 1. Create a new project on [Railway](https://railway.app) 2. Add a PostgreSQL database 3. Connect your GitHub repository 4. Set the `DATABASE_URL` environment variable 5. Deploy ## Usage 1. Enter a nickname and pick an avatar/color 2. Click "Join Chat" to enter the Lobby 3. Create new rooms or join existing ones 4. Send messages in real-time 5. Use @username to send private messages or invite to private rooms # T a l k a t i v e T o m # TalkativeTom

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors