HTML作品集

github-portfolio-template — HTML 作品集模板

作者 iyanarmanda

一个基于 HTML、CSS 和 JavaScript 的开源 GitHub 作品集模板,通过本地 JSON 文件配置项目与个人信息,适合部署到 GitHub Pages 展示公开仓库。

看看你的网站会是什么样

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

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

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

全部页面与视图 2

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

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

值得关注的模板亮点

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

01

使用本地 JSON 文件作为数据源,无需编写代码即可填写作品集内容

02

提供测试脚本,可通过 npm、yarn 或 pnpm 运行以校验 JSON 数据

03

基于 HTML5、CSS 和 JavaScript,README 称其无第三方依赖

04

支持配置亮色与暗色主题色、站点标题和社交媒体链接

05

项目数据支持状态枚举、技术栈枚举、缩略图与模态框图片

06

推荐部署在 GitHub Pages 上

模板详细介绍

该模板用于搭建展示公开 GitHub 作品的作品集网站,README 说明其设计目标是呈现项目、仓库,以及 GitHub 个人主页上未正常显示的子仓库或组织内容。数据来源为本地 JSON 文件:./data/projects.json 存放项目列表,./data/config.json 存放 GitHub 用户名、站点标题、主题色、社交媒体等配置。模板使用 HTML5、CSS 和 JavaScript 构建,README 称其不依赖第三方库,并推荐部署到 GitHub Pages。README 同时标注项目仍在开发中,部分功能(如通过 API 端点读取 JSON、包管理器安装、子仓库与组织支持、邮箱联系功能)标注为 coming soon 或 under development。

HTML作品集

适合你的项目吗?

适用场景

  • 为个人 GitHub 公开仓库制作静态作品集页面
  • 集中展示多个项目及其技术栈、状态和演示链接
  • 在 GitHub Pages 上托管个人作品集
  • 通过 JSON 配置快速更新作品集内容,无需改动页面代码

适合人群

  • 希望展示公开 GitHub 项目的开发者
  • 偏好使用 JSON 配置而非编写前端代码的用户
  • 计划将作品集部署到 GitHub Pages 的用户
  • 需要展示项目技术栈、状态和图片的开发者

上手与定制指南

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

  1. 1

    克隆或下载仓库后即可使用,README 说明无需额外构建步骤

  2. 2

    编辑 ./data/config.json 填写 GitHub 用户名等配置

  3. 3

    编辑 ./data/projects.json 添加项目数据

  4. 4

    可选安装 Node.js 18 或以上版本,运行 npm run test、yarn test 或 pnpm test 校验 JSON

  5. 5

    图片建议使用 .webp 格式并放在 ./images 目录,未提供缩略图时使用默认回退图片

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

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

使用时需要遵守

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

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 该模板仅用于展示公开的 GitHub 作品,不适用于私密作品集。
  • 运行测试脚本需要本地安装 Node.js 作为 JavaScript 运行时环境。
  • 子仓库与组织支持为可选功能,README 标注为即将推出(coming soon)。
  • Node.js 为可选依赖,仅用于测试脚本,建议版本 18 或以上。
  • 通过 npm、yarn 或 pnpm 等包管理器安装的方式标注为即将推出(coming soon)。
  • 通过 API 端点从 GitHub 仓库根目录读取 JSON 的方式标注为即将推出(coming soon)。
  • useLocalJson 设为 false 以从 GitHub API 读取仓库数据的功能标注为即将推出(coming soon)。
  • 邮箱联系功能标注为仍在开发中(under development)。
  • 使用 API 时需将图片存放在与 JSON 相同的 ./portfolio 目录,该功能标注为即将推出(coming soon)。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

>Note: *This GitHub Portfolio is intended for showcasing public GitHub works only, not for private portfolios.*

README 原文

Run a testing script via your package manager to validate and check your JSON data. The script will display error, success, warning, or info messages depending on your input. *Need Node.js as JavaScript runtime environment to run JavaScript file locally*.

README 原文

4. **Support for sub-repos and organizations** (*coming soon*)

README 原文

`Node.js is` optional for use test script. Recommended version is 18 or above.

README 原文

2. **Package Manager** (*coming soon*)

README 原文

