{"id":31628291,"url":"https://github.com/radsadsoap/echowave","last_synced_at":"2026-04-02T03:08:34.977Z","repository":{"id":315897162,"uuid":"1061181119","full_name":"radsadsoap/EchoWave","owner":"radsadsoap","description":"A modern, full-featured chat application built with Next.js 14, Socket.io, and Firebase. Features real-time messaging, room management, Google OAuth \u0026 guest authentication, emoji support, and password-protected rooms. Built with TypeScript, Tailwind CSS, MongoDB, and Express.js for a seamless chatting experience.","archived":false,"fork":false,"pushed_at":"2025-09-21T12:19:14.000Z","size":313,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-21T14:29:32.577Z","etag":null,"topics":["express","firebase","javascript","mongodb","nextjs","socket-io","tailwindcss","ui"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/radsadsoap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-21T12:09:12.000Z","updated_at":"2025-09-21T12:21:31.000Z","dependencies_parsed_at":"2025-09-21T14:29:34.590Z","dependency_job_id":"49293c20-e9a2-46c9-adbe-d40a9c5397be","html_url":"https://github.com/radsadsoap/EchoWave","commit_stats":null,"previous_names":["radsadsoap/echowave"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/radsadsoap/EchoWave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radsadsoap%2FEchoWave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radsadsoap%2FEchoWave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radsadsoap%2FEchoWave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radsadsoap%2FEchoWave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radsadsoap","download_url":"https://codeload.github.com/radsadsoap/EchoWave/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radsadsoap%2FEchoWave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278672467,"owners_count":26025916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express","firebase","javascript","mongodb","nextjs","socket-io","tailwindcss","ui"],"created_at":"2025-10-06T20:22:05.540Z","updated_at":"2025-10-06T20:22:07.797Z","avatar_url":"https://github.com/radsadsoap.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌊 EchoWave\n\n**Real-time Chat Application with Modern Web Technologies**\n\n\u003cimg width=\"1919\" height=\"985\" alt=\"Screenshot 2025-09-21 173854\" src=\"https://github.com/user-attachments/assets/86da8924-b144-436c-bd11-5a8e95a06049\" /\u003e\n\n\nEchoWave is a full-featured, real-time chat application that enables users to create and join chat rooms, communicate instantly, and manage their online presence. Built with modern web technologies, it offers both Google authentication and guest access for seamless user onboarding.\n\n## ✨ Features\n\n### 🔐 **Authentication System**\n\n-   **Google OAuth Integration** - Sign in with your Google account\n-   **Guest Access** - Join as a guest with auto-generated usernames\n-   **Persistent Sessions** - Stay logged in across browser sessions\n\n### 💬 **Real-Time Messaging**\n\n-   **Instant Message Delivery** - Powered by Socket.io for real-time communication\n-   **Message History** - Persistent chat history stored in MongoDB\n-   **Emoji Support** - Express yourself with a full emoji picker\n-   **Message Timestamps** - See when messages were sent\n\n### 🏠 **Room Management**\n\n-   **Create Rooms** - Set up public or password-protected chat rooms\n-   **Join Existing Rooms** - Browse and join available chat rooms\n-   **Temporary Rooms** - Guest users create temporary rooms that auto-delete\n-   **Permanent Rooms** - Authenticated users can create persistent rooms\n-   **Password Protection** - Secure rooms with bcrypt-encrypted passwords\n\n### 👥 **User Experience**\n\n-   **Live User List** - See who's currently in each room\n-   **Responsive Design** - Works seamlessly on desktop and mobile\n-   **Modern UI** - Clean, intuitive interface with Tailwind CSS\n-   **Loading States** - Smooth loading animations and feedback\n\n## 🚀 Tech Stack\n\n### **Frontend**\n\n-   **Next.js 14** - React framework with App Router\n-   **TypeScript** - Type-safe development\n-   **Tailwind CSS** - Utility-first CSS framework\n-   **React Icons** - Beautiful icon library\n-   **GSAP** - Advanced animations\n\n### **Backend**\n\n-   **Express.js** - Node.js web framework\n-   **Socket.io** - Real-time bidirectional communication\n-   **MongoDB \u0026 Mongoose** - NoSQL database with ODM\n-   **bcryptjs** - Password hashing and security\n\n### **Authentication \u0026 Database**\n\n-   **Firebase Auth** - Google OAuth and anonymous authentication\n-   **Firestore** - Real-time NoSQL database for room metadata\n-   **MongoDB** - Message storage and persistence\n\n### **Development Tools**\n\n-   **ESLint** - Code linting and formatting\n-   **PostCSS** - CSS processing\n-   **ts-node** - TypeScript execution environment\n\n## 📦 Installation\n\n### Prerequisites\n\n-   Node.js (v18 or higher)\n-   npm or yarn\n-   MongoDB database\n-   Firebase project with Authentication enabled\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/yourusername/echowave.git\ncd echowave\n```\n\n### 2. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 3. Environment Setup\n\nCreate a `.env.local` file in the root directory:\n\n```env\n# MongoDB\nMONGODB_URI=your_mongodb_connection_string\n\n# Firebase Configuration\nNEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key\nNEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com\nNEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id\nNEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com\nNEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id\nNEXT_PUBLIC_FIREBASE_APP_ID=your_app_id\n\n# Server Configuration\nPORT=3001\nALLOWED_ORIGINS=http://localhost:3000,https://yourdomain.com\n```\n\n### 4. Firebase Setup\n\n1. Go to [Firebase Console](https://console.firebase.google.com)\n2. Create a new project or use existing one\n3. Enable Authentication with Google provider\n4. Create a Firestore database\n5. Add your domain to authorized domains\n\n### 5. MongoDB Setup\n\n1. Set up MongoDB locally or use MongoDB Atlas\n2. Create a database for the application\n3. Update the `MONGODB_URI` in your `.env.local` file\n\n## 🎯 Usage\n\n### Development Mode\n\n```bash\n# Start the Next.js development server\nnpm run dev\n\n# In a separate terminal, start the Socket.io server\nnpm run server\n```\n\nThe application will be available at `http://localhost:3000`\n\n### Production Build\n\n```bash\n# Build the application\nnpm run build\n\n# Start the production server\nnpm start\n\n# Start the Socket.io server\nnpm run server\n```\n\n## 🏗️ Project Structure\n\n```\nechowave/\n├── src/\n│   ├── app/\n│   │   ├── globals.css          # Global styles\n│   │   ├── layout.tsx           # Root layout\n│   │   ├── page.tsx             # Home page\n│   │   ├── lib/\n│   │   │   └── firebaseConfig.ts # Firebase configuration\n│   │   └── room/\n│   │       ├── [id]/\n│   │       │   └── page.tsx     # Dynamic room page\n│   │       └── components/\n│   │           ├── chat.tsx     # Chat interface\n│   │           ├── sendMessage.tsx # Message input\n│   │           └── socketContext.tsx # Socket.io context\n│   └── pages/\n│       ├── auth.tsx             # Authentication component\n│       ├── createRoom.tsx       # Room creation form\n│       ├── roomList.tsx         # Available rooms list\n│       └── title.tsx            # App title component\n├── server.ts                    # Socket.io server\n├── package.json\n└── README.md\n```\n\n## 🎮 How to Use\n\n### 1. **Getting Started**\n\n-   Visit the application homepage\n-   Choose to sign in with Google or continue as a guest\n\n### 2. **Creating a Room**\n\n-   Click \"Create Room\" after authentication\n-   Enter a room name\n-   Optionally set a password for privacy\n-   Click \"Create Room\" to generate your chat space\n\n### 3. **Joining a Room**\n\n-   Click \"Join Room\" to see available rooms\n-   Select a room from the list\n-   Enter password if the room is protected\n-   Start chatting instantly!\n\n### 4. **Chatting**\n\n-   Type messages in the input field at the bottom\n-   Press Enter or click the send button\n-   Use the emoji picker to add expressions\n-   See real-time messages from other users\n\n### 5. **Room Features**\n\n-   View active users in the current room\n-   See message timestamps\n-   Leave room using the \"X\" button\n\n## 🔧 API Endpoints\n\n### Socket.io Events\n\n**Client to Server:**\n\n-   `create_room` - Create a new chat room\n-   `join_room` - Join an existing room\n-   `send_message` - Send a message to the room\n-   `get_chat_history` - Retrieve message history\n-   `leave_room` - Leave the current room\n\n**Server to Client:**\n\n-   `room_created` - Room creation confirmation\n-   `join_room_success` - Successful room join\n-   `join_room_error` - Room join error\n-   `receive_message` - New message received\n-   `user_joined` - User joined notification\n-   `user_left` - User left notification\n-   `room_users` - Updated user list\n-   `chat_history` - Historical messages\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n-   Socket.io team for real-time communication capabilities\n-   Firebase team for authentication and database services\n-   Next.js team for the amazing React framework\n-   MongoDB team for reliable data storage\n-   All contributors and users of EchoWave\n\n---\n\n**Built with ❤️ by [Your Name]**\n\n_Happy Chatting! 🌊_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradsadsoap%2Fechowave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradsadsoap%2Fechowave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradsadsoap%2Fechowave/lists"}