Technology Stack
-
Languages
- HTML / CSS / JavaScript (vanilla)
- TypeScript
- Markdown
-
Framework / Runtime
- Astro 7
- Node.js (22.12+)
- Zod (via Astro)
-
Libraries / Packages
- @astrojs/rss
- AOS (CDN)
- Inter (Google Fonts)
-
External services
- Cloudflare Turnstile
- Cloudflare Worker + D1
- PWA
Project Structure
src/
├── content.config.ts
│
├── components/
│ ├── blog/
│ ├── portfolio/
│ └── shared/
│
├── content/
│ ├── blog/
│ └── projects/
│
├── layouts/
│ ├── BaseLayout.astro
│ ├── admin/
│ ├── blog/
│ └── portfolio/
│
├── pages/
│ ├── about.astro
│ ├── contact.astro
│ ├── index.astro
│ ├── rss.xml.js
│ ├── admin/
│ ├── blog/
│ └── projects/
│
├── lib/
│ ├── blog.ts
│ └── site.ts
│
├── scripts/
│ ├── admin.js
│ ├── portfolio.js
│ └── theme.js
│
└── styles/
├── admin.css
├── blog.css
├── global.css
├── normalize.css
├── styles.css
└── theme.css
| Category | Purpose | Think of it as |
|---|---|---|
content.config.ts |
Defines content collections + schemas | Content rules |
components/ |
Reusable UI pieces | Building blocks |
content/ |
Blog posts and project data | Actual content |
layouts/ |
Page templates / structure | Page shells |
pages/ |
Actual URLs/routes | Website pages |
lib/ + scripts/ |
Helper logic and browser JS | Functionality |
styles/ |
CSS | Appearance |
Sections
The website is divided into three main sections, each serving a distinct purpose:
-
Portfolio Section: The main public-facing section of the website, showcasing professional experience, projects, technical skills, education, and contact information.
-
Admin Section: A private administrative area that allows the administrator to securely log in and access the contact database, including messages submitted through the website’s contact form.
-
Blog Section: A dedicated publishing area for sharing blogs, technical articles, personal notes, and other written content, organized into relevant categories and tags.