# indiecn **Repository Path**: wangyidao/indiecn ## Basic Information - **Project Name**: indiecn - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-20 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中国独立开发者项目列表 · 静态镜像站 基于 [Astro](https://astro.build) 构建的静态站点,在**每次构建时**自动拉取 [1c7/chinese-independent-developer](https://github.com/1c7/chinese-independent-developer) 仓库的四个 Markdown 数据文件,解析成结构化数据后以「极光玻璃」风格展示。 本项目部署在 腾讯EdgeOne上,访问地址: [https://indiecn.wangxuan.me](https://indiecn.wangxuan.me) 包含四个板块: | 板块 | 路径 | 数据源 | |---|---|---| | 主版面 | `/` | `README.md` | | 程序员版面 | `/programmer/` | `.github/pages/README-Programmer-Edition.md` | | 游戏版面 | `/game/` | `.github/pages/README-Game.md` | | 存档版面(2018~2023) | `/archive/` | `.github/pages/README-Archive.md` | ## 特性 - **构建时拉取**:`predev` / `prebuild` 自动并发拉取 4 个文件,带 15s 超时、失败重试、`If-None-Match` 条件请求(命中 304 直接复用缓存)。 - **永不失败**:任何网络异常都会回退到本地 `.cache/` 或 `src/data/snapshot/` 快照。 - **高效解析**:单遍线性扫描 Markdown,不依赖任何 markdown 解析库。 - **绚丽界面**:暗色为默认,极光渐变背景 + 玻璃拟态卡片,按项目名哈希生成专属配色;客户端支持即时搜索、状态筛选、排序、分页。 - **纯静态**:可直接部署到任意静态托管(GitHub Pages / Vercel / Netlify / Cloudflare Pages /对象存储)。 ## 本地开发 ```bash npm install npm run dev # 自动拉取数据并启动开发服务器 ``` ## 构建与部署 ```bash npm run build # 自动拉取最新数据 → 输出到 dist/ npm run preview # 本地预览产物 ``` 构建产物 `dist/` 为纯静态文件,上传即可。 ### 拉取模式 | 命令 | 说明 | |---|---| | `npm run fetch` | 增量拉取(默认,带 ETag 缓存) | | `npm run fetch:force` | 忽略缓存强制刷新 | | `npm run fetch:offline` | 完全不联网,仅用缓存/快照 | | `SKIP_FETCH=1 npm run build` | 跳过联网(`--offline` 等价) | ## 技术栈 - Astro 5(静态输出) - TypeScript(数据层)+ 原生 CSS / 原生 JS(交互,无框架) - Node 18.17+(内置 `fetch`) ## 目录结构 ``` scripts/fetch-data.mjs # 抓取 + 缓存 + 快照兜底 src/lib/ # sources / parse / data 数据层 src/components/ # Header / Hero / Toolbar / Card / Grid / Footer src/pages/ # 四个板块页面 src/styles/global.css # 设计系统与极光视觉 src/data/snapshot/ # 兜底快照(提交入库) ```