arunjitk/Resume-OpenCode

GitHub: arunjitk/Resume-OpenCode

一位高级安全分析师的赛博朋克风格3D交互式作品集网站,集成了矩阵特效、Three.js 3D场景、Telegram实时聊天和简历下载线索捕获功能。

Stars: 0 | Forks: 0

# ARUNJIT.K — 赛博朋克安全作品集 这是为 Arunjit K(拥有 8 年以上威胁狩猎、事件响应和云安全经验的高级安全分析师)打造的单页 3D 交互式作品集网站。 ![赛博朋克作品集](https://img.shields.io/badge/design-cyberpunkMatrix-green) ![Three.js](https://img.shields.io/badge/3D-Three.js-blue) ![Express.js](https://img.shields.io/badge/backend-Express-orange) ## 预览 ![作品集预览](https://via.placeholder.com/800x450/0A0A0A/00FF41?text=ARUNJIT.K+PORTFOLIO) ## 功能 ### 视觉效果 - **矩阵代码雨** — 动态下落的代码雨背景(基于 Canvas) - **CRT 扫描线** — 营造复古显示器感觉的微妙水平扫描线叠加层 - **故障动画** — 标题和悬停状态下的 CSS 驱动故障效果 - **自定义光标** — 带有 GPU 加速拖尾效果的发光光标 - **晕影与网格** — 增强深度感的晕影和透视网格图层 ### 3D 元素(Three.js - 懒加载) - **主视觉地球** — 主视觉区域中旋转的线框地球 - **技能球体** — 交互式 3D 技能可视化(降级备用为六边形网格) ### 交互功能 - **终端彩蛋** — 按 `` ` `` 打开秘密终端 - **Konami Code** — 输入 ↑↑↓↓←→←→BA 获取惊喜 - **滚动显示** — 各区域在滚动时以动画形式出现 - **可过滤技能** — 按类别(核心、SIEM、云等)过滤技能 ### 后端 / 实时功能 - **联系表单** — 通过 Email (Resend) + Telegram 发送通知 - **下载线索捕获** — 收集访客信息以供简历下载 - **Hub 访问追踪** — 针对受限内容访问的 IP 地理位置追踪 - **实时聊天** — 集成 Telegram 的实时聊天功能 ### 页面区域(共 12 个) 1. **主视觉/开机** — ASCII 艺术、开机序列动画、3D 地球 2. **档案** — 以机密文件风格展示的个人简介 3. **工作经验** — 4 项任务卡片式时间轴(Smarsh、Trellix、OLA、SISA) 4. **技能矩阵** — 可过滤的六边形网格 + 3D 球体 5. **武器库** — 安全工具和平台网格 6. **项目** — 关联 GitHub 的项目卡片(ThreatScope、ThreatTrace、ChittyApp、FundLens) 7. **教育背景** — 终端风格的教育记录 8. **专业认证** — 带有全息徽章效果的卡片(13 项认证) 9. **奖项** — 带有引用说明的滑入式奖项横幅 10. **语言能力** — 英语、马拉雅拉姆语、印地语、泰米尔语、泰卢固语的进度条 11. **兴趣爱好** — 离线活动(摄影、游戏) 12. **实地记录** — 摄影画廊(镜头记录) 13. **联系方式** — 终端风格的联系表单(带 mailto) ## 技术栈 ### 前端 - **HTML5** — 具有可访问性特性的语义化标记 - **CSS3** — 自定义属性(变量)、动画、响应式设计 - **JavaScript (ES6+)** — 原生 JS,无框架 - **Three.js** — 3D 地球和技能球体(懒加载) - **Google Fonts** — Share Tech Mono、Orbitron、IBM Plex Mono ### 后端 - **Express.js** — Node.js Web 服务器 - **Resend** — 邮件发送 API - **Telegram Bot API** — 通知与实时聊天 - **Vite** — 构建工具与开发服务器 ## 文件结构 ``` Resume-OpenCode/ ├── index.html # Main HTML file ├── server.js # Express server with all API routes ├── vite.config.js # Vite configuration ├── package.json # Dependencies ├── ecosystem.config.js # PM2 production config ├── vercel.json # Vercel deployment config ├── css/ │ ├── style.css # Main stylesheet │ └── sim.css # Attack simulation styles ├── js/ │ ├── rain.js # Matrix digital rain effect │ ├── animations.js # Scroll reveals, cursor, easter eggs, parallax │ ├── globe.js # 3D wireframe globe (Three.js) │ ├── skills-sphere.js # 3D skills sphere (Three.js) │ ├── gallery.js # Photography gallery │ ├── github-heatmap.js # GitHub contribution heatmap │ ├── attack-sim.js # Attack simulation functionality │ └── chat.js # Live chat client ├── api/ │ ├── contact.js # Contact form handler (also in server.js) │ └── download-lead.js # Resume download lead capture ├── dist/ # Built production files ├── ResumePDF/ # PDF resume └── README.md # This file ``` ## API 端点 | 方法 | 端点 | 描述 | |--------|----------|-------------| | POST | `/api/contact` | 联系表单 - 发送邮件 + Telegram | | POST | `/api/download-lead` | 简历下载的线索捕获 | | POST | `/api/hub-access` | 使用 IP 归属地追踪受限内容的访问 | | GET | `/api/chat/events` | 实时聊天的 SSE 流 | | POST | `/api/chat/message` | 向 Telegram 发送聊天消息 | | GET | `/api/telegram/set-webhook` | 配置 Telegram webhook | ## 本地运行 ### 开发环境 ``` cd /Users/n50/Documents/Code-Project/Resume-OpenCode npm install npm run dev ``` 在 http://localhost:5173 打开 ### 生产环境构建 ``` npm run build npm start ``` 在 http://localhost:3000 运行 Express 服务器 ### PM2 生产环境 ``` npx pm2 start ecosystem.config.js ``` ## 环境变量 创建一个 `.env` 文件: ``` PORT=3000 RESEND_API_KEY=re_xxx RESEND_FROM_EMAIL=your@email.com TELEGRAM_BOT_TOKEN=xxx TELEGRAM_CHAT_ID=xxx ``` ## 响应式断点 - **桌面端**:1200px+ - **平板端**:768px - 1199px - **移动端**:< 768px ## 无障碍访问 - `prefers-reduced-motion` 支持 — 为偏好减少动态效果的用户禁用动画 - 交互元素上的 ARIA 标签 - 键盘可导航(如有需要,可通过 CSS 隐藏自定义光标) ## 自定义 ### 颜色(在 `style.css` 中) ``` :root { --matrix-green: #00FF41; --cyber-cyan: #00F0FF; --neon-magenta: #FF00FF; --dark-bg: #0A0A0A; /* ... */ } ``` ### 内容 编辑 `index.html` 以更新: - 档案区域的个人资料信息 - 工作经验时间轴项目 - 技能六边形网格项目 - 项目详情和 GitHub 链接 - 联系信息 ## 已知问题 - **技能球体降级**:如果 Three.js 加载失败,将转而显示六边形网格 - **自定义光标**:在 body 上使用了 `cursor: none` — 可能需要针对触摸设备进行调整 ## 浏览器支持 - Chrome 80+ - Firefox 75+ - Safari 13+ - Edge 80+ ## 致谢 - **Three.js** — 用于 3D 地球和球体渲染 - **Google Fonts** — Share Tech Mono、Orbitron、IBM Plex Mono - **ASCII Art** — 为 "ARUNJIT.K" 标题生成
标签:3D交互, CRT复古效果, Express.js, IP地理位置, MITM代理, Telegram机器人集成, Three.js, Web3D, WebGL, 个人作品集, 单页应用, 安全专家简历, 安全分析师, 实时聊天, 彩蛋设计, 技能展示, 故障艺术, 数据可视化, 滚动动画, 矩阵代码雨, 简历下载, 网络安全, 自定义脚本, 访客追踪, 赛博朋克, 邮件通知, 隐私保护, 高级安全分析师