- By providing an API endpoint that returns JSON from your GitHub repository’s root directory `./github-portfolio/index.json` (*coming soon*).

README 原文

|useLocalJson|Set to true to read data from local JSON. Set false to read data from GitHub API repositories (*coming soon*)|Optional (Default: `true`)|Boolean|

README 原文

|email|Your contact email (*this feature is under development*)|Optional|string (email format)|

README 原文

- If using an API, store them in the same directory as the JSON in `./portfolio` (*coming soon*).

README 原文
https://github.com/iyanarmanda/github-portfolio-template/blob/main/LICENSEhttps://github.com/iyanarmanda/github-portfolio-template/blob/main/README.md

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

项目核对记录与介绍依据

模板资料

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

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

这个项目需要核对什么

记录的仓库更新时间
2026-04-16
截图检查日期
2026-10-13

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

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

查看具体选型方法 →

介绍的制作与核对状态

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

审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15

查看当时使用的来源资料

SHA-256: 53fccea2b76b19c18c72593df1b59cdb6b506a9383c10804fb61c92ee8e76e2b

2026-10-13T15:34:06.969Z

来源文件 / 仓库
<a id="readme-top"></a>

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![LinkedIn][linkedin-shield]][linkedin-url]

<h1 align="center">Github Portfolio API Template</h1>

<p align="center">
   <a href="https://iyanarmanda.github.io/github-portfolio-template">View Demo</a>
   &middot;
   <a href="https://github.com/iyanarmanda/github-portfolio-template/issues/new?labels=bug&template=bug-report---.md">Report Bug</a>
   &middot;
   <a href="https://github.com/iyanarmanda/github-portfolio-template/issues/new?labels=enhancement&template=feature-request---.md">Request Feature</a>
   <br/>
</p>

<h3 align="center">Powered by:</h3>
<p align="center">
   <img src="https://img.shields.io/badge/HTML5-E34F26?logo=html5&logoColor=white" alt="HTML5" />
   <img src="https://img.shields.io/badge/CSS-663399?logo=css&logoColor=white" alt="CSS" />
   <img src="https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black" alt="JavaScript" />
   <img src="https://img.shields.io/badge/GitHub-181717?logo=github&logoColor=white" alt="GitHub" />
   <br/>
</p>

<details>
  <summary>Table of Contents</summary>
  <ol>
    <li>
     <a href="#about-the-project">About The Project</a>
      <ul>
        <li><a href="#features">Features</a></li>
      </ul>
    </li>
    <li>
      <a href="#getting-started">Getting Started</a>
      <ul>
        <li><a href="#prerequisites">Prerequisites</a></li>
        <li><a href="#installation">Installation</a></li>
      </ul>
    </li>
    <li>
      <a href="#usage">Usage</a>
      <ul>
        <li>
          <a href="#fill-data">Fill Data</a>
          <ul>
            <li><a href="#config-structure">Config Structure</a></li>
            <li><a href="#project-structure">Project Structure</a></li>
            <li><a href="#repository-structure">Repository Structure</a></li>
          </ul>
        </li>
        <li><a href="#deployment">Deployment</a></li>
      </ul>
    </li>
    <li><a href="#license">License</a></li>
    <li><a href="#contact">Contact</a></li>
  </ol>
</details>

## About The Project

**This project is on development**

An open-source template for building a GitHub Portfolio website.
It’s designed to showcase your projects, repositories, and even sub-repos or organizations that don’t appear properly on your GitHub profile.

You can use it easily with a simple `JSON` file, no coding required!
Of course, you can still customize the UI/UX if you’d like.
This website is recommended to be deployed on **GitHub Pages**.

>Note: *This GitHub Portfolio is intended for showcasing public GitHub works only, not for private portfolios.*

<p align="right">(<a href="#readme-top">back to top</a>)</p>

### Features

1. **No coding required, just write in JSON**

   Use `JSON` files as your data source. Simple and easy to modify.

   </br>


3. **Intregated with testing script**
   
   Run a testing script via your package manager to validate and check your JSON data. The script will display error, success, warning, or info messages depending on your input. *Need Node.js as JavaScript runtime environment to run JavaScript file locally*.

   **npm**:
   ```bash
   npm run test
   ```

   **yarn**:
   ```bash
   yarn test
   ```

   **pnpm**:
   ```bash
   pnpm test
   ```
   
   </br>

