Skip to content

EndlessPixel/server

EndlessPixel Web

Next.js TypeScript Tailwind CSS License

简体中文 | English

EndlessPixel 服务器的官方网站,基于 Next.js App Router + TypeScript + Tailwind CSS 构建。

✨ 特性

  • ⚡ 全栈 React 框架 Next.js 16,支持 SSR/SSG/ISR
  • 🎨 Tailwind CSS 4 原子化样式,暗色模式开箱即用
  • 🌍 多语言支持,中英文国际化
  • 📦 80+ 启动器与整合包高速下载,支持自定义镜像
  • 🧪 严格 TypeScript 类型检查,ESLint + Prettier 自动化
  • 📱 响应式布局,PWA 离线支持(Workbox 自动生成)
  • 🏠 服务器状态实时监控
  • 📖 服务器 Wiki 文档
  • 👥 团队成员展示

🚀 快速开始

前置条件

  • Node.js ≥ 18
  • npm ≥ 9

本地开发

# 1. 克隆仓库
git clone https://github.com/EndlessPixel/server.git
cd server

# 2. 安装依赖
npm install

# 3. 启动开发服务器
npm run dev
# or npm dev-https

浏览器访问 http://localhost:3000https://localhost:3000 即可实时预览。

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支:git checkout -b feat/xxx
  3. 提交 Commit:git commit -m "feat: 新增 xxx"(遵循 Conventional Commits
  4. 推送分支并提交 Pull Request
  5. CI 通过 & Code Review 合并

代码规范

  • 使用 TypeScript 严格模式
  • 样式优先使用 Tailwind CSS,避免行内样式
  • 提交前执行 npm run lint && npm run type-check

📄 许可证

GNU Affero General Public License v3.0
允许商业使用、修改、再发布,但修改后的网络服务必须开源。

💬 联系我们

🌍 国际化指南

为现有语言添加新文字

  1. 在语言文件中添加翻译

    • 打开 lib/langs/zh-cn.json(中文)和 lib/langs/en.json(英文)文件
    • 在适当的位置添加新的翻译键值对
    • 确保两个语言文件中的键名保持一致
  2. 在代码中使用翻译

    • 导入 t 函数:import { t } from '@/lib/i18n'
    • 使用 t('键名') 来获取翻译后的文本

添加新语言

  1. 创建语言文件

    • lib/langs/ 目录下创建新的语言文件,例如 ja.json(日语)
    • 复制 zh-cn.json 的结构,将翻译内容替换为目标语言
  2. 更新 i18n.ts 文件

    • 打开 lib/i18n.ts 文件
    • 导入新的语言文件
    • locales 对象中添加新的语言
    • languageNames 对象中添加新语言的显示名称
  3. 更新类型定义

    • 确保 Locale 类型能够包含新的语言代码

最佳实践

  • 命名规范:使用小写字母和连字符,按模块和功能组织翻译键
  • 一致性:确保所有语言文件中的键名保持一致
  • fallback 机制:如果某个语言缺少翻译,系统会返回键名,确保键名有意义
  • 动态内容:使用替换参数,例如 t('components.example.message', { name: '用户' })
  • 复数形式:对于需要复数形式的内容,考虑使用单独的键

Star ⭐ 与 Watch 👀 是对我们最大的支持!