{"id":15724150,"url":"https://github.com/tenshkumar-kkt-2004/sparkwave","last_synced_at":"2026-03-05T14:31:48.305Z","repository":{"id":253452693,"uuid":"829907018","full_name":"TENSHKUMAR-KKT-2004/SparkWave","owner":"TENSHKUMAR-KKT-2004","description":"SparkWave is a real-time chat application featuring text, image, GIF, and voice messaging, along with video and voice call capabilities. Built with Next.js, Tailwind CSS, Node.js, Express, Prisma, PostgreSQL, and WebRTC, it offers seamless, real-time communication.","archived":false,"fork":false,"pushed_at":"2024-08-12T17:15:41.000Z","size":11258,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-25T11:47:44.238Z","etag":null,"topics":["bi-directional","chat-application","duplex-communication","express-js","javascript","nextjs","nodejs","peer-to-peer","pooling","postgresql","prisma-orm","react","socket-io","video-call","voice-call","webrtc"],"latest_commit_sha":null,"homepage":"https://spark-wave.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TENSHKUMAR-KKT-2004.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2024-07-17T08:23:02.000Z","updated_at":"2024-08-16T18:10:23.000Z","dependencies_parsed_at":"2024-08-16T20:32:03.379Z","dependency_job_id":"5a5c3a3d-d68f-4290-9373-97de03ed805a","html_url":"https://github.com/TENSHKUMAR-KKT-2004/SparkWave","commit_stats":null,"previous_names":["tenshkumar-kkt-2004/sparkwave"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TENSHKUMAR-KKT-2004%2FSparkWave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TENSHKUMAR-KKT-2004%2FSparkWave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TENSHKUMAR-KKT-2004%2FSparkWave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TENSHKUMAR-KKT-2004%2FSparkWave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TENSHKUMAR-KKT-2004","download_url":"https://codeload.github.com/TENSHKUMAR-KKT-2004/SparkWave/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229431004,"owners_count":18071825,"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","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":["bi-directional","chat-application","duplex-communication","express-js","javascript","nextjs","nodejs","peer-to-peer","pooling","postgresql","prisma-orm","react","socket-io","video-call","voice-call","webrtc"],"created_at":"2024-10-03T22:15:04.080Z","updated_at":"2026-03-05T14:31:48.249Z","avatar_url":"https://github.com/TENSHKUMAR-KKT-2004.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SparkWave\n\n![SparkWave](https://github.com/user-attachments/assets/042d20e9-f6fd-4681-be8b-252e309d5049)\n\nSparkWave is a real-time chat application that enables users to connect with friends through text, emojis, voice messages, and multimedia sharing, including images and GIFs. It also supports voice and video calls. Built with modern technologies such as Next.js, WebRTC, Socket.io, Node.js, and Firebase. SparkWave offers a seamless user experience with real-time synchronization\n\n\n## Features\n\n- **Google Authentication**: Create and manage your profile using your Google account\n- **Real-Time Messaging**: Engage in real-time chats with friends, including send \u0026 receive text messages, images, GIFs, emojis\n- **Voice Messages**: Record and send voice messages with your friends\n- **Video \u0026 Voice Calls**: Make video and voice calls with friends directly from the app\n- **Message Status**: View real-time updates on message delivery and read status\n- **User List**: Easily find and start chats with users through a user-friendly interface\n\n\n## Tech Stack\n\n- **Frontend**: \n  - **Next.js**: A React framework for building server-side rendered and statically generated web applications\n  - **Tailwind CSS**: A utility-first CSS framework for styling and creating a modern design\n\n- **Backend**:\n  - **Node.js**: JavaScript runtime for building scalable network applications\n  - **Express**: A minimal and flexible Node.js web application framework for handling API requests and routing\n  - **Prisma**: An ORM (Object-Relational Mapper) for interacting with PostgreSQL DB and simplifying data query process\n\n- **Database**:\n  - **PostgreSQL**: A powerful, open-source relational database system for storing user data, messages\n\n- **Authentication**:\n  - **Firebase**: Provides services for secure user authentication and profile management\n\n- **Real-Time Communication**:\n  - **Socket.io**: Enables bi-directional communication between web clients and servers for real-time messaging and updates\n\n- **Video and Voice Communication**:\n  - **WebRTC**: Provides peer-to-peer audio, video data sharing for stream video and voice calls\n\n\n## How to Run the App Locally ?\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) (version 18 or later)\n- [PostgreSQL](https://www.postgresql.org/) (installed and running)\n- [Firebase Account](https://firebase.google.com/) (create a new project and enable Google Authentication)\n\n### Setup Instructions\n\n1. **Clone the Repository**\n\n    ```bash\n    git clone https://github.com/TENSHKUMAR-KKT-2004/SparkWave.git\n    ```\n\n2. **Navigate to the Project Directory**\n    \n    ```bash\n    cd SparkWave\n    ```\n\n\n3. **Install Dependencies**\n\n    ***For the frontend:***\n\n    ```bash\n    cd sparkwave-client\n    npm install\n    ```\n\n    ***For the backend:***\n\n    ```bash\n    cd sparkwave-server\n    npm install\n    ```\n\n\n4. **Configure Environment Variables**\n\n    Create a `.env` file in the root directory and add the following variables. Replace the placeholders with your actual values\n\n    ***In frontend side:***\n\n    ```env\n    NEXT_PUBLIC_TENOR_API_KEY=your_google_cloud_tenor_api_key\n    NEXT_PUBLIC_API_KEY=your_firebase_api_key\n    NEXT_PUBLIC_AUTH_DOMAIN=your_firebase_auth_domain\n    NEXT_PUBLIC_PROJECT_ID=your_firebase_project_id\n    NEXT_PUBLIC_STORAGE_BUCKET=your_firebase_storage_bucket\n    NEXT_PUBLIC_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id\n    NEXT_PUBLIC_APP_ID=your_firebase_app_id\n    NEXT_PUBLIC_MEASUREMENT_ID=your_firebase_measurement_id\n    ```\n\n    ***In backend side:***\n\n    ```env\n    DATABASE_URL=your_postgresql_database_url\n    ```\n\n\n5. **Run Prisma Studio:**\n\n    ***From backend directory:***\n\n    ```bash\n    npx prisma generate\n    npx prisma db push\n    npx prisma studio\n    ```\n\n\n6. **Start the Development Server to Run the Application**\n\n    ***For the frontend:***\n\n    ```bash\n    npm run dev\n    ```\n\n    ***For the backend:***\n\n    ```bash\n    node server.js\n    ```\n\n\n7. **Open the App in your Browser**\n\n    Navigate to `http://localhost:3000` to view the application\n\n\n## Key Technologies\n\n### WebRTC\n\n![WebRTC](https://www.wowza.com/wp-content/uploads/WebRTC.gif)\n\nWebRTC (Web Real-Time Communication) is a powerful technology that enables real-time audio, video, and data communication directly in the browser without needing plugins. In SparkWave, WebRTC is used to facilitate seamless video and voice calls, providing a high-quality and interactive communication experience between users. It leverages peer-to-peer connections and supports various media types, making it ideal for real-time communication applications\n\n### Socket.io\n\n![Socket.io](https://media.licdn.com/dms/image/D4D22AQG7d-bLIeIvKw/feedshare-shrink_800/0/1701789516031?e=2147483647\u0026v=beta\u0026t=TlgJSIXlBBHPlmZvkJIm-O-VwqjsaUKIKIw4-5Zfejo)\n\nSocket.io enables real-time, bidirectional communication between clients and servers. It is used in SparkWave to handle real-time messaging, ensuring that users receive messages and updates instantaneously\n\n\n## Screenshots\n\n### Home Page\n\n![home-page](https://github.com/user-attachments/assets/3b8dfebc-a253-493c-beb6-415056a5a71b)\n\n### Login Page\n\n![login](https://github.com/user-attachments/assets/c33f3396-7eca-48f2-b531-d84dc83dfc0a)\n\n### Onboarding Page\n\n![onboarding](https://github.com/user-attachments/assets/c8f4b832-0f9c-4b5f-a8c9-c83e263daec5)\n\n### Users List\n\n![users-list](https://github.com/user-attachments/assets/9042b016-0234-4f0e-b8ae-eb8f3df6d67e)\n\n### Chatting\n\n![chat-interface](https://github.com/user-attachments/assets/a03ef46f-333b-43b0-8097-03f1b329493c)\n\n![chat-interface-2](https://github.com/user-attachments/assets/1977c831-8df5-4614-9f85-5178e4074e46)\n\n![chat-interface-3](https://github.com/user-attachments/assets/acf9ba84-37e9-4e09-98a2-9b2829adf416)\n\n### Video Calling\n\n![video-call](https://github.com/user-attachments/assets/a4789395-0b0f-478d-a6d6-6146014a7849)\n\n![video-call-2](https://github.com/user-attachments/assets/bcb88dbc-92a1-45ac-ad15-95b5c12002e5)\n\n![video-call-3](https://github.com/user-attachments/assets/4665bc34-fcbb-4012-baa6-252ba164fc48)\n\n### Voice Calling\n\n![voice-call](https://github.com/user-attachments/assets/d206934a-4f31-40a1-8950-af2ebf679589)\n\n![voice-call-2](https://github.com/user-attachments/assets/8ebe6b9e-1939-4047-b4f4-be2873719173)\n\n![voice-call-3](https://github.com/user-attachments/assets/6360888c-0c57-4481-8c90-2150852c522e)\n\n### Search Messages\n\n![search-message](https://github.com/user-attachments/assets/af29de5a-624a-4302-afa9-4668372d6c5f)\n\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\n## Acknowledgments\n\n- [Next.js](https://nextjs.org/)\n- [Tailwind CSS](https://tailwindcss.com/)\n- [Socket.io](https://socket.io/)\n- [WebRTC](https://webrtc.org/)\n- [Firebase](https://firebase.google.com/)\n- [Prisma](https://www.prisma.io/)\n- [PostgreSQL](https://www.postgresql.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftenshkumar-kkt-2004%2Fsparkwave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftenshkumar-kkt-2004%2Fsparkwave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftenshkumar-kkt-2004%2Fsparkwave/lists"}