This is a personal portfolio website built with Vue 3, TypeScript, and Vite. It showcases my professional experience, projects, talks, and blog posts.
- Framework: Vue 3
- Build Tool: Vite
- Styling: Tailwind CSS
- Language: TypeScript
- Icons: Lucide Vue
- Markdown: Marked
src/components/: Contains the Vue components for different sections of the portfolio (About, Experience, Work, etc.).src/data.ts: Contains the static data for the portfolio content.src/types.ts: TypeScript interfaces for the data structures.src/App.vue: The main application component.
- Node.js (Latest LTS version recommended)
- npm or yarn
-
Clone the repository:
git clone <repository-url> cd template
-
Install dependencies:
npm install
To build the application for production:
npm run buildThe build artifacts will be stored in the dist/ directory.
To preview the production build locally:
npm run preview- Update
src/data.tsto change the content (Profile, Timeline, Projects, etc.). - Modify components in
src/components/to adjust the layout or design. - Update
index.htmlfor SEO and meta tags.
To protect personal information, the main profile data is stored in src/data.sensitive.ts, which is excluded from version control (via .gitignore).
src/data.sensitive.ts: Contains the actualPROFILE_DATA. Create this file locally for development.src/data.sensitive.example.ts: A template file. Copy this tosrc/data.sensitive.tsto get started.
To build the project in a CI environment, you must inject the sensitive data file at build time.
-
Create a Repository Secret:
- Go to Settings > Secrets and variables > Actions.
- Create a new secret named
DATA_SENSITIVE_FILE. - Paste the entire content of your local
src/data.sensitive.ts.
-
Workflow Configuration: The workflow uses an environment variable to safely inject the file content. Ensure your
.github/workflows/deploy.ymlincludes:- name: Inject Sensitive Data env: DATA_SENSITIVE: ${{ secrets.DATA_SENSITIVE_FILE }} run: echo "$DATA_SENSITIVE" > src/data.sensitive.ts
This theme was created using Antigravity and dozens of prompts carried out on:
- Gemini 3 Pro
- Gemini 3 Flash