{"id":21020609,"url":"https://github.com/5ime/contest_invitations","last_synced_at":"2025-12-28T00:24:46.991Z","repository":{"id":236317601,"uuid":"792369053","full_name":"5ime/contest_invitations","owner":"5ime","description":"✉️ Automatically Generate Contest Invitations 自动生成 CTF 竞赛邀请函","archived":false,"fork":false,"pushed_at":"2024-08-31T01:08:56.000Z","size":3634,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-20T12:46:34.367Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Vue","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/5ime.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}},"created_at":"2024-04-26T14:25:56.000Z","updated_at":"2024-11-27T02:15:45.000Z","dependencies_parsed_at":"2024-04-26T15:41:40.388Z","dependency_job_id":"89724f49-e2b4-485c-8048-c1db83a4526a","html_url":"https://github.com/5ime/contest_invitations","commit_stats":null,"previous_names":["5ime/contest_invitations"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5ime%2Fcontest_invitations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5ime%2Fcontest_invitations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5ime%2Fcontest_invitations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5ime%2Fcontest_invitations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/5ime","download_url":"https://codeload.github.com/5ime/contest_invitations/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243450746,"owners_count":20293004,"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":[],"created_at":"2024-11-19T10:42:21.427Z","updated_at":"2025-12-28T00:24:46.984Z","avatar_url":"https://github.com/5ime.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MoeCTF 2024 邀请函生成器\n\n一个基于 Nuxt 3 的邀请函海报生成器，支持自定义团队名称。\n\n## 🚀 快速开始\n\n### 1. 安装依赖\n\n```bash\nnpm install\n```\n\n### 2. 配置环境变量\n\n复制 `.env.example` 文件到 `.env`:\n\n```bash\ncp .env.example .env\n```\n\n根据需要修改 `.env` 文件中的配置：\n\n```env\n# 应用信息\nAPP_NAME=MoeCTF 2024\nAPP_DESCRIPTION=Generate custom invitation posters for MoeCTF 2024\n\n# 比赛信息\nCONTEST_START_TIME=2024/01/01 00:00(UTC+8)\nCONTEST_END_TIME=2024/01/03 22:00(UTC+8)\nCONTEST_TITLE=MoeCTF 2024\n\n# 图片生成配置\nIMAGE_MAX_NAME_LENGTH=50\nIMAGE_DEFAULT_FONT_SIZE=100\nIMAGE_MIN_FONT_SIZE=24\nIMAGE_FONT_FAMILY=Arial, sans-serif\nIMAGE_TEXT_COLOR=white\nIMAGE_POSITION_Y_OFFSET=25\nIMAGE_OUTPUT_FORMAT=png\nIMAGE_QUALITY=90\nIMAGE_COMPRESSION_LEVEL=6\n\n# 图片阴影配置\nIMAGE_SHADOW_DX=2\nIMAGE_SHADOW_DY=2\nIMAGE_SHADOW_STD_DEVIATION=3\nIMAGE_SHADOW_FLOOD_COLOR=#000\nIMAGE_SHADOW_FLOOD_OPACITY=0.3\n```\n\n### 3. 运行开发服务器\n\n```bash\nnpm run dev\n```\n\n访问 `http://localhost:3000` 查看应用。\n\n## 🛠️ 技术栈\n\n- **框架**: Nuxt 3\n- **样式**: Tailwind CSS + DaisyUI\n- **图片处理**: Sharp\n- **语言**: TypeScript\n- **部署**: 静态生成\n\n## 📁 项目结构\n\n```\n├── components/          # Vue 组件\n├── composables/        # 可复用的逻辑\n├── server/api/         # API 端点\n├── types/              # TypeScript 类型定义\n├── utils/              # 工具函数\n├── public/             # 静态资源\n├── .env                # 环境变量配置\n└── .env.example        # 环境变量示例\n```\n\n## 🎨 功能特性\n\n- ✅ 实时海报生成\n- ✅ 防抖输入优化\n- ✅ 响应式设计\n- ✅ 统一错误处理\n- ✅ 环境变量配置\n- ✅ TypeScript 类型支持\n- ✅ 图片缓存优化\n\n## 🔧 配置说明\n\n### 环境变量\n\n所有配置都通过环境变量管理，支持不同环境的配置：\n\n- **开发环境**: `.env` 文件\n- **生产环境**: 通过部署平台设置环境变量\n\n### 配置分类\n\n1. **应用配置**: 应用名称、描述等基础信息\n2. **比赛配置**: 比赛时间、标题等比赛相关信息\n3. **图片配置**: 字体、颜色、质量等图片生成参数\n\n\u003e 注意：API配置和错误消息已经在代码中写死，无需通过环境变量配置。\n\n## 📱 使用方法\n\n1. 在输入框中输入团队名称\n2. 点击\"制作\"按钮或等待自动生成\n3. 生成的海报将显示在右侧\n4. 点击\"Download\"按钮下载海报\n\n## 🚀 部署\n\n### 静态生成\n\n```bash\nnpm run generate\n```\n\n### 构建\n\n```bash\nnpm run build\n```\n\n## 📝 开发说明\n\n### 添加新功能\n\n1. 在 `.env.example` 中添加新的环境变量（如果是动态配置）\n2. 更新 `nuxt.config.ts` 中的 `runtimeConfig`\n3. 在 `utils/config.ts` 中添加配置访问函数\n4. 在相关组件中使用新配置\n\n\u003e 对于固定的配置（如错误消息、API设置），建议直接在 `utils/config.ts` 中定义常量。\n\n### 环境变量命名规范\n\n- 应用相关: `APP_*`\n- 比赛相关: `CONTEST_*`\n- 图片相关: `IMAGE_*`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5ime%2Fcontest_invitations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F5ime%2Fcontest_invitations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5ime%2Fcontest_invitations/lists"}