React作品集

portfolio-website — React 作品集模板

作者 rugbedbugg

终端风格的 React + TypeScript 个人作品集,使用 Tailwind CSS 与 shadcn/ui,包含 ASCII 艺术首屏、档案面板、传输日志、世界地图追踪和 IEEE 论文展示等交互组件。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-02查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

终端风格视觉:绿色荧光配色、ASCII 艺术首屏、打字机文字与扫描线效果

02

交互组件:可折叠档案面板、带时间戳的传输日志、交互式世界地图

03

研究论文展示区,支持 IEEE 论文与 DOI 链接

04

Three.js 环境背景与音频可视化,配合 postprocessing 实现泛光与噪点效果

05

基于 shadcn/ui 与 Tailwind CSS 的组件体系,包含 40 多个 UI 基础组件

06

使用 Vitest 与 Testing Library 进行组件与工具函数测试

模板详细介绍

这是一个终端主题的个人作品集网站,采用 React、TypeScript 与 Vite 构建,样式基于 Tailwind CSS 和 shadcn/ui,动画使用 Framer Motion,环境背景效果由 Three.js 与 postprocessing 实现。页面为纯客户端渲染的单页应用,使用 React Router 管理路由,无 SSR。

视觉上采用绿色荧光配色、打字机文字、ASCII 艺术和扫描线效果,仅提供深色模式。主要交互组件包括:可折叠的档案面板(展示技能、链接与联系方式)、带时间戳的传输日志(活动流)、交互式世界地图(Canvas/SVG 绘制)、以及带 DOI 链接的 IEEE 论文展示区。另有“Now Playing”音频可视化模块,依赖 Three.js 与 postprocessing。

项目结构清晰,src/components 下包含 40 多个 shadcn/ui 基础组件和若干功能组件,src/hooks 与 src/lib 分别存放自定义 Hook 和工具逻辑,src/pages 包含主页与 404 页面。测试使用 Vitest 与 Testing Library,运行在 jsdom 环境。构建产物输出到 dist/,可部署到 Cloudflare Pages;public/_headers 与 public/_redirects 会在构建时复制到 dist/,在 Cloudflare 上原生生效。字体 DepartureMono 自托管于 public/fonts/,音频与项目缩略图分别放在 public/assets/ 和 public/dispatches/。

限制方面:项目为纯 SPA,所有渲染在客户端完成,不包含服务端渲染;仅支持深色模式,这是有意的设计选择;演示图片、字体、图标等第三方素材的许可需单独核对,代码本身采用 MIT 许可。

React作品集

适合你的项目吗?

适用场景

  • 搭建个人开发者作品集网站,展示项目、技能与联系方式
  • 需要终端或复古科技风格界面的个人主页
  • 展示学术论文与 DOI 链接的研究人员个人页面
  • 作为 React + TypeScript + Tailwind CSS 项目结构的学习参考

