amokrzycki/kajtek
GitHub: amokrzycki/kajtek
一款复古风格超轻量级网络收音机播放器,灵感来自波兰经典磁带播放器,提供电台流播放、收藏管理及睡眠定时等功能。
Stars: 0 | Forks: 0
# KAJTEK 收音机
一款超轻量级复古风格网络收音机播放器,灵感来自标志性的波兰 PRL 磁带播放器(Unitra PS-101 / KAJTEK)。
## 功能
1. **网络电台流媒体** - 播放实时音频流,支持实时电台管理。
2. **深色/浅色主题** - 持久化保存在 `localStorage` 中的复古风格主题切换。
3. **收藏电台** - 使用 ★ 收藏您喜爱的电台,并在本地保存。
4. **睡眠定时器** - 在 15、30、60 或 90 分钟后自动关闭音频。
5. **VU 表和磁带卷轴** - 播放期间平滑的磁带卷轴动画和交互式 VU 表。
## 项目结构
- `src/` - 模块化 TypeScript 应用源代码:
- `app.ts` - 应用程序入口点。
- `controls.ts` - 音频控制事件处理和键盘快捷键。
- `data.ts` - 默认电台预设和数据结构。
- `icons.ts` - SVG 图标组件定义。
- `player.ts` - 音频播放管理。
- `providers.ts` - 外部电台提供商集成。
- `state.ts` - 本地状态管理和 localStorage 持久化。
- `ui.ts` - DOM 渲染和 UI 更新。
- `visualizer.ts` - VU 表和音频可视化动画引擎。
- `index.html` - 核心 HTML5 布局和结构。
- `style.css` - 复古设计系统(CSS 变量、深色/浅色模式、动画)。
- `dist/` - 生产构建目录(生成的资产)。
- `tsconfig.json` - 严格的 TypeScript 配置。
- `biome.json` - 代码格式化和 linting 配置。
- `.github/workflows/` - 自动化的 GitHub Actions 工作流:
- `ci.yml` - 在 push 和 PR 上进行 Linting(使用 Biome)和类型检查(`tsc`)。
- `deploy.yml` - 在发布标签(`v*`)上通过 rsync 自动构建和部署。
## 开发与构建
### 安装
安装项目依赖:
```
npm install
```
### 构建
构建生产包(使用 esbuild 将 `src/app.ts` 编译为 `dist/app.js` 并复制静态资产):
```
npm run build
```
### 类型检查与 Linting
运行 TypeScript 类型检查:
```
npx tsc --noEmit
```
使用 Biome 检查和格式化代码:
```
npx @biomejs/biome check ./
```
## CI / CD 流水线
- **CI 工作流(`ci.yml`)**:在向 `main` 分支执行 `push` 和 `pull_request` 时执行。使用 Biome(`npx @biomejs/biome ci ./`)验证代码风格,并执行类型安全检查(`npx tsc --noEmit`)。
- **部署工作流(`deploy.yml`)**:在推送匹配 `v*` 的版本标签时执行。构建应用程序(`npm run build`),并通过 SSH/rsync 将 `dist/` 的内容部署到主机。
## 快速开始
要在本地运行该项目,请构建分发文件并运行指向 `dist/` 的本地 HTTP 服务器:
```
npm run build
python3 -m http.server 8080 --directory dist
```
然后在您的 Web 浏览器中打开 `http://localhost:8080`。
标签:TypeScript, Web前端, 动画可视化, 复古UI设计, 安全插件, 网络收音机, 自动化攻击, 音频播放