4. **Support for sub-repos and organizations**  (*coming soon*)

   This optional feature allows you to display repositories from organizations or sub-repos.
   It can be enabled during installation or manually later.
   
   </br>
   
5. **Built with vanilla technologies**
   
   Lightweight, high-performance, and completely dependency-free. Perfect for deploying on GitHub Pages.

   </br>

<p align="right">(<a href="#readme-top">back to top</a>)</p>

---

## Getting Started

### Prerequisites

1. **Node.js**

   `Node.js is` optional for use test script. Recommended version is 18 or above.

<p align="right">(<a href="#readme-top">back to top</a>)</p>

### Installation

There's a different way to install this template:

1. **GitHub**
   
   Download or clone this repository, it’s ready to use.

   GitHub:
   ```
   https://github.com/iyanarmanda/github-portfolio-api-template
   ```

   Clone with:
   ```bash
   git clone https://github.com/iyanarmanda/github-portfolio-api-template.git github-portfolio
   cd github-portfolio
   ```

   </br>

2. **Package Manager** (*coming soon*)
   
   This template will soon be available via npm, yarn, or pnpm.

   </br>

<p align="right">(<a href="#readme-top">back to top</a>)</p>

---

## Usage

### Fill Data

   You can add your portfolio data in two ways:

   - By editing the local `./data/projects.json` file, or
   - By providing an API endpoint that returns JSON from your GitHub repository’s root directory `./github-portfolio/index.json` (*coming soon*).
  
   Both formats share the same JSON structure. Choose format do you prefer.

   Additionally, the file `./data/config.json` must be filled in with your credentials and configuration settings.

   <p align="right">(<a href="#readme-top">back to top</a>)</p>

   ---

   #### Config Structure

   File location: `./data/config/json`

   |Field Name|Description|Requirement|Data Type|
   |----------|-----------|-----------|---------|
   |githubUsername|Your GitHub username|Required|String|
   |githubUrl|Your GitHub URL. Overwrite it if use GitHub organization|Optional|String, (URL format)|
   |webTitle|Website tilte|Optional|String|
   |title|Main title of the GitHub Portfolio|Optional|String|
   |subtitle|Sub title of the GitHub Portfolio|Recommended|String|
   |lightThemeColor|Website theme color on light mode|Optional (Default: `#0000FF`)|String, (Hex color format)|
   |darkThemeColor|Website theme color on dark mode|Optional (Default: `#BB86FC`)|String, (Hex color format)|
   |useLocalJson|Set to true to read data from local JSON. Set false to read data from GitHub API repositories (*coming soon*)|Optional (Default: `true`)|Boolean|
   |email|Your contact email (*this feature is under development*)|Optional|string (email format)|
   |socialMedia|List of your social media accounts|Optional|Array of Objects|
   |socialMedia.name|Social media platform name|Required|Enum (see **social platform list**)|
   |socialMedia.url|Link to your social media|Required|String (URL format)|

   Example:
   ```JSON
   {
      "githubUsername": "iyanarmanda",
      "githubUrl": "https://github.com/iyanarmanda",
      "webTitle": "GitHub Portfolio - iyanarmanda",
      "title": "My GitHub Portfolio",
      "subtitle": "A showcase of my repositories and creations",
      "lightThemeColor": "#0000ff",
      "darkThemeColor": "#BB86FC",
      "useLocalJson": true,
      "email": "[email protected]",
      "socialMedia": [
         {
            "name": "instagram",
            "url": "yourIgUrl"
         },
         {
            "name": "twitter",
            "url": "yourTwitterUrl"
          },
          {
            "name": "likendin",
            "url": "yourLinkedinUrl"
         }
      ],
   }
   ```

   **Social Platform List**

   Use the value of `socialMedia.name` from the list below:

   |Social Platform|value|
   |----------|-----|
   |Instagram|ig|
   |X|x|
   |LinkedIn|linkedin|
   |WhatsApp|wa|
   |Facebook|fb|
   |Discord|dc|

   > **Note**: You can add another social media platform. Check on `./src/utils/socialPlatform.js`

   <p align="right">(<a href="#readme-top">back to top</a>)</p>

   ---

   #### Project structure

   This file should contain an array of objects. Each object represents a project.

   |Field Name|Description|Requirement|Data Type|
   |----------|-----------|-----------|---------|
   |name|Project/repository name|Required|String|
   |description|Short description|Recommended|String|
   |fullDescription|Full description (shown in modal)|Optional, (default: `description`)|String|
   |projectUrl|Project/repository URL|Recommended|String, (URL format)|
   |productUrl|Product/demo URL|Optional|String, (URL format)|
   |field|Project/product field or platform|Recommended|String|
   |status|Project work status|Recommended|Enum ("COMPLETED", "ON PROGRESS", "MAINTENANCE", "ARCHIVED")|
   |techStack|List of technologies used|Recommended|Array of Objects|
   |techStack.name|Technology name|Required|Enum (see **tech stack list**)|
   |thumbnailImage|Thumbnail image file path. Using fallback image if not provided|Optional|String|
   |thumbnailImageAlt|Alternative text for thumbnail|Optional|String|
   |modalImages|Images displayed in modal|Optional|Array of Objects|
   |modalImages.fileName|Modal image file path|Required|String|
   |modalImages.alt|Alternative text for modal imge|Optional|String|

   Example:
   ```JSON
   [
      {
         "name": "Portfolio Website",
         "description": "My personal portfolio as Informatic Engineering",
         "fullDescription": "This website show all my works as Informatic Engineering and it build perfectly that reference how skilled I am",
         "projectUrl": "https://github.com/iyanarmanda/portfolio",
         "productUrl": "https://iyan-zuli-armanda.netlify.app",
         "field": "Website",
         "status": "COMPLETED",
         "techStack": [
            { "name": "react" },
            { "name": "tailwind" },
            { "name": "vite" },
            { "name": "ts" }
         ],
         "thumbnailImage": "portfolio.webp",
         "thumbnailImageAlt": "Start page of my portfolio website",
         "modalImages": [
            {
               "fileName": "portfolio.webp",
               "alt": "Review of portfolio page 1"
            },
            { 
               "fileName": "my_diary.webp",
               "alt": "Review of portfolio page 2"
            },
            { 
               "fileName": "software_techs_portal.webp",
            }
         ]
      },
      {
         "name": "Surabaya BestPoint",
         "description": "Directory Listing App, show all best point in Surabaya",
         "projectUrl": "https://github.com/iyanarmanda/SurabayaBestPoint",
         "field": "Website",
         "status": "ON PROGRESS",
         "techStack": [
            { "name": "express" },
            { "name": "mongodb" },
            { "name": "mongoose" },
            { "name": "ejs" },
            { "name": "bootstrap" },
            { "name": "js" }
         ],
         "thumbnailImage": "directory_listing_app.webp"
      }
   ]
   ```

   **Images**
   
   - It’s recommended to use **.webp** format for better performance.
   - In this template, store images inside the `./images` directory.
   - If using an API, store them in the same directory as the JSON in `./portfolio` (*coming soon*).
   - If no `thumbnailImage` provided, it will use Splash image as fallback. See on `./src/utils/defaultImage.js`

   **Tech Stack List**

   Use the value of `techStack.name` from the list below:

   |Tech Stack|value|
   |----------|-----|
   |.NET|dotnet|
   |AdonisJS|adonis|
   |Alpine.js|alpine|
   |Angular|angular|
   |Astro|astro|
   |Bootstrap|bootstrap|
   |C|c|
   |C++|cpp|
   |CMake|cmake|
   |Dart|dart|
   |Debian|debian|
   |Docker|docker|
   |EJS|ejs|
   |Electron|electron|
   |Express|express|
   |Flutter|flutter|
   |Framer|framer|
   |Git|git|
   |GitHub|github|
   |GitHub Action|github-action|
   |GitLab|gitlab|
   |Gradle|gradle|
   |GraphQL|graphql|
   |Handlebars.js|hbs|
   |HTML5|html|
   |htmx|htmx|
   |JavaScript|js|
   |Jest|jest|
   |Kali Linux|kali|
   |Kotlin|kotlin|
   |Linux|linux|
   |Markdown|md|
   |Linux Mint|mint|
   |MongoDB|mongodb|
   |MySQL|mysql|
   |NestJS|nestjs|
   |Netlify|netlify|
   |NGINX|nginx|
   |Node.js|nodejs|
   |npm|npm|
   |Nx|nx|
   |OpenCV|opencv|
   |pnpm|pnpm|
   |PostgreSQL|postgres|
   |Postman|postman|
   |Prisma|prisma|
   |Python|py|
   |Qt|qt|
   |React|react|
   |React Native|react-native|
   |Redis|redis|
   |Rust|rust|
   |Sass|sass|
   |SQLite|sqlite|
   |Swagger|swagger|
   |Tailwind CSS|tailwind|
   |Tauri|tauri|
   |Three.js|threejs|
   |TypeScript|ts|
   |TypeORM|typeorm|
   |Vim|vim|
   |Vite|vite|
   |Vitest|vitest|
   |Webpack|webpack|
   |Yarn|yarn|

   > **Note**: You can add another tech stack. Check on `./src/utils/techBrand.js`

   <p align="right">(<a href="#readme-top">back to top</a>)</p>

   ---

  #### Repository Structure

   This file should contain an array of objects. Each object represents a project. *If you don't have another or sub repotories, then leave this file empty array* (`[]`).

   |Field Name|Description|Requirement|Data Type|
   |----------|-----------|-----------|---------|
   |repoName|Another or sub repository name|Required|String|
   |repoDesc|Another or sub repository short description|Optional|String|
   |repoUrl|Another or sub repository URL|Required|String (URL format)|

   Example:
   ```json
   [
      {
         "repoName": "My Other Repo",
         "repoDesc": "This is my other repo. The content is specialized field",
         "repoUrl": "https://github.com/reponame"
      },
      {
         "repoName": "Organization Repo Example",
         "repoDesc": "This repo is from an organization.",
         "repoUrl": "https://github.com/yourorg/reponame"
      }
   ]
   ```

   <p align="right">(<a href="#readme-top">back to top</a>)</p>