适合人群

  • 熟悉 React 与 TypeScript 的前端开发者
  • 希望快速搭建终端风格个人作品集的开发者
  • 需要展示论文与项目活动流的个人用户
  • 计划部署到 Cloudflare Pages 的静态站点项目

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js 18 及以上版本,npm 9 及以上(或 pnpm/yarn)

  2. 2

    执行 npm install 安装依赖,npm run dev 启动开发服务器(默认 http://localhost:5173)

  3. 3

    npm run build 生成生产构建到 dist/,npm run preview 本地预览

  4. 4

    npm run lint 运行 ESLint,npm run test 运行 Vitest 测试

  5. 5

    部署到 Cloudflare Pages 时,public/_headers 与 public/_redirects 会随构建复制到 dist/ 并生效

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-02。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 87 / 100
技术栈
React
网站类型
作品集
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-08-25
截图检查日期
2026-10-02

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 React。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: c7d1fbdcda3db48f8e5ee7366901bf2a2a3e4eaa10990ea80db9456049e3d864

2026-10-02T22:03:32.781Z

来源文件 / 仓库
# Portfolio Website

![GitHub last commit](https://img.shields.io/github/last-commit/rugbedbugg/portfolio-website?style=for-the-badge&labelColor=000000)
![GitHub repo size](https://img.shields.io/github/repo-size/rugbedbugg/portfolio-website?style=for-the-badge&labelColor=000000)
![Stars](https://img.shields.io/github/stars/rugbedbugg/portfolio-website?style=for-the-badge&labelColor=000000)

Personal portfolio site - terminal-themed, React + TypeScript + Vite. Features an ASCII-art hero, animated background, dossier panel, transmission log, and research publications section. Built with shadcn/ui, Tailwind CSS, Framer Motion, and Three.js for ambient effects.

## Status

**Active**

## Features

| Feature | Description |
|---------|-------------|
| Terminal aesthetic | Green-phosphor palette, typewriter text, ASCII art, scanline effects |
| Interactive components | Dossier panel (profile), Transmission log (activity feed), Global trace (world map) |
| Research publications | IEEE paper showcase with DOI links |
| Now Playing | Audio visualization with Three.js/postprocessing |
| Responsive | Mobile-first, handles narrow viewports gracefully |
| Dark mode only | Intentional design choice |

## Tech Stack

| Component | Version | Purpose |
|-----------|---------|---------|
| React | 18 | UI framework |
| TypeScript | 5.8 | Strict mode |
| Vite | 5 | Fast dev server, optimized builds |
| Tailwind CSS | 3.4 | Utility-first styling |
| shadcn/ui | Radix UI primitives | Component library |
| Framer Motion | 12 | Animations, transitions |
| Three.js | 0.183 + postprocessing | WebGL ambient background |
| React Router | 6 | Client-side routing |
| TanStack Query | 5 | Server state (if needed) |
| Zod | 3 | Schema validation |
| Vitest | 3 + Testing Library | Unit/component tests |
| ESLint | 9 + TypeScript ESLint | Linting |

## Architecture

### Project Structure

```
portfolio-website/
├── public/                 # Static assets (served at root)
│   ├── assets/             # Audio files (mp3)
│   ├── dispatches/         # Project thumbnails (png)
│   ├── fonts/              # DepartureMono woff2
│   ├── _headers            # Cloudflare headers (security, caching)
│   ├── _redirects          # Cloudflare redirects
│   └── robots.txt
├── src/
│   ├── components/
│   │   ├── demos/          # Demo-specific components
│   │   ├── ui/             # shadcn/ui components (40+)
│   │   ├── AmbientBackground.tsx  # Three.js animated backdrop
│   │   ├── AsciiArt.tsx            # Hero ASCII art
│   │   ├── DossierPanel.tsx        # Profile sidebar
│   │   ├── GlobalTrace.tsx         # World map visualization
│   │   ├── Terminal.tsx            # Terminal-style container
│   │   ├── Transmission.tsx        # Activity feed log
│   │   └── TypewriterText.tsx      # Character-by-character typing
│   ├── hooks/
│   │   ├── use-mobile.tsx          # Mobile breakpoint hook
│   │   ├── use-subject-layout.tsx  # Layout coordination
│   │   └── use-toast.ts            # Toast notifications
│   ├── lib/
│   │   ├── relays.ts               # Event relay system
│   │   ├── trace.ts                # Trace logging
│   │   ├── useRelay.ts             # Relay hook
│   │   ├── utils.ts                # ClassName merge, etc.
│   │   ├── viewer.ts               # Media viewer logic
│   │   └── worldMap.ts             # Map data + rendering
│   ├── pages/
│   │   ├── Index.tsx               # Main portfolio page
│   │   └── NotFound.tsx            # 404 page
│   ├── test/                       # Vitest setup + example tests
│   ├── App.tsx                     # Root component
│   ├── main.tsx                    # Entry point
│   └── index.css                   # Tailwind imports + globals
├── scripts/
│   └── gen-worldmap.mjs            # Generates world map data
├── index.html
├── package.json
├── vite.config.ts
├── tailwind.config.ts
├── tsconfig.json / .app.json / .node.json
├── eslint.config.js
├── postcss.config.js
├── vitest.config.ts
└── README.md
```

### Key Components

| Component | Purpose |
|-----------|---------|
| `AmbientBackground` | Three.js scene with postprocessing (bloom, noise) |
| `AsciiArt` | Hero banner: "OXIDE 1-6" in green phosphor |
| `DossierPanel` | Collapsible profile: skills, links, contact |
| `Transmission` | Timestamped log entries (GitHub, research, etc.) |
| `GlobalTrace` | Interactive world map (Canvas/SVG) |
| `Terminal` | Styled container with scanlines, cursor blink |
| `TypewriterText` | Configurable typing animation |

## Install / Run

### Prerequisites

| Requirement | Details |
|-------------|---------|
| Node.js | ≥ 18 (LTS recommended) |
| npm | ≥ 9 (or pnpm/yarn) |

### Development

```bash
npm install
npm run dev
# Opens http://localhost:5173
```

### Build

| Script | Command | Description |
|--------|---------|-------------|
| `build` | `vite build` | Production build → dist/ |
| `build:dev` | `vite build --mode development` | Dev-mode build |
| `preview` | `vite preview` | Preview production build locally |

### Lint & Test

| Script | Command | Description |
|--------|---------|-------------|
| `lint` | `eslint .` | Lint all source |
| `test` | `vitest run` | Run tests once (headless) |
| `test:watch` | `vitest` | Watch mode |

### Development Server

| Script | Command | Description |
|--------|---------|-------------|
| `dev` | `vite` | Start dev server |

## Deployment

Deployed on **Cloudflare Pages** (`partha-pg.pages.dev`). The `public/_headers` and `public/_redirects` files are copied to `dist/` on build and work natively on Cloudflare.

```bash
npm run build
# Deploy dist/ to Cloudflare Pages (connect repo in dashboard, or use Wrangler)
```

Headers include: `X-Frame-Options: DENY`, `X-Content-Type-Options: nosniff`, `Referrer-Policy: strict-origin-when-cross-origin`, CSP-ready.

> `wrangler pages deploy dist/` also works for CLI deployments.

## Configuration

### Tailwind (`tailwind.config.ts`)

| Setting | Value |
|---------|-------|
| Custom colors | `phosphor` palette (green terminal theme) |
| Font | `DepartureMono` (woff2, self-hosted) |
| Animations | `scanline`, `typewriter`, `pulse-glow` |

### TypeScript

| Config | Purpose |
|--------|---------|
| `tsconfig.json` | Base config |
| `tsconfig.app.json` | App code (strict) |
| `tsconfig.node.json` | Vite/config files |

### ESLint (`eslint.config.js`)

| Plugin | Purpose |
|--------|---------|
| TypeScript ESLint | Recommended rules |
| React Hooks | Hooks linting |
| Import sorting | Optional |

## Project Structure (Simplified)

```
src/
├── components/          # React components
│   ├── ui/              # 40+ shadcn/ui primitives
│   └── *.tsx            # Feature components
├── hooks/               # Custom React hooks
├── lib/                 # Utilities, shared logic
├── pages/               # Route pages
├── test/                # Test setup
├── App.tsx              # Root
├── main.tsx             # Entry
└── index.css            # Tailwind + globals
```

## Testing

```bash
npm run test
```

Covers: component rendering (Testing Library), utility functions, hook behavior. Uses `jsdom` environment.

## Notes / Gotchas

| Note | Details |
|------|---------|
| Font | `DepartureMono-Regular.woff2` self-hosted in `public/fonts/` - no external font requests |
| Audio | MP3 files in `public/assets/` - loaded on demand for "Now Playing" |
| Images | Project thumbnails in `public/dispatches/` - referenced by name |
| Headers/Redirects | `_headers` and `_redirects` auto-copied to `dist/` on build |
| Rendering | No SSR - pure SPA, all rendering client-side |

## License

MIT, see [LICENSE](LICENSE).

## Links

- **Repo:** https://github.com/rugbedbugg/portfolio-website
- **Live:** https://partha-pg.pages.dev
- **Issues:** https://github.com/rugbedbugg/portfolio-website/issues
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。