基于 React、TypeScript 与 Vite 构建,样式使用 Tailwind CSS
PersonalCard — Vite 作品集模板
作者 alexanderskorokhodov
PersonalCard 是一个基于 React、TypeScript 与 Vite 的个人作品集模板,包含首页、项目、案例、关于页面及中英双语切换。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
包含首页、项目、案例、关于四类页面及 slug 驱动的详情页
内容集中在 src/content 下的 TypeScript 文件中,便于替换演示数据
支持 RU / EN 双语切换,数据可按语言分别配置
联系表单不经过后端,整理内容后跳转 Telegram 发送
关于页面提供由 project-locations.ts 配置的项目地理分布地图
模板详细介绍
PersonalCard 是一个面向开发者、自由职业者或小型团队的个人卡片式作品集模板,使用 React、TypeScript 与 Vite 构建,样式基于 Tailwind CSS。仓库提供 MIT 许可,可免费用于个人或商业项目。
模板内置首页、项目列表、案例列表、关于页面,以及由 slug 驱动的项目与案例详情页。内容集中在 src/content/portfolio.ts 与 src/content/site-data.ts 中管理,支持 RU / EN 双语切换。联系表单不经过后端,而是把填写内容整理成草稿并跳转到 Telegram 发送。关于页面还包含一张由 project-locations.ts 配置的项目地理分布地图。
使用前需要准备 Node.js 20+ 与 npm 或 pnpm,通过 npm install 安装依赖,npm run dev 启动本地开发,npm run build 生成生产构建。项目没有强制性的环境变量,部署方式与普通 Vite SPA 一致,README 以 Vercel 为例说明。
需要注意:联系表单依赖 Telegram,不会把数据发送到服务器;演示图片、字体、图标等第三方素材的许可需要单独核对,不能仅凭代码的 MIT 许可判断;域名、托管等外部服务可能产生费用。
适合你的项目吗?
适用场景
- 开发者、设计师或产品人员搭建个人作品集网站
- 自由职业者或小型团队制作展示项目与案例的卡片式页面
- 需要中英或俄英双语个人站点的场景
- 以 Telegram 作为主要联系渠道、不需要后端表单服务的个人站点
适合人群
- 希望用 React 与 TypeScript 快速搭建个人作品集的前端开发者
- 需要展示项目、案例与个人经历的自由职业者或顾问
- 接受以 Telegram 作为联系入口、不需要服务端表单处理的用户
- 需要 RU / EN 双语内容结构的个人站点
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node.js 20+ 以及 npm 或 pnpm,运行 npm install 后使用 npm run dev 启动本地开发
- 2
个人资料在 src/content/site-data.ts 中修改,项目与案例内容在 src/content/portfolio.ts 中修改
- 3
联系表单通过 src/content/site-data.ts 中的 telegramUsername 决定跳转目标,不经过服务端
- 4
项目地图点位在 src/content/project-locations.ts 中配置,不需要时可清空 projectLocations 数组
- 5
项目没有强制环境变量,构建命令为 npm run build,部署方式与普通 Vite SPA 相同
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 联系表单不经过后端服务器,仅在浏览器端整理内容后跳转 Telegram 发送,因此无法用于需要服务端接收或存储表单数据的场景。
- 联系表单依赖 Telegram:必须配置 telegramUsername 指向自己的 Telegram 账号,用户点击后跳转到 Telegram 发送消息,未使用 Telegram 的访客无法通过该表单联系。
- README 以 Vercel 为例说明部署,域名与托管等外部服务可能产生费用,需自行承担。
- 仓库内演示图片、图标、字体等第三方素材的许可需单独核对,不能仅凭代码的 MIT 许可判断其可商用性。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Форма на странице "Обо мне" не отправляет данные на сервер.
README 原文
Чтобы форма открывала ваш Telegram, измените `telegramUsername` в `src/content/site-data.ts`.
README 原文
Подключите его к Vercel.
README 原文
https://github.com/alexanderskorokhodov/PersonalCard/blob/main/LICENSEhttps://github.com/alexanderskorokhodov/PersonalCard/blob/main/README.mdдемо-контент на свой
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-02。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 88 / 100
- 技术栈
- Vite · React
- 网站类型
- 作品集 · 企业官网
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-04-27
- 截图检查日期
- 2026-10-02
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Vite。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: f9cf98064e53797bbb804db11be024fff4261677b84f0d925041ebccf452654f
2026-10-02T14:30:47.983Z
来源文件 / 仓库# Personal Card
Готовый шаблон персональной карточки-портфолио на `React + TypeScript + Vite`.
Подходит для:
- личного сайта специалиста;
- карточки фрилансера или агентства;
- портфолио разработчика, дизайнера, продакт-специалиста;
- лендинга с проектами, кейсами, контактами и картой опыта.
Сайт уже поддерживает:
- главную страницу;
- страницу проектов;
- страницу кейсов;
- страницу "Обо мне";
- детальные страницы проектов и кейсов;
- переключение `RU / EN`;
- форму связи через Telegram;
- карту с географией проектов.
## Скриншоты
Ниже быстрый визуальный обзор того, как выглядит сайт:
### Desktop

