Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’¬ TikTalk - Anonymous Real-time Chat Application

A modern, anonymous real-time chat application built with React and Socket.IO

Made by License React Socket.IO

🌟 Features

  • πŸš€ Anonymous messaging - Instant communication without revealing identity
  • 🏠 Create & Join anonymous rooms - Easy room creation with 6-digit room codes
  • πŸ‘₯ Anonymous participants - See who's online without personal information
  • πŸ’‘ Anonymous typing indicators - Know when others are typing
  • 🎨 Modern UI - Beautiful interface with dark/light theme support
  • πŸ“± Responsive design - Works seamlessly on desktop and mobile
  • ⚑ Loading animations - Smooth user experience with loading states
  • πŸ”’ Room cleanup - Automatic memory optimization and room management
  • 🌍 CORS support - Production-ready with proper CORS configuration
  • πŸ•΅οΈ Complete anonymity - No personal data required or stored

πŸ“Έ Screenshots

Landing Page

Landing Page

Room Creation

Room Creation

Live Chat

Live Chat

πŸ› οΈ Tech Stack

Frontend

  • React 19.1.1 - Modern React with hooks
  • TypeScript - Type-safe development
  • Vite - Fast build tool and dev server
  • Tailwind CSS - Utility-first CSS framework
  • Radix UI - Accessible component primitives
  • Socket.IO Client - Real-time communication
  • Lucide React - Beautiful icons

Backend

  • Node.js - JavaScript runtime
  • Express.js - Web application framework
  • Socket.IO - Real-time bidirectional communication
  • CORS - Cross-origin resource sharing
  • ES6 Modules - Modern JavaScript modules

πŸš€ Quick Start

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/a9irudhh/tiktalk.git
    cd tiktalk
  2. Setup Backend

    cd backend
    npm install
  3. Setup Frontend

    cd ../frontend/vite-project
    npm install

Development

  1. Start the backend server

    cd backend
    npm start

    Server will run on http://localhost:8000

  2. Start the frontend development server

    cd frontend/vite-project
    npm run dev

    Frontend will run on http://localhost:3000

  3. Open your browser and navigate to http://localhost:3000

πŸ“ Project Structure

tiktalk/
β”œβ”€β”€ backend/                    # Node.js backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   └── index.js           # Main server file
β”‚   β”œβ”€β”€ package.json
β”‚   └── README.md
β”œβ”€β”€ frontend/
β”‚   └── vite-project/          # React frontend
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ components/    # UI components
β”‚       β”‚   β”‚   β”œβ”€β”€ ui/        # Radix UI components
β”‚       β”‚   β”‚   β”œβ”€β”€ LoadingSteps.tsx
β”‚       β”‚   β”‚   β”œβ”€β”€ LoadingButton.tsx
β”‚       β”‚   β”‚   β”œβ”€β”€ SuccessAnimation.tsx
β”‚       β”‚   β”‚   β”œβ”€β”€ mode-toggle.tsx
β”‚       β”‚   β”‚   └── theme-provider.tsx
β”‚       β”‚   β”œβ”€β”€ lib/
β”‚       β”‚   β”‚   └── utils.ts   # Utility functions
β”‚       β”‚   β”œβ”€β”€ App.tsx        # Main app component
β”‚       β”‚   └── main.tsx       # Entry point
β”‚       β”œβ”€β”€ public/
β”‚       β”‚   β”œβ”€β”€ favicon.ico    # Favicon
β”‚       β”‚   └── favicon.png
β”‚       β”œβ”€β”€ package.json
β”‚       └── vite.config.ts
β”œβ”€β”€ static/                    # Demo images
β”‚   β”œβ”€β”€ landing_page.png
β”‚   β”œβ”€β”€ room_creation.png
β”‚   └── texting.png
β”œβ”€β”€ LICENSE
└── README.md

🎯 Key Features Explained

Anonymous Chat System

  • No Registration Required: Jump straight into anonymous conversations
  • Temporary Identities: Use any name without account creation
  • No Data Storage: Messages and user data are not permanently stored
  • Complete Privacy: No tracking or personal information collection

Room Management

  • Room Creation: Generate 6-digit room codes automatically for anonymous rooms
  • Room Joining: Join existing anonymous rooms with room codes
  • Automatic Cleanup: Empty rooms are automatically deleted when the last user leaves
  • Memory Optimization: Periodic cleanup of stale connections

Real-time Communication

  • Instant Anonymous Messaging: Messages appear immediately for all participants
  • Anonymous Typing Indicators: See when other anonymous users are typing
  • Live Participants: Real-time anonymous participant count and list
  • Connection Management: Graceful handling of disconnections

User Experience

  • Loading States: Beautiful loading animations during anonymous room operations
  • Success Feedback: Confirmation animations for successful anonymous actions
  • Error Handling: Clear error messages for better UX
  • Responsive Design: Optimized for all screen sizes
  • Privacy First: Designed with anonymity and privacy as core principles

πŸ”Œ API Endpoints

WebSocket Events

Client β†’ Server

  • join - Join an anonymous chat room
  • chat - Send an anonymous message
  • typing - Indicate typing status anonymously
  • exit - Leave an anonymous room
  • getAllNames - Get all anonymous user names

Server β†’ Client

  • joinConfirmed - Confirm successful anonymous room join
  • participants - Updated anonymous participant list
  • chat - Receive an anonymous message
  • typing - Anonymous typing indicator from other users
  • error - Error messages

HTTP Endpoints

  • GET / - Health check
  • GET /stats - Anonymous room statistics (total users, rooms, etc.)

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Anirudh R H

πŸ™ Acknowledgments


Made with ❀️ by Anirudh R H

⭐ Star this repo if you find it helpful!

About

a websocket based anon chat app

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages