Personal developer portal — a static site showcasing projects and their privacy policies. Bilingual (English / 中文) with a lightweight client-side i18n system.
- Pure HTML / CSS / JavaScript — no build step
- Tailwind CSS via CDN
- Client-side i18n (EN / 中文) with localStorage persistence
- GitHub Pages hosting
.
├── index.html # Home page (hero, skills, projects)
├── privacy/
│ └── index.html # Site-wide privacy policy
├── projects/
│ └── puzzle/
│ ├── index.html # Puzzle project page
│ └── privacy.html # Puzzle privacy policy
├── assets/
│ ├── js/
│ │ ├── app.js # Injects shared nav + footer
│ │ └── i18n.js # Bilingual dictionary + switcher
│ ├── partials/
│ │ ├── nav.html # Shared navigation bar
│ │ └── footer.html # Shared footer
│ └── images/
├── favicon.ico
├── CNAME
└── README.md
- Create
projects/<slug>/index.html— copyprojects/puzzle/index.htmlas a template - If the app needs a privacy policy, add
projects/<slug>/privacy.html - Add a project card to the grid in
index.html - Add translation strings to both
enandzhdictionaries inassets/js/i18n.js
- Add the new key to both
enandzhdictionaries inassets/js/i18n.js - Add
data-i18n="your.key"to the HTML element - For attributes (e.g.
title), also adddata-i18n-attr="title"
Serve locally:
python3 -m http.server 4000Visit http://localhost:4000.
Push to master — GitHub Pages serves the static files directly.