### Mobile

Полный набор скриншотов:
- [Главная, desktop](docs/screenshots/home-preview.png)
- [Проекты, desktop](docs/screenshots/projects-preview.png)
- [Кейсы, desktop](docs/screenshots/cases-preview.png)
- [Обо мне, desktop](docs/screenshots/about-preview.png)
- [Главная, mobile](docs/screenshots/home-mobile-preview.png)
- [Обо мне, mobile](docs/screenshots/about-mobile-preview.png)
## Быстрый старт
Требования:
- `Node.js 20+`
- `npm` или `pnpm`
Запуск локально:
```bash
npm install
npm run dev
```
Сборка production-версии:
```bash
npm run build
```
Предпросмотр production-сборки:
```bash
npm run preview
```
После запуска откройте адрес из терминала, обычно это `http://localhost:5173`.
## Что менять в первую очередь
Если вы хотите быстро заменить весь текущий профиль на свой, начните с этих файлов:
| Что меняется | Где менять |
| --- | --- |
| Имя, роль, аватар, email, Telegram username, ссылки на соцсети, подпись в футере | `src/content/site-data.ts` |
| Тексты главной, страницы проектов, кейсов, блока "Обо мне", карточек, формулировки CTA | `src/content/portfolio.ts` |
| Точки на карте проектов | `src/content/project-locations.ts` |
| Фото профиля | `public/square.jpeg` |
| Изображения проектов и кейсов | `public/projects/*` и `src/assets/hero.png` |
| Иконки соцсетей | `public/icons/social/*` |
## Настройка профиля
Основные личные данные находятся в `src/content/site-data.ts`.
Ищите объект `profile` для двух языков: `en` и `ru`.
Что там важно:
- `name` — имя на странице и в title вкладки.
- `role` — короткое описание под именем.
- `avatar` — путь к фото профиля.
- `email` — email в футере.
- `telegramUsername` — username для формы связи. Можно указывать с `@` или без.
- `footerLabel` и `footerNote` — нижняя строка сайта.
Соцсети лежат там же, в `aboutLinksByLocale`.
Пример:
```ts
profile: {
name: 'Ivan Petrov',
role: 'Frontend developer. Product websites and interfaces.',
avatar: '/square.jpeg',
email: '[email protected]',
telegramUsername: 'ivanpetrov',
footerLabel: 'Ivan Petrov © 2026',
footerNote: 'Open to freelance and product work.',
}
```
## Где лежит весь контент
Главный контент сайта собран в `src/content/portfolio.ts`.
Там находятся:
- тексты главной страницы;
- карточки проектов;
- карточки кейсов;
- фильтры кейсов;
- тексты страницы "Обо мне";
- workflow, домены, достижения;
- детальные страницы каждого проекта и кейса.
Это главный файл, если вы хотите заменить демо-контент на свой.
## Как заменить проекты
Для витрины проектов используйте массив `projects` в `src/content/portfolio.ts`.
У каждого проекта есть:
- `slug` — адрес страницы;
- `title` и `description` — название и описание;
- `category`, `status`, `location`;
- `ctaLabel`;
- `media` — обложка.
Чтобы проект открывался на отдельной странице, добавьте для него объект в `detailDefinitions` с `kind: 'project'`.
Минимальный порядок действий:
1. Добавьте картинку в `public/projects/`.
2. Обновите или создайте карточку в `projects`.
3. Добавьте детальную страницу в `detailDefinitions`.
4. Если проект должен быть на карте, добавьте точку в `src/content/project-locations.ts`.
## Как заменить кейсы
Для кейсов используются массивы:
- `cases` — карточки на странице кейсов;
- `selectedCaseSlugs` — кейсы, которые показываются на главной;
- `detailDefinitions` с `kind: 'case'` — полное описание кейса.
Чтобы заменить текущие примеры на свои:
1. Обновите карточку в `cases`.
2. Добавьте подробный разбор в `detailDefinitions`.
3. При необходимости включите кейс в `selectedCaseSlugs`.
4. Добавьте медиа в `public/projects/`.
## Карта проектов
Карта на странице "Обо мне" настраивается в `src/content/project-locations.ts`.
Для каждой точки можно задать:
- название;
- город;
- страну;
- год;
- тип задачи;
- ссылку;
- координаты.
Если карта не нужна, можно просто очистить массив `projectLocations`.
## Изображения и медиа
Что куда класть:
- `public/square.jpeg` — фото профиля;
- `public/projects/` — изображения для проектов и кейсов;
- `src/assets/hero.png` — запасное или общее hero-изображение;
- `public/icons/social/` — SVG-иконки соцсетей.
После добавления нового файла просто укажите путь к нему в контенте, например:
```ts
src: '/projects/my-project-cover.jpg'
```
## Два языка: RU и EN
Сайт работает на русском и английском. Во многих местах данные задаются сразу в двух версиях:
```ts
localized('English text', 'Русский текст')
```
или двумя объектами:
```ts
en: { ... }
ru: { ... }
```
Если второй язык вам пока не нужен, можно временно продублировать один и тот же текст в обе версии.
## Форма связи
Форма на странице "Обо мне" не отправляет данные на сервер.
Она:
1. собирает сообщение;
2. подставляет имя, контакт, контекст и сроки;
3. открывает Telegram с готовым черновиком сообщения.
Чтобы форма открывала ваш Telegram, измените `telegramUsername` в `src/content/site-data.ts`.
## Структура страниц
Основные маршруты сайта:
- `/` — главная;
- `/projects` — проекты;
- `/experience` — кейсы;
- `/about` — обо мне.
Детальные страницы открываются автоматически по `slug`.
Примеры:
- `/projects/jewelry-saas`
- `/experience/fitment`
## Публикация
Проект готов к деплою как обычный Vite SPA.
Самый простой вариант:
1. Соберите проект командой `npm run build`.
2. Залейте репозиторий на GitHub.
3. Подключите его к Vercel.
Также можно использовать локально установленный CLI:
```bash
npx vercel
```
## Чеклист перед публикацией
- Заменено имя, роль и фото профиля.
- Обновлены соцсети и `telegramUsername`.
- Удалены или переписаны все демо-проекты и кейсы.
- Проверены тексты на `RU` и `EN`.
- Обновлена карта проектов.
- Выполнена команда `npm run build`.
## Полезно знать
- В проекте нет обязательных `.env`-переменных.
- Если `email` пустой, в футере показывается `footerNote`.
- Title страниц теперь берется из имени профиля, поэтому достаточно сменить `profile.name`.
## Лицензия
Используйте как основу для своей персональной карточки и адаптируйте под свой стиль, стек и контент.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

business-website-template
Modern UI/UX business website design made with React.
Vite · 企业官网

kiaalap
Free admin dashboard template focused on education, online course and school management. Build using Bootstrap…
Vite · 后台

saasboard
Free and open-source SaaS dashboard template for startups, businesses, and AI Tools. | Built with Meku, React,…
Vite · 后台

vite-react-ts-shadcn-ui
Boilerplate template designed to quickly bootstrap a React.js Web App, SPA, website or landing page with React…
Vite · 企业官网

vite-vanilla-ts
Start a Vanilla TS Web App, SPA, website or landing page using TypeScript, Tailwind CSS 4, ESLint, Husky, Vite…
Vite · 企业官网

Resumify
Free, privacy-first resume builder — 6 ATS-friendly templates, full customization, JSON import/export. No sign…
Vite · 作品集
