├── .gitignore ├── LICENSE ├── README.md ├── app.vue ├── assets ├── iconfont.css ├── iconfont.ttf ├── iconfont.woff ├── iconfont.woff2 ├── nuxt.css ├── prose.scss └── theme.scss ├── components ├── AvatarGroup.vue ├── BorderGradientButton.vue ├── ColorModeSwitch.vue ├── GradientButton.vue ├── GradientIcon.vue ├── GradientText.vue ├── LinyuToast.vue ├── ShadowText.vue ├── TextPrint.vue └── ToastProvider.vue ├── content ├── docs │ ├── 0.mini │ │ ├── 0.install.md │ │ └── 1.deploy.md │ └── index.md └── index.md ├── layouts ├── bottom.vue ├── default.vue └── header.vue ├── middleware └── unknownRoute.global.ts ├── nuxt.config.ts ├── office.config.js ├── package.json ├── pages ├── [...slug].vue ├── docs │ ├── [doc].vue │ ├── index.vue │ └── mini │ │ └── [mini].vue └── index.vue ├── pnpm-lock.yaml ├── public ├── avatar │ ├── colouredglaze.png │ ├── heath.png │ └── setSail_mountain.png ├── desktop.png ├── favicon.ico ├── flutter.svg ├── getx.svg ├── logo.png ├── mini.png ├── mobile.png ├── react.svg ├── robots.txt ├── rtc.svg ├── springboot.svg ├── tauri.svg ├── vite.svg ├── vue.svg └── ws.svg ├── server └── tsconfig.json ├── tailwind.config.ts ├── tokens.config.ts ├── tsconfig.json └── utils └── common.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | .fleet 19 | .idea 20 | 21 | # Local env files 22 | .env 23 | .env.* 24 | !.env.example 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nuxt Minimal Starter 2 | 3 | Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. 4 | 5 | ## Setup 6 | 7 | Make sure to install dependencies: 8 | 9 | ```bash 10 | # npm 11 | npm install 12 | 13 | # pnpm 14 | pnpm install 15 | 16 | # yarn 17 | yarn install 18 | 19 | # bun 20 | bun install 21 | ``` 22 | 23 | ## Development Server 24 | 25 | Start the development server on `http://localhost:3000`: 26 | 27 | ```bash 28 | # npm 29 | npm run dev 30 | 31 | # pnpm 32 | pnpm dev 33 | 34 | # yarn 35 | yarn dev 36 | 37 | # bun 38 | bun run dev 39 | ``` 40 | 41 | ## Production 42 | 43 | Build the application for production: 44 | 45 | ```bash 46 | # npm 47 | npm run build 48 | 49 | # pnpm 50 | pnpm build 51 | 52 | # yarn 53 | yarn build 54 | 55 | # bun 56 | bun run build 57 | ``` 58 | 59 | Locally preview production build: 60 | 61 | ```bash 62 | # npm 63 | npm run preview 64 | 65 | # pnpm 66 | pnpm preview 67 | 68 | # yarn 69 | yarn preview 70 | 71 | # bun 72 | bun run preview 73 | ``` 74 | 75 | Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. 76 | -------------------------------------------------------------------------------- /app.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /assets/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "iconfont"; /* Project id 4800092 */ 3 | src: url('iconfont.woff2?t=1736173544488') format('woff2'), 4 | url('iconfont.woff?t=1736173544488') format('woff'), 5 | url('iconfont.ttf?t=1736173544488') format('truetype'); 6 | } 7 | 8 | .iconfont { 9 | font-family: "iconfont" !important; 10 | font-size: 16px; 11 | font-style: normal; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | .icon-yueliang:before { 17 | content: "\e62e"; 18 | } 19 | 20 | .icon-taiyang:before { 21 | content: "\e8c7"; 22 | } 23 | 24 | .icon-guanbi:before { 25 | content: "\e615"; 26 | } 27 | 28 | .icon-liebiao:before { 29 | content: "\e60e"; 30 | } 31 | 32 | .icon-caidan:before { 33 | content: "\e898"; 34 | } 35 | 36 | .icon-jiantou:before { 37 | content: "\e799"; 38 | } 39 | 40 | .icon-daima:before { 41 | content: "\e601"; 42 | } 43 | 44 | .icon-duoyanghua:before { 45 | content: "\e600"; 46 | } 47 | 48 | .icon-anquan:before { 49 | content: "\e63e"; 50 | } 51 | 52 | .icon-fasong:before { 53 | content: "\e636"; 54 | } 55 | 56 | .icon-gitee:before { 57 | content: "\e602"; 58 | } 59 | 60 | .icon-github:before { 61 | content: "\e64c"; 62 | } 63 | 64 | -------------------------------------------------------------------------------- /assets/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/assets/iconfont.ttf -------------------------------------------------------------------------------- /assets/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/assets/iconfont.woff -------------------------------------------------------------------------------- /assets/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/assets/iconfont.woff2 -------------------------------------------------------------------------------- /assets/nuxt.css: -------------------------------------------------------------------------------- 1 | @import './iconfont.css'; 2 | @import './prose.scss'; 3 | @import 'theme.scss'; 4 | 5 | /*:root {*/ 6 | /* --header-height: 4rem;*/ 7 | /* --primary-color: 76, 155, 255;*/ 8 | /* --minor-color: 0, 96, 217;*/ 9 | /*}*/ 10 | 11 | ::-webkit-scrollbar { 12 | width: 8px; 13 | height: 8px; 14 | } 15 | 16 | ::-webkit-scrollbar-track { 17 | background: transparent; 18 | } 19 | 20 | ::-webkit-scrollbar-thumb { 21 | border-radius: 3px; 22 | background: rgba(31, 31, 31, 0.5); 23 | } 24 | -------------------------------------------------------------------------------- /assets/prose.scss: -------------------------------------------------------------------------------- 1 | 2 | pre { 3 | background-color: rgb(var(--primary-color), 0.05); 4 | } 5 | 6 | .tabs-header .tabs { 7 | background-color: rgb(var(--primary-color), 0.1); 8 | padding: 10px 0; 9 | height: 50px; 10 | 11 | .highlight-underline { 12 | display: none; 13 | } 14 | 15 | button { 16 | display: flex; 17 | justify-content: center; 18 | align-items: center; 19 | 20 | &.active { 21 | background-color: rgb(var(--primary-color), 0.8); 22 | border-radius: 5px; 23 | color: #FFF !important; 24 | } 25 | 26 | &.not-active { 27 | border-radius: 5px; 28 | 29 | &:hover { 30 | background-color: rgba(var(--primary-color), 0.2) !important; 31 | } 32 | } 33 | } 34 | } 35 | 36 | a, p { 37 | code { 38 | background-color: rgba(var(--primary-color), 0.1) !important; 39 | border-color: rgb(var(--primary-color)) !important; 40 | color: rgba(var(--primary-color)) !important; 41 | font-weight: bold !important; 42 | } 43 | } 44 | 45 | p { 46 | a { 47 | color: rgba(var(--primary-color)) !important; 48 | font-weight: bold !important; 49 | padding: 0 5px; 50 | } 51 | } 52 | 53 | .alert { 54 | &.info { 55 | .alert-content { 56 | color: rgba(var(--primary-color)) !important; 57 | } 58 | } 59 | } 60 | 61 | -------------------------------------------------------------------------------- /assets/theme.scss: -------------------------------------------------------------------------------- 1 | .light { 2 | --header-height: 4rem; 3 | --primary-color: 76, 155, 255; 4 | --minor-color: 0, 96, 217; 5 | --bg-color: 255, 255, 255; 6 | --text-color: 31, 31, 31; 7 | --button-hover-color: #f2f6ff; 8 | } 9 | 10 | .dark { 11 | --header-height: 4rem; 12 | --primary-color: 76, 155, 255; 13 | --minor-color: 0, 96, 217; 14 | --bg-color: 15, 23, 42; 15 | --text-color: 255, 255, 255; 16 | --button-hover-color: rgba(134, 134, 134, 0.5); 17 | 18 | body { 19 | background-color: #000217; 20 | color: #FFF; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /components/AvatarGroup.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 63 | 64 | 110 | -------------------------------------------------------------------------------- /components/BorderGradientButton.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 26 | 27 | -------------------------------------------------------------------------------- /components/ColorModeSwitch.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 51 | 52 | 81 | -------------------------------------------------------------------------------- /components/GradientButton.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | 22 | -------------------------------------------------------------------------------- /components/GradientIcon.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/components/GradientIcon.vue -------------------------------------------------------------------------------- /components/GradientText.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 21 | 22 | -------------------------------------------------------------------------------- /components/LinyuToast.vue: -------------------------------------------------------------------------------- 1 | 8 | 27 | 28 | -------------------------------------------------------------------------------- /components/ShadowText.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 31 | -------------------------------------------------------------------------------- /components/TextPrint.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | -------------------------------------------------------------------------------- /components/ToastProvider.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 44 | 45 | -------------------------------------------------------------------------------- /content/docs/0.mini/0.install.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "快速开始" 3 | --- 4 | 5 | # 简介 6 | 7 | `林语Mini(Linyu-mini)`是一款基于 `Vue 3` 和 `SpringBoot` 构建的高性能即时通讯`在线聊天系统`。系统以`轻量化` 8 | 设计为核心,具备快速部署和便捷扩展的特点,适用于企业内部协作、团队沟通以及小型社交平台等多种场景。 9 | 10 | ## 快速开始 11 | 12 | 下面介绍本地如何运行前端项目和后端项目,您准备好了么,快来开始吧~ 13 | 14 | #### 前端运行 15 | 16 | 首先,确保已安装前端运行所需环境:[node](https://nodejs.org/zh-cn) 17 | 18 | 第一步 克隆项目 19 | 20 | ```bash 21 | git clone https://github.com/linyu-im/linyu-mini-web.git 22 | ``` 23 | 24 | 第二步 进入目录 25 | 26 | ```bash 27 | cd linyu-mini-web 28 | ``` 29 | 30 | 第三步 依赖安装 31 | 32 | ::code-group 33 | 34 | ```bash [NPM] 35 | npm install 36 | ``` 37 | 38 | ```bash [Yarn] 39 | yarn install 40 | ``` 41 | 42 | :: 43 | 44 | 第四步 修改服务地址 45 | 修改`.env`文件内的地址信息,`VITE_HTTP_URL`后端服务地址,`VITE_WS_URL`后端服务websocket地址 46 | 47 | ```ini [.env] 48 | VITE_HTTP_URL=http://127.0.0.1:9200 49 | VITE_WS_URL=ws://127.0.0.1:9100 50 | ``` 51 | 52 | 第四步 项目启动 53 | 54 | ```bash 55 | npm run dev 56 | ``` 57 | 58 | ### 后端运行 59 | 60 | 首先,确保已安装后端运行所需环境:[JDK 8](https://www.oracle.com/java/technologies/downloads/#java8-windows)、[Maven](https://maven.apache.org/download.cgi) 61 | 62 | 第一步 克隆项目 63 | 64 | ```bash 65 | git clone https://github.com/linyu-im/linyu-mini-server.git 66 | ``` 67 | 68 | 第二步 进入目录 69 | 70 | ```bash 71 | cd linyu-mini-server 72 | ``` 73 | 74 | 第三步 运行项目 75 | 使用 Maven 构建并运行项目,建议可以使用[idea](https://www.jetbrains.com/idea/)来运行及开发 76 | 77 | ```bash 78 | mvn spring-boot:run 79 | ``` 80 | 81 | ::alert{type="warning"} 82 | 注意事项 83 | - 请确保前后端运行环境的端口配置一致。 84 | - 如有防火墙限制,请开放相关端口(默认 HTTP: 9200, WebSocket: 9100)。 85 | - 如果遇到问题,请参考官方文档或联系支持团队。 86 | - 默认安装部署即表示您已同意[开源协议](https://github.com/DWHengr/linyu-client/blob/main/LICENSE)及[免责声明条款](https://github.com/DWHengr/linyu-client?tab=readme-ov-file#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E),请务必详细阅读相关内容。 87 | :: 88 | 89 | ::alert{type="info"} 90 | 🎉 恭喜!您前后端项目已完成运行,快去体验轻量级在线聊天系统吧! 91 | :: -------------------------------------------------------------------------------- /content/docs/0.mini/1.deploy.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "部署安装" 3 | --- 4 | 5 | # 部署安装 6 | 7 | 是否想快速将这个`轻量级`的聊天系统部署到服务器并查看效果?下面将介绍一个简单的部署方式,让您`快速启动`服务。 8 | 9 | ### 快速部署 10 | 首先,请确保您的服务器已安装并成功运行[Docker](https://www.docker.com/)和[Docker Compose](https://github.com/docker/compose/releases) 11 | 12 | 第一步 文件拷贝 13 | 将以下文件从项目中复制到您的服务器:[.evn](https://github.com/linyu-im/linyu-mini-server/blob/main/deploy/compose/.env) 14 | 文件,[docker-compose.yml](https://github.com/linyu-im/linyu-mini-server/blob/main/deploy/compose/docker-compose.yml)文件,拷贝到服务器上 15 | 第二步 修改.evn内容 16 | 打开`.env`文件,找到`SERVER_NAME`并将其值修改为您的服务器`IP地址/域名`。其他配置项可以根据需要进行调整。 17 | 18 | ```ini [.env] 19 | #服务地址(您IP/域名) 20 | SERVER_NAME=localhost 21 | ... 22 | ``` 23 | 24 | 第三步 启动服务 25 | 在服务器上执行以下命令启动服务 26 | ```bash 27 | docker-compose up -d 28 | ``` 29 | 30 | ::alert{type="warning"} 31 | 注意事项 32 | - 该部署方式基于`HTTP`协议。如果您需要启用`HTTPS`协议,请参考[相关配置](https://github.com/linyu-im/linyu-mini-server/tree/main/deploy/compose/https) 33 | - 默认服务将使用服务器的`80`端口. 34 | - 如果遇到问题,请参考官方文档或联系支持团队。 35 | - 默认安装部署即表示您已同意[开源协议](https://github.com/DWHengr/linyu-client/blob/main/LICENSE)及[免责声明条款](https://github.com/DWHengr/linyu-client?tab=readme-ov-file#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E),请务必详细阅读相关内容。 36 | :: 37 | 38 | ::alert{type="info"} 39 | 🎉 恭喜!您服务的已成功部署,您可以访问服务器的IP地址或域名,开始体验这个轻量级的聊天系统了! 40 | :: -------------------------------------------------------------------------------- /content/docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | isNoShow: ture 4 | --- -------------------------------------------------------------------------------- /content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | isNoShow: ture 4 | --- -------------------------------------------------------------------------------- /layouts/bottom.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 56 | -------------------------------------------------------------------------------- /layouts/default.vue: -------------------------------------------------------------------------------- 1 | 8 | 12 | -------------------------------------------------------------------------------- /layouts/header.vue: -------------------------------------------------------------------------------- 1 | 55 | 56 | 82 | 83 | 168 | -------------------------------------------------------------------------------- /middleware/unknownRoute.global.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtRouteMiddleware((to, from) => { 2 | // if (!to.matched.length) { 3 | // return navigateTo('/') 4 | // } 5 | }) 6 | -------------------------------------------------------------------------------- /nuxt.config.ts: -------------------------------------------------------------------------------- 1 | // https://nuxt.com/docs/api/configuration/nuxt-config 2 | import {resolve} from "path"; 3 | 4 | export default defineNuxtConfig({ 5 | compatibilityDate: '2025-01-03', 6 | devtools: {enabled: false}, 7 | modules: ['@nuxtjs/tailwindcss', '@nuxtjs/color-mode'], 8 | css: [resolve(__dirname, './assets/nuxt.css')], 9 | extends: '@nuxt-themes/docus', 10 | nitro: { 11 | prerender: { 12 | crawlLinks: true, 13 | routes: ['/'], 14 | }, 15 | }, 16 | colorMode: { 17 | preference: 'system', 18 | fallback: 'light', 19 | storage: 'localStorage', 20 | storageKey: 'nuxt-color-mode1' 21 | } 22 | }) -------------------------------------------------------------------------------- /office.config.js: -------------------------------------------------------------------------------- 1 | // 打包运行 pm2配置 2 | module.exports = { 3 | apps: [ 4 | { 5 | name: 'office', 6 | port: '3001', 7 | script: './.output/server/index.mjs' 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nuxt-app", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "build": "nuxt build", 8 | "dev": "nuxt dev", 9 | "generate": "nuxt generate", 10 | "preview": "nuxt preview", 11 | "postinstall": "nuxt prepare" 12 | }, 13 | "dependencies": { 14 | "@nuxt-themes/docus": "^1.15.1", 15 | "@nuxtjs/color-mode": "^3.5.2", 16 | "@nuxtjs/tailwindcss": "^6.12.2", 17 | "@pinia/nuxt": "^0.9.0", 18 | "nuxt": "^3.15.0", 19 | "pinia": "^2.3.0", 20 | "sass": "^1.58.0", 21 | "vue": "latest", 22 | "vue-router": "latest" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pages/[...slug].vue: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /pages/docs/[doc].vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /pages/docs/index.vue: -------------------------------------------------------------------------------- 1 | 21 | 26 | -------------------------------------------------------------------------------- /pages/docs/mini/[mini].vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 103 | 104 | 143 | 144 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 105 | 106 | 172 | 173 | -------------------------------------------------------------------------------- /public/avatar/colouredglaze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/avatar/colouredglaze.png -------------------------------------------------------------------------------- /public/avatar/heath.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/avatar/heath.png -------------------------------------------------------------------------------- /public/avatar/setSail_mountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/avatar/setSail_mountain.png -------------------------------------------------------------------------------- /public/desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/desktop.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/favicon.ico -------------------------------------------------------------------------------- /public/flutter.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/getx.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/logo.png -------------------------------------------------------------------------------- /public/mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/mini.png -------------------------------------------------------------------------------- /public/mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linyu-im/linyu-official-web/a496aa513648e9aea706e01eb7340c79862c1226/public/mobile.png -------------------------------------------------------------------------------- /public/react.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/rtc.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | -------------------------------------------------------------------------------- /public/springboot.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /public/tauri.svg: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 9 | 11 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /public/vue.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/ws.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.nuxt/tsconfig.server.json" 3 | } 4 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | theme: { 3 | extend: { 4 | colors: { 5 | primary: { 6 | 50: {value: '#eef6ff'}, 7 | 100: {value: '#daeaff'}, 8 | 200: {value: '#bddbff'}, 9 | 300: {value: '#92c1fc'}, 10 | 400: {value: '#67afff'}, 11 | 500: {value: '#4c9bff'}, 12 | 600: {value: '#3580fc'}, 13 | 700: {value: '#174ade'}, 14 | 800: {value: '#193db4'}, 15 | 900: {value: '#1a378e'} 16 | } 17 | } 18 | } 19 | }, 20 | content: [ 21 | 'components/**/*.{vue,js,ts}', 22 | 'layouts/**/*.vue', 23 | 'pages/**/*.vue', 24 | 'composables/**/*.{js,ts}', 25 | 'plugins/**/*.{js,ts}', 26 | 'App.{js,ts,vue}', 27 | 'app.{js,ts,vue}', 28 | 'Error.{js,ts,vue}', 29 | 'error.{js,ts,vue}', 30 | 'content/**/*.md' 31 | ], 32 | } 33 | -------------------------------------------------------------------------------- /tokens.config.ts: -------------------------------------------------------------------------------- 1 | import {defineTheme} from 'pinceau' 2 | 3 | export default defineTheme({ 4 | color: { 5 | primary: { 6 | 50: {value: '#eef6ff'}, 7 | 100: {value: '#daeaff'}, 8 | 200: {value: '#bddbff'}, 9 | 300: {value: '#92c1fc'}, 10 | 400: {value: '#67afff'}, 11 | 500: {value: '#4c9bff'}, 12 | 600: {value: '#3580fc'}, 13 | 700: {value: '#174ade'}, 14 | 800: {value: '#193db4'}, 15 | 900: {value: '#1a378e'} 16 | } 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json" 4 | } 5 | -------------------------------------------------------------------------------- /utils/common.js: -------------------------------------------------------------------------------- 1 | export function openUrl(url) { 2 | window.open(url, '_blank') 3 | } --------------------------------------------------------------------------------