---

### Deployment

   This GitHub Portfolio template is ideal for GitHub Pages.
   Just deploy from the root directory, since it already includes an `index.html` file.

   <p align="right">(<a href="#readme-top">back to top</a>)</p>

---

## License

This template is [MIT LICENSED](https://github.com/iyanarmanda/github-portfolio-api-template?tab=MIT-1-ov-file)

<p align="right">(<a href="#readme-top">back to top</a>)</p>

---

## Contact

This github-portfolio-api-template is created by **iyanarmanda**.

Feel free to connect:
- **GitHub**: [iyanarmanda](https://github.com/iyanarmanda)
- **Instagram**: [@iyan_zul1](https://www.instagram.com/iyan_zul1/)
- **Linkedin**: [iyan-zuli-armanda](https://www.linkedin.com/in/iyan-zuli-armanda-8a1383296/)

Template link: [https://github.com/iyanarmanda/github-portfolio-template](https://github.com/iyanarmanda/github-portfolio-template)

<p align="right">(<a href="#readme-top">back to top</a>)</p>

---

</br>

Please leave a star and it free to contribute.
Hope you enjoy it ^-^

[contributors-shield]: https://img.shields.io/github/contributors/iyanarmanda/github-portfolio-template.svg?style=for-the-badge
[contributors-url]: https://github.com/iyanarmanda/github-portfolio-template/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/iyanarmanda/github-portfolio-template.svg?style=for-the-badge
[forks-url]: https://github.com/iyanarmanda/github-portfolio-template/network/members
[stars-shield]: https://img.shields.io/github/stars/iyanarmanda/github-portfolio-template.svg?style=for-the-badge
[stars-url]: https://github.com/iyanarmanda/github-portfolio-template/stargazers
[issues-shield]: https://img.shields.io/github/issues/iyanarmanda/github-portfolio-template.svg?style=for-the-badge
[issues-url]: https://github.com/iyanarmanda/github-portfolio-template/issues
[license-shield]: https://img.shields.io/github/license/iyanarmanda/github-portfolio-template.svg?style=for-the-badge
[license-url]: https://github.com/iyanarmanda/github-portfolio-template/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://www.linkedin.com/in/iyan-zuli-armanda-8a1383296/

反馈内容错误

看看同类模板

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