Skip to content

HoPHNiDev/hophni.dev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ–₯️ IDE & Stitch β€” Developer Portfolio

A personal portfolio site with an IDE-like (VS Code) dark theme, powered by Astro and packed with interactive Stitch Easter eggs.

Astro Tailwind Deploy

πŸ› οΈ Template by HoPHNi β€” fork it, customize it, make it yours.


πŸš€ Quick Start

# Install dependencies
npm install

# Run dev server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

The site will be available at http://localhost:4321/.


πŸ“ Project Structure

src/
β”œβ”€β”€ content/                  ← All editable content (Markdown)
β”‚   β”œβ”€β”€ hero/about.md         ← Role, skills, bio for terminal
β”‚   β”œβ”€β”€ experience/*.md       ← Work experience entries
β”‚   β”œβ”€β”€ projects/*.md         ← Pet project cards
β”‚   β”œβ”€β”€ contacts/links.md     ← GitHub, Telegram, etc.
β”‚   β”œβ”€β”€ terminal/commands.md  ← Hidden terminal commands
β”‚   └── stitch/reviews.md     ← Stitch tech review comments
β”œβ”€β”€ components/               ← Astro components
β”‚   β”œβ”€β”€ Header.astro          ← IDE tab navigation
β”‚   β”œβ”€β”€ Hero.astro            ← Terminal-style hero section
β”‚   β”œβ”€β”€ ExperienceTimeline.astro ← JSON-formatted experience
β”‚   β”œβ”€β”€ ProjectCards.astro    ← Project card grid
β”‚   β”œβ”€β”€ Footer.astro          ← Contact + VS Code status bar
β”‚   β”œβ”€β”€ StitchDebugger.astro  ← πŸ› Corner Stitch Easter egg
β”‚   β”œβ”€β”€ StitchReviewer.astro  ← πŸ” Tech badge tooltip
β”‚   β”œβ”€β”€ StitchCopyGuard.astro ← πŸ”’ Copy guard toast
β”‚   β”œβ”€β”€ StitchCrash.astro     ← πŸ’₯ Idle crash effect
β”‚   └── HiddenTerminal.astro  ← πŸ–₯️ Secret terminal
β”œβ”€β”€ layouts/BaseLayout.astro  ← HTML head, fonts, meta tags
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ index.astro           ← Main page
β”‚   └── 404.astro             ← Custom 404 with Stitch
β”œβ”€β”€ styles/global.css         ← Tailwind v4 theme tokens
public/
β”œβ”€β”€ stitch-debugger.png       ← Stitch with a bug
β”œβ”€β”€ stitch-reviewer.png       ← Stitch with magnifying glass
β”œβ”€β”€ stitch-crash.png          ← Stitch sitting innocently
β”œβ”€β”€ stitch-guard.png          ← Stitch guarding data
β”œβ”€β”€ stitch-404.png            ← Stitch chewing cables
β”œβ”€β”€ favicon.svg               ← Terminal prompt icon
└── CNAME                     ← Custom domain

✏️ How to Customize

All content lives in Markdown files inside src/content/. No component code changes needed.

πŸ‘€ Hero Section β€” src/content/hero/about.md

---
role: "Your Role Title"
username: "yourname"          # Terminal prompt: yourname@portfolio
hostname: "portfolio"          # Terminal prompt + path
templateUrl: "https://github.com/..."  # "Use Template" header button
bio: "Short bio paragraph."
skills:
  backend: ["FastAPI", "Django"]
  database: ["PostgreSQL", "Redis"]
  devops: ["Docker", "CI/CD"]
  tools: ["Celery", "RabbitMQ"]
---

πŸ’Ό Experience β€” src/content/experience/*.md

Create one .md file per job (e.g., 1-company.md):

---
company: "Company Name"
role: "Your Role"
period: "Jan 2024 β€” Present"
stack: ["Python", "FastAPI", "PostgreSQL"]
order: 1          # Lower = shown first
current: true     # Optional, marks green dot
description: "Project context"
---

- Built something amazing
- Led a team of 5

πŸš€ Projects β€” src/content/projects/*.md

---
name: "Project Name"
description: "What the project does."
stack: ["Python", "Selenium"]
icon: "smart_toy"    # Material Symbol name
link: "https://example.com"  # Optional (GitHub, website, etc.)
order: 1
---

Icons: browse Material Symbols

πŸ“¬ Contacts β€” src/content/contacts/links.md

---
heading: "Want to collaborate or hire me?"
links:
  # Material Symbol icon (default)
  - label: "hophnidev@gmail.com"
    url: "mailto:hophnidev@gmail.com"
    icon: "mail"
  # Custom SVG icon (e.g. brand logos)
  - label: "github.com/yourname"
    url: "https://github.com/yourname"
    icon: "code"
    iconType: "svg"           # "material" (default) or "svg"
    svgPath: "M12 0c-6.626..." # SVG path data (d attribute)
---

iconType: "svg" renders an inline <svg> with the provided svgPath. Omit it for default Material Symbols.

🎨 Theme Colors β€” src/styles/global.css

Edit the @theme block to change IDE colors:

@theme {
  --color-bg-dark: #0D1117;       /* Main background */
  --color-ide-gray: #161B22;      /* Panel backgrounds */
  --color-primary: #58A6FF;       /* Accent color */
  --color-accent-green: #3FB950;  /* Terminal green */
}

