Radhouen911/RamadhanCTF-Frontend

GitHub: Radhouen911/RamadhanCTF-Frontend

一个基于 React + Vite 构建的 CTFd 主题前端,为 CTF 竞赛提供现代化的用户界面并完整集成 CTFd 后端能力。

Stars: 0 | Forks: 0

# Ramadhan CTFd 主题 本仓库包含用作 **Ramadhan CTFd 主题** 的 React + Vite 前端。它是一个挂载在 CTFd 主题系统内的单页应用。 ## 归档模式预览 查看已归档的 Ramadhan CTF 2026 活动:**[https://radhouen911.github.io/RamadhanCTF-Frontend/teams](https://radhouen911.github.io/RamadhanCTF-Frontend/)** 该归档包含活动中的所有挑战、团队和记分板数据。 ## 技术栈 - React + TypeScript - Vite - Tailwind CSS - Motion / 动画 UI 组件 - CTFd REST API 集成 ## 已实现的功能 ### 核心页面 - 落地页 - 登录 / 注册流程 - 挑战页面 - 记分板页面 - 团队页面 - 团队管理页面 - 用户个人主页 - 公开的用户 / 团队主页 ### CTFd 集成 - 从 `/api/v1/challenges` 实时加载挑战 - 从 `/api/v1/challenges/:id` 获取挑战详情 - 通过 `/api/v1/challenges/attempt` 提交 Flag - 使用兼容 CTFd 的 web/API 端点进行团队管理 - 支持用户、团队、奖项和解题历史 - 基于 CTFd 通知 API 的通知系统 ### 通知 - 通过 React context 共享通知状态 - 铃铛面板和 Toast 通知 - 使用 `/api/v1/notifications?since_id=...` 进行基于 API 的通知同步 - 支持 CTFd 事件流的 SSE 监听器 - 通知面板中仅在悬停时显示的纤细化自定义滚动条 ### 可见性 / 暗时间支持 前端动态遵循 CTFd 的可见性配置。 - `challenge_visibility` - `account_visibility` - `score_visibility` - `registration_visibility` 这实现了 **暗时间** 行为: - 当 `score_visibility = hidden` 时,对非管理员用户隐藏记分板和解题相关数据 - 公开和个人解题视图遵循分数可见性设置 - 团队排名/分数显示也遵循分数可见性设置 ### CTFd-Whale 容器挑战 前端支持 **Whale / 动态容器挑战**。 - 从 CTFd 挑战元数据检测支持容器的挑战类型 - 检查当前容器状态 - 生成挑战容器 - 续期活跃容器 - 停止活跃容器 - 显示返回的访问信息(URL 或命令) ## 生产构建 ``` npm run build ``` ## Docker 包含一个 `Dockerfile`,用于一致的本地或 CI 构建。 ``` docker build -t ramadhan-ctfd-theme . docker run --rm -p 8080:80 ramadhan-ctfd-theme ``` ## 项目说明 - 该应用是一个 CTFd 主题,而不是一个独立的后端 - 生成的资产引用已同步到 `templates/base.html` 中 - 大部分数据是从 CTFd 实时加载的,而非硬编码 - 归档模式显示来自 JSON 文件的静态活动数据 ## 联系方式 该主题包含一个面向创建者的公开联系页面: - 路由:`/angel` - Discord ID:`angel.911` ## 仓库目标 为 CTFd 提供一个精美的 Ramadhan 主题前端,具备现代化的用户体验,同时保持与真实的 CTFd 行为、管理员可见性设置以及基于容器的挑战工作流兼容。
标签:CTFd, Docker, React, REST API, SSE, Syscall, Syscalls, Tailwind CSS, TypeScript, Vite, Web开发, 前端主题, 动态容器, 单页应用, 夺旗赛, 安全插件, 安全防御评估, 斋月, 网络安全, 自动化攻击, 计分板, 请求拦截, 隐私保护