SNIPPETbgheneti
Bgheneti.Github.Io
Personal portfolio website built with Astro featuring responsive design, content collections for projects and links, and modern CSS. Optional Integration with Obsidian for content. Auto-deployed to GitHub Pages and/or Cloudflare.
CSSAny theme
# Astro-Powered Static-Site with Obsidian Integration
[](http://gheneti.com)
[](https://head.personal-website-3g4.pages.dev)
[](https://github.com/bgheneti/bgheneti.github.io/actions/workflows/deploy.yml)
<kbd><a href="https://gheneti.com"><img src="https://api.screenshotmachine.com?key=143530&url=gheneti.com&dimension=1000x500&cacheLimit=1&delay=1000" height="250"/><kbd/>
Personal portfolio website built with Astro, featuring projects, links, and a clean, responsive design.
The design was originally adapted from the [Gridsome x Forestry starter template](https://github.com/itsnwa/gridsome-forestry-starter) for Vue.js. This repo only uses Astro.
## ⨠Features
- **Responsive Design** - Mobile-first with hamburger navigation
- **Content Collections** - Markdown-based projects and links
- **Code Highlighting** - Prism.js syntax highlighting
- **Modern CSS** - Custom properties, animations, and utilities
- **Touch-Friendly** - Proper mobile interactions and hover states
- **Fast Performance** - Static site generation with Astro
## š Project Structure
```text
/
āāā public/ # Static assets
ā āāā code-highlight.css # Prism.js styling
ā āāā favicon.png
āāā src/
ā āāā components/
ā ā āāā Header.astro # Navigation with mobile menu
ā ā āāā Hero.astro # Home page hero section
ā ā āāā Footer.astro # Site footer
ā ā āāā ProjectsGrid.astro # Project display grid
ā ā āāā LinksGrid.astro # Links display grid
ā āāā content/
ā ā āāā config.ts # Content collections config
ā ā āāā assets/ # Images and other assets for projects
ā ā āāā projects/ # Project markdown files
ā ā āāā links/ # Link markdown files
ā ā āāā settings/ # Site settings and theme config
ā āāā layouts/
ā ā āāā Layout.astro # Base layout with global styles
ā āāā pages/
ā ā āāā index.astro # Home page
ā ā āāā projects/
ā ā ā āāā index.astro # Projects listing
ā ā ā āāā [...slug].astro # Individual project pages
ā ā āāā links/
ā ā āāā index.astro # Links page
ā āāā plugins/
ā āāā remark-relative-images.js # Plugin for relative image paths
āāā data/
ā āāā theme.json # Site configuration and content
āāā .github/workflows/
ā āāā deploy.yml # GitHub Pages deployment
āāā astro.config.mjs # Astro configuration
```
## š§ Commands
All commands are run from the root of the project:
| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Install dependencies |
| `npm run dev` | Start local dev server at `localhost:4321` |
| `npm run build` | Build production site to `./dist/` |
| `npm run preview` | Preview build locally before deploying |
| `npm run astro check` | Run type checking |
## š§ Configuration
### Content Management
- **Projects**: Add `.md` files to `/src/content/projects/`
- **Links**: Add `.md` files to `/src/content/links/`
- **Assets**: Add images and media to `/src/content/assets/`
- **Site Data**: Edit `/data/theme.json` for site settings
- **Theme Settings**: Edit `/src/content/settings/theme.md` for additional theme configuration
- **Obsidian Integration**: Optional - open `/src/content/` as an Obsidian vault for rich markdown editing. Obsidian settings, templates (for Links and Projects), and all content (Links, Projects, and Front Matter) are stored here.
### Styling
- **Global Styles**: `/src/layouts/Layout.astro`
- **CSS Variables**: Defined in Layout.astro for consistent theming
- **Component Styles**: Scoped styles in each `.astro` component
### Deployment
- **Auto-deploy**: Pushes to `template` branch trigger GitHub Actions
- **Build**: Creates static files in `/dist/`
- **Deploy**: Files deployed to `gh-pages` branch and Cloudflare.
- disable CloudFlare or gh-pages deployment by commenting out steps in `.github/workflows/deploy.yml`
- If you use Cloudflare:
- set `CLOUDLFARE_API_TOKEN` in repo secrets
- set `CLOUDLFARE_ACCOUNT_ID` in repo secrets
- update `CLOUDFLARE_PROJECT_NAME` in `.github/workflows/deploy.yml`
- **Live**: Available at <https://gheneti.com> via Cloudflare
## šØ Design System
The site uses a custom CSS design system with:
- **Color tokens**: `--color-base`, `--color-accent`, etc.
- **Typography scale**: `--font-size-xs` to `--font-size-3xl`
- **Spacing system**: `--spacing-xs` to `--spacing-3xl`
- **Animation utilities**: Fade-in animations with staggered delays
- **Responsive utilities**: Mobile-first breakpoints
How to Install
- Download the CSS file below
- Move it to your vault's
.obsidian/snippets/folder - Open Obsidian ā Settings ā Appearance ā CSS Snippets ā Enable it
Stats
Stars
24
Forks
2
License
MIT
Last updated 9mo ago
Categories
Tags
astrocloudflarecloudflare-pagescontent-collectionsdigital-gardengithub-pagesmarkdownmobile-firstnotesobsidianpersonal-websiteportfolioportfolio-websiteprismprojectsresponsive-designstatic-site-generatortypescriptweb-development