{"id":47932253,"url":"https://github.com/peterhanania/portfolio","last_synced_at":"2026-04-04T07:20:57.479Z","repository":{"id":339683547,"uuid":"675868023","full_name":"peterhanania/portfolio","owner":"peterhanania","description":"[NEW] A blazing-fast personal software developer portfolio built with Astro + Preact. 100/100 Score!","archived":false,"fork":false,"pushed_at":"2026-03-17T20:16:12.000Z","size":38790,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-18T09:46:34.129Z","etag":null,"topics":["astro","branding","developer-portfolio","github-profile","inspiration","personal-website","portfolio","portfolio-site","prereact","react-portfolio","resume","seo-friendly","software-portfolio","web-developer-portfolio"],"latest_commit_sha":null,"homepage":"https://peterhanania.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peterhanania.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["peterhanania"]}},"created_at":"2023-08-07T23:25:16.000Z","updated_at":"2026-03-17T20:16:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/peterhanania/portfolio","commit_stats":null,"previous_names":["peterhanania/portfolio"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/peterhanania/portfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterhanania%2Fportfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterhanania%2Fportfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterhanania%2Fportfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterhanania%2Fportfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peterhanania","download_url":"https://codeload.github.com/peterhanania/portfolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peterhanania%2Fportfolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31391370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astro","branding","developer-portfolio","github-profile","inspiration","personal-website","portfolio","portfolio-site","prereact","react-portfolio","resume","seo-friendly","software-portfolio","web-developer-portfolio"],"created_at":"2026-04-04T07:20:56.927Z","updated_at":"2026-04-04T07:20:57.465Z","avatar_url":"https://github.com/peterhanania.png","language":"TypeScript","funding_links":["https://github.com/sponsors/peterhanania"],"categories":[],"sub_categories":[],"readme":"#  ⚡️ Ultimate Software Developer Portfolio\n\n### A _blazing-fast_, fully accessible personal portfolio built with **Astro + Preact**.\n\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Stars](https://img.shields.io/github/stars/peterhanania/portfolio?style=social)](https://github.com/peterhanania/portfolio/stargazers) [![Lighthouse](https://img.shields.io/badge/Lighthouse-100%2F100-brightgreen)](https://peterhanania.com) [![PWA](https://img.shields.io/badge/PWA-enabled-blue)](https://peterhanania.com) [![Built with Astro](https://img.shields.io/badge/Built%20with-Astro-FF5D01?logo=astro\u0026logoColor=white)](https://astro.build) [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org)\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/peterhanania/portfolio) [![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/peterhanania/portfolio) [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/peterhanania/portfolio)\n\n---\n\n## Preview\n\n![Lighthouse Score](./public/LIGHTHOUSE_SCORE.png)\n\n\u003e ### Scores 100/100 on Lighthouse across Performance, Accessibility, SEO, and Best Practices.\n\n\n![Hero Section](./public/PREVIEW_IMAGE_1.png)\n![About Section](./public/PREVIEW_IMAGE_2.png)\n![Experience Section](./public/PREVIEW_IMAGE_3.png)\n![Work Section](./public/PREVIEW_IMAGE_4.png)\n![Footer Section](./public/PREVIEW_IMAGE_5.png)\n\n---\n\n## Why this exists\n\nMost portfolio templates are either bloated React SPAs or static HTML with zero interactivity. This one ships **10kb of UI runtime** (Preact instead of React), scores a perfect Lighthouse, and still has silky animations, and 5 switchable color themes. Open-sourced so other devs can use it as a starting point.\n\n---\n\n## Features\n\n- ✅ **Full-page scroll hijacking** — smooth per-section scrolling on desktop, native swipe on mobile, complete keyboard nav (arrows, spacebar, Page Up/Down, Home/End)\n- ✅ **5 color themes** — Blue, Purple, Green, Orange, Black — persisted to `localStorage`\n- ✅ **Custom cursor** — three-layer cursor with hover states, driven by `requestAnimationFrame` at 60fps\n- ✅ **Text scramble animations** — Baffle.js with a `█▓▒░\u003c\u003e$%@` character set\n- ✅ **Section gradients** — unique radial gradient backgrounds per section\n- ✅ **PWA** — installable, service worker + Workbox caching strategy\n- ✅ **100/100 Lighthouse** — Performance, Accessibility, SEO, Best Practices\n- ✅ **Accessible** — ARIA labels, semantic HTML, `prefers-reduced-motion`, full keyboard navigation, proper focus management\n\n---\n\n## Tech Stack\n\n| Layer | Tech |\n|---|---|\n| Framework | [Astro](https://astro.build) |\n| UI | [Preact](https://preactjs.com) + `@preact/compat` |\n| State | [Zustand](https://github.com/pmndrs/zustand) + `@preact/signals` |\n| Animations | [Framer Motion](https://www.framer.com/motion/), [Lottie](https://airbnb.io/lottie/), [Baffle.js](https://camwiegert.github.io/baffle/), [canvas-confetti](https://github.com/catdad/canvas-confetti) |\n| Monorepo | [Turborepo](https://turbo.build) + Yarn Workspaces |\n| Deployment | Netlify |\n| PWA | Vite PWA + Workbox |\n\nPreact instead of React because there was no reason to ship 42kb when 10kb does the same thing.\n\n---\n\n## Getting Started\n\n**Prerequisites:** Node.js 18+, Yarn\n\n```bash\n# Install dependencies\nyarn install\n\n# Start dev server\nyarn dev\n\n# Build for production\nyarn build\n\n# Preview production build\nyarn preview\n```\n\nThe dev server runs at `http://localhost:4321`.\n\n---\n\n## Project Structure\n\n```\npackages/\n└── frontend/\n    ├── src/\n    │   ├── components/     # All UI sections and shared components\n    │   ├── pages/          # Astro pages (index, 404)\n    │   ├── layouts/        # Base HTML layout\n    │   ├── constants.ts    # Sections, themes config\n    │   ├── states.ts       # Zustand store\n    │   └── helpers.ts      # Scroll, navigation, focus utilities\n    ├── constants/\n    │   └── technologies.tsx # 40+ tech icons with labels\n    └── public/             # Static assets\n```\n\n---\n\n## Using this as a template\n\nFeel free to fork and adapt it. If you do, a GitHub star goes a long way. The main things you'd swap out:\n\n1. Content in `src/components/` (hero copy, experience, projects)\n2. `constants/technologies.tsx` for your own stack icons\n3. Colors/gradients in the CSS custom properties\n\n---\n\n## License\n\nMIT — do whatever you want with it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeterhanania%2Fportfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeterhanania%2Fportfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeterhanania%2Fportfolio/lists"}