{"id":26506544,"url":"https://github.com/fabiconcept/secret-room","last_synced_at":"2025-06-11T05:04:25.671Z","repository":{"id":281144382,"uuid":"943894488","full_name":"fabiconcept/secret-room","owner":"fabiconcept","description":"A sleek, fully responsive Next.js 15.2.1 app built for real-time, anonymous chatting — fast, private, and mobile-ready.","archived":false,"fork":false,"pushed_at":"2025-05-12T15:07:21.000Z","size":1993,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-12T15:29:30.065Z","etag":null,"topics":["anonymous","anonymous-chat","anonymous-message","chat-application","dark-web-sites","secret-chat"],"latest_commit_sha":null,"homepage":"https://secret-room-orpin.vercel.app","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/fabiconcept.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":"2025-03-06T12:49:10.000Z","updated_at":"2025-05-12T15:07:24.000Z","dependencies_parsed_at":"2025-04-17T10:09:21.582Z","dependency_job_id":"55e65777-476b-4e5c-bed5-d955757bacb4","html_url":"https://github.com/fabiconcept/secret-room","commit_stats":null,"previous_names":["fabiconcept/secret-room"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiconcept%2Fsecret-room","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiconcept%2Fsecret-room/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiconcept%2Fsecret-room/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiconcept%2Fsecret-room/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabiconcept","download_url":"https://codeload.github.com/fabiconcept/secret-room/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiconcept%2Fsecret-room/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259204801,"owners_count":22821159,"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":["anonymous","anonymous-chat","anonymous-message","chat-application","dark-web-sites","secret-chat"],"created_at":"2025-03-20T22:37:53.376Z","updated_at":"2025-06-11T05:04:25.662Z","avatar_url":"https://github.com/fabiconcept.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎭 Secret Room - Frontend\n\n**Secret Room** is a fully anonymous, real-time chat app that lets users create temporary servers and invite others to join without revealing their identity. This is the **frontend**, built with **Next.js**, **TypeScript**, **Tailwind CSS**, and **Socket.IO**, crafted for speed, privacy, and responsiveness.\n\n\u003e 💡 This project focuses on stateless, anonymous sessions, private invites, smooth real-time messaging, and immersive UI/UX.\n\n---\n\n## 🚀 Features\n\n- 🎨 Beautiful, minimal, **fully mobile-responsive** UI\n- 🔐 Complete anonymous user flow — no sign-ups, no names\n- 💬 Real-time chat with **Socket.IO**\n- 📁 **File sharing**: PNG, JPG, GIF, PDF, JPEG\n- 🔗 Join via global or server-specific invite links\n- ⚡ Instant socket events: join, leave, message read\n- 🔐 **Server-controlled message decryption** after access requirements are met\n- 💣 Self-destructing servers and messages\n- 🕹️ Immersive UX: sound effects + ambient soundtrack\n\n---\n\n## 🧱 Tech Stack\n\n- **Next.js 15 (App Router)**\n- **TypeScript**\n- **Tailwind CSS**\n- **Socket.IO (Client)**\n- **Zustand** – lightweight global state management\n- **Framer Motion** – page \u0026 component animations\n- **Custom fingerprint algorithm** – no 3rd-party tracking\n- **Audio hook** – to manage interaction sounds\n\n---\n\n## 🔊 UX Sound Effects\n\nSecret Room isn't just visual — it's sonic.\n\n- ⚔️ **Button clicks** make a soft \"sword swing\" sound\n- 🎵 A **creepy, corny ambient soundtrack** plays during interaction\n- 🧠 Sound control is powered by a custom `useSoundEffect` hook\n\nThis little detail boosts the eerie/secretive vibe of the app and makes every interaction feel a bit more dramatic.\n\n---\n\n## 🧬 Anonymous ID \u0026 Username Logic\n\n- Every user gets a consistent anonymous fingerprint using a **custom in-house algorithm**\n- The backend generates usernames using a `serverId-userId` pattern to:\n  - ✅ Ensure uniqueness per server\n  - ✅ Prevent tracking across servers\n  - ✅ Keep identifiers short and unguessable\n\n---\n\n## 🌐 Real-Time Messaging (Socket.IO)\n\nSocket.IO powers the real-time core of Secret Room. The frontend emits and listens for the following events:\n\n### 📥 Incoming\n- `new-message`\n- `user-joined`\n- `user-left`\n- `server-expired`\n\n### 📤 Outgoing\n- `send-message`\n- `mark-as-read`\n- `disconnect-intent`\n\n---\n\n## 📁 File Upload Support\n\nSend and receive:\n\n- Images: `png`, `jpg`, `jpeg`, `gif`\n- Documents: `pdf`\n\nFiles are securely handled and scoped to the session.\n\n---\n\n## 🧠 Message Decryption\n\nMessages are **only decrypted** on the client **after the server confirms access conditions**, offering an extra layer of privacy and control.\n\n---\n\n## 🖼️ Screenshots\n\n### Home Page\n![Home page snapshot](https://secret-room.sirv.com/snapshots/Screenshot%202025-04-21%20at%2012.30.58.png)\n\n### Empty Server\n![Empty server Snapshot](https://secret-room.sirv.com/snapshots/Screenshot%202025-04-21%20at%2012.31.45.png)\n\n### Invited user joining Server\n![invitation complete Snapshot](https://secret-room.sirv.com/snapshots/Screenshot%202025-04-21%20at%2012.34.07.png)\n\n### Host with one User in server\n![Server](https://secret-room.sirv.com/snapshots/Screenshot%202025-04-21%20at%2012.32.08.png)\n\n### Conversation from Host to invited user\n![Host to user](https://secret-room.sirv.com/snapshots/Screenshot%202025-04-21%20at%2012.33.17.png)\n\n### Invited user's view\n![Invited User chat view](https://secret-room.sirv.com/snapshots/Screenshot%202025-04-21%20at%2012.33.31.png)\n\n---\n\n## ⚙️ Getting Started\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/fabiconcept/secret-room\n\n# 2. Go to the project folder\ncd secret-room\n\n# 3. Install dependencies\nnpm install\n\n# 4. Configure environment variables\n# .env.local\nNEXT_PUBLIC_SIRV_CLIENT_ID\nNEXT_PUBLIC_SIRV_CLIENT_SECRET\nNEXT_PUBLIC_SIRV_CDN_URL\nNEXT_PUBLIC_SIRV_API_URL\nNEXT_PUBLIC_SERVER_URL\nNEXT_PUBLIC_SOCKET_SERVER_URL\nNEXT_PUBLIC_API_KEY\nNEXT_PUBLIC_APP_URL\n\n# 5. Run the development server\nnpm run dev\n```\n\n---\n\n## ✅ Done \u0026 Polished\n\n- ✅ Fully mobile responsive\n- ✅ Clean server expiration screen UX\n- ✅ File sharing support\n- ✅ Deterministic anonymous usernames\n- ✅ Auto message decryption\n- ✅ Audio-enhanced UX (buttons + ambiance)\n\n---\n\n## 🙌 Author\n\nBuilt with ❤️ by [Favour Tochukwu Ajokubi](https://github.com/fabiconcept)\n\n---\n\n## 🛡 License\n\nThis project is licensed under the [MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiconcept%2Fsecret-room","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabiconcept%2Fsecret-room","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiconcept%2Fsecret-room/lists"}