radamic/radamic.github.io
GitHub: radamic/radamic.github.io
攻击性安全机构 radamic 的静态官方网站,基于 Astro 6 构建,以零 JavaScript、零追踪器为品牌核心隐私姿态。
Stars: 0 | Forks: 0
# radamic.com
[](https://github.com/radamic/radamic.github.io/actions/workflows/deploy.yml)
[](https://radamic.com)
[](https://astro.build)
**radamic** 的公开营销网站 —— 一家提供红队行动、对手模拟、漏洞利用开发以及安全研究的攻击性安全机构。
该网站是一个静态渲染的单页落地页。根据设计,它**不含任何客户端 JavaScript、追踪器或分析工具**;这种姿态是品牌定位中刻意的组成部分,在任何更改中都必须予以保留(参见 [安全与隐私姿态](#security--privacy-posture))。
- **生产环境:**
- **托管:** GitHub Pages (静态)
- **所有者:** radamic - `contact@radamic.com`
- **构建与维护者:** prodrom3
- **状态:** 生产环境
## 目录
- [技术栈](#tech-stack)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [可用脚本](#available-scripts)
- [项目结构](#project-structure)
- [编辑内容](#editing-content)
- [构建与部署](#build--deployment)
- [安全与隐私姿态](#security--privacy-posture)
- [编码规范](#coding-conventions)
- [质量门禁](#quality-gates)
- [浏览器支持](#browser-support)
- [贡献](#contributing)
- [许可证](#license)
## 技术栈
| 关注点 | 选择 |
| ------------- | --------------------------------------------------- |
| 框架 | [Astro 6](https://astro.build) (静态输出) |
| 样式 | 通过 Vite 的 [Tailwind CSS v4](https://tailwindcss.com) |
| 语言 | TypeScript (严格模式), Astro 组件 |
| 字体 | JetBrains Mono |
| 托管 / CI | GitHub Pages + GitHub Actions |
| 运行时 (开发环境) | Node.js `>= 22.12.0` |
## 前置条件
- **Node.js `>= 22.12.0`**(参见 `package.json` 中的 `engines`)。使用版本管理器(如 `nvm`、`fnm` 或 `mise`)来固定版本。
- **npm**(随 Node 附带)。该仓库提交了 `package-lock.json`;使用 `npm ci` 进行可重复的安装。
## 快速开始
```
git clone git@github.com:radamic/radamic.github.io.git
cd radamic.github.io
npm ci # reproducible install from the lockfile
npm run dev # http://localhost:4321
```
## 可用脚本
| 脚本 | 描述 |
| ----------------- | ------------------------------------------------- |
| `npm run dev` | 在 `localhost:4321` 启动开发服务器 |
| `npm run build` | 进行类型检查并将静态站点构建到 `./dist` 目录 |
| `npm run preview` | 在本地预览生产构建 |
| `npm run astro` | 直接运行 Astro CLI |
## 项目结构
```
.github/workflows/deploy.yml CI: build + deploy to GitHub Pages on push to main
astro.config.mjs site URL, sitemap + Tailwind (Vite) plugin
public/ copied verbatim to the site root
CNAME custom-domain pin (radamic.com)
robots.txt, og.png SEO + social share assets
.well-known/security.txt RFC 9116 security contact
favicon.svg, favicon.ico
src/
layouts/Layout.astro page shell: head, meta/OG tags, JSON-LD, fonts
components/ hero, about, capabilities, work, trust, contact, header, footer
pages/index.astro single-page composition
styles/global.css Tailwind v4 entry + theme tokens
tsconfig.json extends astro/tsconfigs/strict
```
## 编辑内容
该页面由 `src/components/` 中的各个部分组件组成,并在 `src/pages/index.astro` 中进行组装。大部分文案位于渲染该组件的文件中:
- **Hero 标题 / 定位** - `src/components/Hero.astro`
- **关于 / 公司事实** - `src/components/About.astro`
- **能力** - `src/components/Capabilities.astro` 顶部的 `capabilities` 数组
- **精选工作** - `src/components/Work.astro` 顶部的 `work` 数组
- **联系详情 / PGP / 范围** - `src/components/Contact.astro`
- **全局 `` 和 meta 描述** - `Layout.astro` 的 prop 默认值
主题颜色、字体和终端美学以 CSS 自定义属性的形式集中管理,位于 `src/styles/global.css`(`@theme` 块)中。请在此处修改 token,而不要在组件中硬编码颜色。
## 构建与部署
部署是自动化的。任何向 `main` 分支的推送都会触发
[`.github/workflows/deploy.yml`](.github/workflows/deploy.yml),该工作流会:
1. 检出仓库并使用 `npm ci` 安装 (Node 22)。
2. 运行 `npm run build` 生成 `./dist`。
3. 上传构建产物并将其发布到 GitHub Pages。
该工作流使用最小权限(`contents: read`、`pages: write`、`id-token: write`)以及 `concurrency` 来取消已被取代的运行。自定义域名通过 `public/CNAME` 固定;请勿删除该文件,否则域名映射将在下次部署时失效。
**回滚:** 回退 `main` 分支上的问题提交(或者通过 *Actions > deploy > Run workflow* 从已知良好的提交重新运行工作流)。没有单独的 staging 环境 —— 在合并前请使用 `npm run build && npm run preview` 在本地进行验证。
## 安全与隐私姿态
这是一家安全公司的公开网站;因此该仓库也受到相应的对待。
- **无第三方运行时脚本、追踪器或分析工具。** 必须保持这一点。任何引入标签管理器、分析信标或外部脚本的 PR 都应被拒绝,除非有经签字批准的合理理由。
- **仓库中无任何机密。** 这是一个静态营销网站 —— 绝不能包含凭证、内部工具、客户数据、服务记录或 API 密钥。CI 不需要任何这些内容。
- **无第三方运行时请求。** 网络字体通过 `@fontsource-variable/jetbrains-mono` 进行自托管;没有外部字体、脚本或 CDN。不要重新引入任何这些内容(这会泄露访客 IP 并违背无追踪的承诺)。
- **依赖项:** 保持最小攻击面。在升级依赖项时审查 `npm audit`;欢迎针对 Astro、Tailwind 和 Vite 的 Dependabot/renovate 更新。
- **披露:** 安全联系方式和政策发布在 `/.well-known/security.txt` (`security@radamic.com`;PGP 密钥位于 `/pgp.txt`)。
## 编码规范
- **组件是展示性和静态的。** 优先使用服务端渲染的 Astro,并且零客户端 JS。如果确实需要交互性,请说明理由,并确保它是渐进增强的。
- **使用 theme token 进行样式设计。** 引用在 `global.css` 中定义的 CSS 自定义属性,而不是在标记中使用字面十六进制值。
- **TypeScript 严格** 模式通过 `astro/tsconfigs/strict` 启用;保持构建的类型整洁。
- **无障碍性是一项必要门禁,而不是可有可无的修饰** —— 语义化的 landmark、聚焦状态以及 WCAG AA 对比度(参见 [质量门禁](#quality-gates))。
## 质量门禁
在合并到 `main` 之前,更改应:
- 干净地构建:`npm run build`(类型错误时会失败)。
- 在移动端和桌面端宽度下正确预览:`npm run preview`。
- 保持零 JS / 无追踪器的姿态。
- 维持 WCAG 2.1 AA 颜色对比度和键盘可操作性。
- 不能导致 Lighthouse 分数倒退(目标:静态页面上达到 100 / 100 / 100 / 100)。
## 浏览器支持
现代常青浏览器(Chrome、Edge、Firefox、Safari 的最新 2 个版本)以及移动端 Safari/Chrome。不支持 IE11。
## 贡献
内部贡献者:
1. 从 `main` 分支切出新分支(`feat/...`、`fix/...`、`content/...`)。
2. 进行更改;在本地运行 `npm run build`。
3. 打开一个 PR,提供简短描述以及针对视觉更改的前后对比上下文。
4. 合并到 `main` 会部署到生产环境 —— 请相应地进行审查。
## 许可证
本仓库中的站点**代码**根据
[`LICENSE.txt`](LICENSE.txt) (知识共享署名 3.0) 的条款提供。**radamic** 的名称、文字商标、品牌资产以及站点文案是专有的,**不**受该许可证的涵盖。
标签:Astro, GitHub Pages, MITM代理, Tailwind CSS, TypeScript, 企业官网, 安全插件, 暗色界面, 静态网站