🌐 Domain & SEO

  • Domain: edit public/CNAME
  • Site URL: edit site in astro.config.mjs
  • Title & Description: edit src/layouts/BaseLayout.astro

πŸ—‚οΈ IDE Features

Closable Tabs

Every tab in the header has a close button (Γ—) that appears on hover β€” just like VS Code:

  • Click Γ— to close the tab and hide its section from the page
  • All tabs can be closed
  • A "Restore" button appears when tabs are closed β€” click to reopen all
  • Press Ctrl+Z (or Cmd+Z) to restore the last closed tab one by one

Active Tab Tracking

The active tab automatically highlights based on scroll position.


πŸ₯š Easter Eggs

1. πŸ› Stitch Debugger (bottom-right corner)

Stitch peeks from the bottom-right holding a glowing bug.

  • Hover β†’ Stitch peeks up fully
  • Click β†’ Console log: "Burp! Delicious bugs..."
  • Idle β†’ Stitch periodically peeks up on his own

2. πŸ–₯️ Hidden Terminal

Press ` (backtick), ~ (tilde), or Cmd+K / Ctrl+K to open an Ubuntu-styled terminal overlay.

Tab autocomplete β€” type a partial command and press Tab to complete it.

Command Output
help List of available commands
cat skills.json Tech skills (from hero section)
python3 info.py Bio in triple quotes
cat contact.sh Contact links
neofetch Ubuntu-style ASCII + system info
fetch_stack ASCII tech stack table
ls Virtual file listing
git status Fake git status
sudo rm -rf / Glitch effect + ASCII art πŸ’€

Customize commands and neofetch info in src/content/terminal/commands.md

3. πŸ” Stitch Code Reviewer

Hover over any tech badge (in Experience or Projects) β€” Stitch appears with a speech bubble commenting on the technology.

Customize comments in src/content/stitch/reviews.md

4. πŸ”’ Copy Guard

Select text inside the Experience section β€” a toast appears:

"πŸ”’ Data locked. Just kidding, copy whatever you want 😜"

30-second cooldown between triggers.

5. πŸ’₯ The Crash

Leave the tab inactive for 5 minutes, then return:

  1. Page scrolls to top
  2. ALL sections "fall" into a pile with physics
  3. Stitch sits on the wreckage: "SYSTEM CRASH β€” docker-compose down // oops"
  4. Move the mouse to reboot β€” elements spring back to their positions

Change idle duration: edit IDLE_MS in src/components/StitchCrash.astro

6. πŸ”Œ 404 Page

Navigate to any invalid URL β€” Stitch is caught chewing server cables with electric sparks.


🚒 Deployment

Step 1: Create GitHub Repository

git init
git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO.git
git add .
git commit -m "initial commit"
git push -u origin main

Step 2: Enable GitHub Pages

  1. Go to Settings β†’ Pages in your GitHub repo
  2. Under Source, select GitHub Actions
  3. The workflow (.github/workflows/deploy.yml) will auto-deploy on every push to main

Step 3: Verify Deployment

Push to main β†’ wait ~1 min β†’ visit https://YOUR_USERNAME.github.io/YOUR_REPO/

git add .
git commit -m "update portfolio"
git push origin main

🌐 Custom Domain Setup (e.g. hophni.dev)

3a. Set domain in project

public/CNAME β€” set your domain (no https://):

yourdomain.com

astro.config.mjs β€” set site to your domain:

export default defineConfig({
  site: 'https://yourdomain.com',
  // ...
});

3b. Configure DNS at your domain registrar

Go to your domain registrar's DNS settings and add these records:

For root domain (yourdomain.com) β€” add 4 A records:

Type Name Value
A @ 185.199.108.153
A @ 185.199.109.153
A @ 185.199.110.153
A @ 185.199.111.153

For www subdomain β€” add CNAME:

Type Name Value
CNAME www YOUR_USERNAME.github.io

⏳ DNS changes can take 10 min–48 hours to propagate.

3c. Set domain in GitHub

  1. Go to Settings β†’ Pages
  2. Under Custom domain, enter yourdomain.com
  3. Click Save
  4. Wait for DNS check to pass (green checkmark)
  5. βœ… Check Enforce HTTPS (appears after DNS verifies)

3d. Verify everything works

# Check DNS propagation
dig yourdomain.com +short
# Should show: 185.199.108.153, ...109, ...110, ...111

# Check HTTPS
curl -I https://yourdomain.com
# Should show: HTTP/2 200

Visit https://yourdomain.com β€” your portfolio should load with HTTPS πŸ”’


πŸ› οΈ Tech Stack

Layer Tech
SSG Astro 5
Styling Tailwind CSS v4
Content Astro Content Collections (Markdown)
Hosting GitHub Pages
CI/CD GitHub Actions
Design Google Stitch (initial prototype)

πŸ“œ License

MIT β€” use it, fork it, make it yours.


Template developed by HoPHNi · Star ⭐ the repo if you like it!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors