{"id":30229605,"url":"https://github.com/devanka761/chat-app","last_synced_at":"2025-08-14T21:40:27.042Z","repository":{"id":40610668,"uuid":"436501637","full_name":"devanka761/chat-app","owner":"devanka761","description":"Chat App Written in TypeScript with Responsive Design","archived":false,"fork":false,"pushed_at":"2025-08-08T12:16:40.000Z","size":1829,"stargazers_count":53,"open_issues_count":1,"forks_count":24,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-08T14:25:06.216Z","etag":null,"topics":["chat-app","chat-application","chatapp","chatapplication","instagram-clone","javascript","peer","peer-2-peer","peer-server","peer-to-peer","peer-to-peer-chatting","rtcpeerconnection","webrtc","websocket","whatsapp-clone"],"latest_commit_sha":null,"homepage":"https://kirimin.devanka.id","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/devanka761.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}},"created_at":"2021-12-09T06:05:17.000Z","updated_at":"2025-08-08T12:16:44.000Z","dependencies_parsed_at":"2025-05-16T05:27:41.485Z","dependency_job_id":"8e8c7ee0-b2d8-44a6-81ac-cf99e67dee3c","html_url":"https://github.com/devanka761/chat-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devanka761/chat-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanka761%2Fchat-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanka761%2Fchat-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanka761%2Fchat-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanka761%2Fchat-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devanka761","download_url":"https://codeload.github.com/devanka761/chat-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanka761%2Fchat-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270487658,"owners_count":24592443,"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-08-14T02:00:10.309Z","response_time":75,"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":["chat-app","chat-application","chatapp","chatapplication","instagram-clone","javascript","peer","peer-2-peer","peer-server","peer-to-peer","peer-to-peer-chatting","rtcpeerconnection","webrtc","websocket","whatsapp-clone"],"created_at":"2025-08-14T21:40:25.803Z","updated_at":"2025-08-14T21:40:27.032Z","avatar_url":"https://github.com/devanka761.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chat App - Kirimin\n- Live Demo: [Kirimin Messenger](https://kirimin.devanka.id/)\n- Subscribe: YouTube [Devanka 761](https://www.youtube.com/@devanka761)\n- Join Discord: [Codemate Resort](https://devanka.id/discord)\n\n## FEATURES\n1. Private, group, and global chats\n2. Support for text, image, video, audio, and other documents\n3. Video Call \u0026amp; Voice Call\n4. Friendlist for private call\n5. Chat reply embed\n6. User profile (username, displayname, bio, and profile picture)\n7. Public posts\n8. In-App Notifications\n9. Web Push Notifications\n\n## INSTALL\n### Via Fork/Clone\nInstall all dependencies with **NPM**\n```shell\nnpm install\n```\n### Via Download\n1. Extract and change directory to `chat-app-main` folder\n2. Open terminal and go to `chat-app-main` folder\n3. Install all dependencies with **NPM**\n```shell\nnpm install\n```\n\n## CONFIG: .ENV\n1. Copy file `.env.example` to `.env`\n2. Edit file `.env` based on your preferences\n\n## CONFIG: PUBLIC\n`src/config/public.config.json`\n```javascript\n{\n  \"GEN_AI_FEATURE\": false,\n  // Enable AI Chat feature (powered by Google Generative AI)\n  // If true, edit GENAI_API_KEY inside `.env`\n\n  \"AI_MODEL\": \"gemini-2.5-pro\",\n  // Choose ai model only if GEN_AI_FEATURE is true\n  // See All Models: https://ai.google.dev/gemini-api/docs/models\n\n  \"USE_OAUTH_GOOGLE\": true,\n  // Enable Google OAuth login method\n  // If true, edit GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET inside `.env`\n\n  \"USE_OAUTH_GITHUB\": false,\n  // Enable GitHub OAuth login method\n  // If true, edit GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET inside `.env`\n\n  \"USE_OAUTH_DISCORD\": false,\n  // Enable Discord OAuth login method\n  // If true, edit DISCORD_CLIENT_ID and DISCORD_CLIENT_SECRET inside `.env`\n\n  \"SAVE_VERSION\": \"Kirimin20250726\",\n  // Sync users localstorage save version to the latest stable version. If outdated, old save file will be destroyed and generated a new one.\n}\n```\n\n## CONFIG: SERVER\n`src/config/server.config.json`\n```javascript\n{\n  \"webhook\": false,\n  // Send webhook about website log to discord\n  // If true, (1) edit DISCORD_BOT_TOKEN inside `.env`, If true, (2) setup `src/config/discord.config.json`\n\n  \"update\": false,\n  // Update app version and force users to reload the page after server restart,\n\n  \"GenAIsystemInstruction\": [\n    \"You are a friendly and helpful assistant.\",\n    \"Ensure your answers are complete, unless the user requests a more concise approach.\"\n  ]\n  // System Instruction for AI Generation\n}\n```\n\n## CONFIG: DISCORD WEBHOOK\n`src/config/discord.config.json`\n```javascript\n{\n  // if webhook is true, put your channel id from your discord server\n\n  \"AI_LEARN\": \"00000000000000\",\n  // monitor how ai answers to the user input\n\n  \"USER_LOG\": \"00000000000000\"\n  // monitor user log (online/offline)\n}\n```\n\n## CONFIG: PEER\nEdit `src/config/peer.config.json` with your **[RTCConfiguration](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection)**\n\u003e see example: `src/config/peer.example.config.json`\n\n## RUN\n### A. Development Mode\nOpen 2 terminals or 1 terminal with 2 tabs\n1. Watch Client Build\n```shell\nnpm run dev:build\n```\n2. Watch Server Start\n```shell\nnpm run dev:start\n```\n\n### B. Production Mode\n\n#### Bundle frontend sources and compile backend sources\n```shell\nnpm run build\n```\n#### Start Server\n\n##### B.1. With NPM Script\n```shell\nnpm run start\n```\n##### B.2. With PM2 Script\n```shell\npm2 start npm --name \"my-chat-app\" -- start \u0026\u0026 pm2 restart \"my-chat-app\" --max-memory-restart 8G\n```\n\u003e [!TIP]\n\u003e Units can be K(ilobyte), M(egabyte), G(igabyte)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanka761%2Fchat-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevanka761%2Fchat-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanka761%2Fchat-app/lists"}