ViteReact作品集企业官网

PersonalCard — Vite 作品集模板

作者 alexanderskorokhodov

PersonalCard 是一个基于 React、TypeScript 与 Vite 的个人作品集模板,包含首页、项目、案例、关于页面及中英双语切换。

看看你的网站会是什么样

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

1 个预览视图
作者提供的预览
作者提供的预览首屏预览

来自项目 README 的原始预览。

目前有 1 张原始预览,可打开完整图片查看设计细节。

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

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

值得关注的模板亮点

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

01

基于 React、TypeScript 与 Vite 构建,样式使用 Tailwind CSS

02

包含首页、项目、案例、关于四类页面及 slug 驱动的详情页

03

内容集中在 src/content 下的 TypeScript 文件中,便于替换演示数据

04

支持 RU / EN 双语切换,数据可按语言分别配置

05

联系表单不经过后端,整理内容后跳转 Telegram 发送

06

关于页面提供由 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 许可判断;域名、托管等外部服务可能产生费用。

ViteReact作品集企业官网

适合你的项目吗?

适用场景

  • 开发者、设计师或产品人员搭建个人作品集网站
  • 自由职业者或小型团队制作展示项目与案例的卡片式页面
  • 需要中英或俄英双语个人站点的场景
  • 以 Telegram 作为主要联系渠道、不需要后端表单服务的个人站点

适合人群

  • 希望用 React 与 TypeScript 快速搭建个人作品集的前端开发者
  • 需要展示项目、案例与个人经历的自由职业者或顾问
  • 接受以 Telegram 作为联系入口、不需要服务端表单处理的用户
  • 需要 RU / EN 双语内容结构的个人站点

上手与定制指南

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

  1. 1

    需要 Node.js 20+ 以及 npm 或 pnpm,运行 npm install 后使用 npm run dev 启动本地开发

  2. 2

    个人资料在 src/content/site-data.ts 中修改,项目与案例内容在 src/content/portfolio.ts 中修改

  3. 3

    联系表单通过 src/content/site-data.ts 中的 telegramUsername 决定跳转目标,不经过服务端

  4. 4

    项目地图点位在 src/content/project-locations.ts 中配置,不需要时可清空 projectLocations 数组

  5. 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 原文

демо-контент на свой

README 原文
https://github.com/alexanderskorokhodov/PersonalCard/blob/main/LICENSEhttps://github.com/alexanderskorokhodov/PersonalCard/blob/main/README.md

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

![Главная страница](docs/screenshots/home-preview.png)

### Mobile

![Главная страница на мобильном](docs/screenshots/home-mobile-preview.png)

Полный набор скриншотов:

- [Главная, 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`.

## Лицензия

Используйте как основу для своей персональной карточки и адаптируйте под свой стиль, стек и контент.
反馈内容错误

看看同类模板

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