{"id":15724172,"url":"https://github.com/ccnupracticaltraining-530-2/harmony","last_synced_at":"2026-03-07T03:01:50.776Z","repository":{"id":247870946,"uuid":"827072358","full_name":"CCNUPracticalTraining-530-2/Harmony","owner":"CCNUPracticalTraining-530-2","description":"Harmony - 在线即时通讯平台","archived":false,"fork":false,"pushed_at":"2025-03-28T09:31:39.000Z","size":2346,"stargazers_count":4,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T08:12:12.291Z","etag":null,"topics":["mysql","nextjs","prisma","socket-io","tailwindcss","typescript","webrtc"],"latest_commit_sha":null,"homepage":"https://harmony-530-2.vercel.app","language":"TypeScript","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/CCNUPracticalTraining-530-2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-11T01:10:02.000Z","updated_at":"2025-03-05T13:14:17.000Z","dependencies_parsed_at":"2024-08-27T14:54:09.625Z","dependency_job_id":"8ede6128-149f-4802-aa45-04a21050b47e","html_url":"https://github.com/CCNUPracticalTraining-530-2/Harmony","commit_stats":{"total_commits":174,"total_committers":2,"mean_commits":87.0,"dds":"0.27586206896551724","last_synced_commit":"b99e446f9ed4a58ce9927cfa5c25e3edbb2ee2f5"},"previous_names":["ccnupracticaltraining-530-2/harmony"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCNUPracticalTraining-530-2%2FHarmony","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCNUPracticalTraining-530-2%2FHarmony/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCNUPracticalTraining-530-2%2FHarmony/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCNUPracticalTraining-530-2%2FHarmony/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CCNUPracticalTraining-530-2","download_url":"https://codeload.github.com/CCNUPracticalTraining-530-2/Harmony/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252843510,"owners_count":21812893,"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":["mysql","nextjs","prisma","socket-io","tailwindcss","typescript","webrtc"],"created_at":"2024-10-03T22:15:11.335Z","updated_at":"2026-03-07T03:01:45.738Z","avatar_url":"https://github.com/CCNUPracticalTraining-530-2.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"130\" src=\"https://www.github.com/CCNUPracticalTraining-530-2.png\" alt=\"Harmony Logo\"\u003e\n  \u003ch1 align=\"center\"\u003eHarmony\u003c/h1\u003e\n  \u003ch3\u003e在线即时通讯平台\u003c/h3\u003e\n  \u003ca href=\"https://github.com/CCNUPracticalTraining-530-2/Harmony\"\u003e\u003cstrong\u003e探索项目文档 »\u003c/strong\u003e\u003c/a\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n\n![license](https://img.shields.io/github/license/CCNUPracticalTraining-530-2/Harmony)\n![language](https://img.shields.io/github/languages/top/CCNUPracticalTraining-530-2/Harmony)\n![last](https://img.shields.io/github/last-commit/CCNUPracticalTraining-530-2/Harmony)\n\n\u003ca href=\"https://harmony-530-2.vercel.app\" target=\"_blank\"\u003e在线体验\u003c/a\u003e\n·\n\u003ca href=\"https://github.com/BlackishGreen33/ZhiXueTuPu/issues\"\u003e报告Bug\u003c/a\u003e\n·\n\u003ca href=\"https://github.com/BlackishGreen33/ZhiXueTuPu/issues\"\u003e提出新特性\u003c/a\u003e\n\n\u003c/div\u003e\n\n## 🔖 项目导览\n\n### ✨ 現有功能\n\n- 创建专属服务器\n- 服务器权限管理(包括 `拥有者` 、 `管理员` 与 `一般成员`)\n- 建立服务器邀请链接\n- 创建频道(包括 `文字频道` 、 `语音频道` 与 `视讯频道`)\n- 发送 emoji 、图片、pdf 文件(可在线预览)\n- 公众频道/私人聊天和通讯\n- 屏幕画面共享\n\n### ✒️ 引用技術\n\n- **框架**: [Next.js](https://nextjs.org)\n- **样式**: [Tailwind CSS](https://www.tailwindcss.cn/)\n- **数据库**: [MySQL](https://www.mysql.com/)\n- **数据库工具**: [Prisma](https://www.prisma.io/)\n- **即时通讯**: [Socket.IO](https://socket.io/)\n- **媒体串流**: [WebRTC](https://webrtc.org/)\n\n### 📋 提交规范\n\n- 🎉 init：项目初始化\n- ✨ feat：新增功能（feature）\n- 🐞 fix：修复bug\n- 📃 docs：文档修改\n- 🌈 style：代码样式修改，不影响原代码逻辑\n- ✅ test：测试相关的改动\n- 🔨 refactor：代码重构\n- 🔧 chore：建制过程或辅助工具的变动\n\n### 🎯 相容环境\n\n- 现代浏览器（Chrome \u003e= 64, Edge \u003e= 79, Firefox \u003e= 78, Safari \u003e= 12）\n\n### 💻 本地调试\n\n记得先配置环境变量：\n\n```env\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\nCLERK_SECRET_KEY=\nNEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in\nNEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up\nNEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/\nNEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/\n\nDATABASE_URL=\n\nUPLOADTHING_SECRET=\nUPLOADTHING_APP_ID=\n\nLIVEKIT_API_KEY=\nLIVEKIT_API_SECRET=\nNEXT_PUBLIC_LIVEKIT_URL=\n```\n\n接着拉取代码和安装依赖：\n\n```bash\n$ git clone https://github.com/CCNUPracticalTraining-530-2/Harmony.git\n$ cd Harmony\n$ pnpm install\n$ pnpm run dev\n```\n\n### 📝 授权\n\n上述文件皆以 MIT 许可授权\n\n\u003e 详细之授权请参考 [LICENSE](LICENSE) 文件\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccnupracticaltraining-530-2%2Fharmony","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccnupracticaltraining-530-2%2Fharmony","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccnupracticaltraining-530-2%2Fharmony/lists"}