π March 2026 Update: This repository has undergone a major overhaul and refactor!
Personal portfolio and blog built with Astro 7, Tailwind CSS 4, and TypeScript.
- Astro 7 π Static-first with hybrid SSR for the AI chat endpoint
- Tailwind CSS 4 π¨ Vite plugin, CSS-only config, shadcn-style oklch design tokens
- Markdown Blog π Content collections, pagination, reading time, Giscus comments
- Arcade πΉοΈ AI-written single-file browser games, playable in-page with the model and prompt behind each one
- AI Chat π€ Groq-powered streaming assistant with follow-up questions and daily rate limits
- OG Images πΌοΈ Auto-generated at build time via
astro-og-canvas - Decap CMS βοΈ Git-based headless CMS at
/admin - Dark Mode π System-aware with instant toggle (no flash)
- Contact Form βοΈ Netlify Forms with reCAPTCHA and honeypot
- Performance β‘ Compression, lazy loading, priority hints, preloaded fonts
- SEO π Sitemap, RSS, meta tags, structured OG data
# Clone & install
git clone https://github.com/aleksa-codes/astro-portfolio.git
cd astro-portfolio
bun install
# Set up env
echo 'GROQ_API_KEY=your_key_here' > .env
# Run dev server
bun run devOpen http://localhost:3000.
| Command | Description |
|---|---|
bun run dev |
Dev server (port 3000) |
bun run build |
Type check β Astro build β Tailwind minify β PostCSS |
bun run preview |
Preview production build |
bun run format |
Prettier (Astro + Tailwind + import sorting) |
bun run decap |
Local Decap CMS server |
src/
βββ assets/ # Images & fonts (Astro-optimized)
βββ components/ # Astro components (kebab-case)
β βββ ui/ # Primitives (card, badge, button, tooltip)
βββ content/blog/ # Markdown blog posts
βββ layouts/ # base-layout.astro
βββ lib/ # Utilities, project data, tech stack data
βββ pages/ # Routes (static + /api/chat SSR)
βββ styles/ # global.css (Tailwind v4 config + design tokens)
| Variable | Required | Purpose |
|---|---|---|
GROQ_API_KEY |
Yes (for chat) | Groq API authentication |
| Category | Technology |
|---|---|
| Framework | Astro 7 |
| Styling | Tailwind CSS 4 + shadcn/ui tokens |
| AI | Vercel AI SDK + Groq |
| Content | Markdown + Decap CMS |
| Icons | astro-icon (Lucide, Simple Icons, etc.) |
| Code Blocks | Expressive Code |
| Deployment | Netlify (static + serverless) |
| Package Manager | Bun |
Deploy to Netlify with these settings:
- Build command:
bun run build - Publish directory:
dist - Environment variables:
GROQ_API_KEY - Enable Netlify Forms and Netlify Identity (for Decap CMS)
MIT - see LICENSE.