A production-focused portfolio presenting commercial, startup, and independent work across web, mobile, cloud, and AI-enabled systems.
Live portfolio · LinkedIn · GitHub
The site is a statically exported Next.js application built to load quickly, remain accessible, and present detailed engineering work without turning the portfolio into a wall of technology names.
It includes:
- production client platforms and independently developed products;
- outcome-first project summaries with expandable engineering notes;
- startup, freelance, education, and certification history;
- responsive navigation and keyboard-accessible interactions;
- image lazy loading and optimized WebP assets;
- complete social metadata, JSON-LD, sitemap, robots, and manifest;
- optional privacy-conscious analytics;
- automated deployment to GitHub Pages with a custom domain.
| Project | Summary | Links |
|---|---|---|
| Ceru | Six-language, multi-currency mobile expense sharing with offline-first sync and AI-powered voice and receipt input | Product site |
| Sea’cret Residences | Four-language real-estate marketing and lead-generation platform with Sanity CMS, SEO/GEO, analytics, accessibility, and enquiry workflows | Live site |
| Campus42 | Interactive student-housing platform with floor and studio selection, CMS content, localization, SEO/GEO, and transactional enquiries | Live site |
| AWS EC2 Observability | Interactive dashboard for CloudWatch CPU, network, disk, credit, and health metrics | Demo · Source |
| Agentic RAG Assistant | Grounded enterprise knowledge assistant with cited sources, relevance scores, and explicit fallback disclosure | App · Backend |
| Ski Shop | Full-stack e-commerce with customer and admin workflows, analytics, authentication, and AI recommendations | Demo · Source |
| Area | Technologies |
|---|---|
| Framework | Next.js 16 App Router, React 19 |
| Language | TypeScript 5 |
| Rendering | Static export for GitHub Pages |
| Animation | Layered CSS hero sequence, transitions, and reduced-motion fallbacks |
| Delivery | GitHub Actions, GitHub Pages, custom domain |
| Quality | Strict TypeScript, semantic HTML, reduced-motion support, responsive QA |
app/
|-- layout.tsx # Global metadata, analytics, JSON-LD, and root layout
|-- page.tsx # Semantic page composition
|-- globals.css # Design system, layout, animation, and responsive styles
|-- robots.ts # Static robots metadata route
|-- sitemap.ts # Static sitemap metadata route
`-- manifest.ts # Web app manifest
components/
|-- HeroScene.tsx # Optimized, layered cinematic hero sequence
|-- Projects.tsx # Accessible project case studies and lazy galleries
`-- ... # Page sections and reusable UI
data/
`-- portfolio.ts # Typed portfolio content
public/
|-- img/ # Optimized project and profile media
|-- og-image.png # Social sharing image
|-- Anton_Iosifov_CV.pdf
`-- CNAME # GitHub Pages custom domain
scripts/
|-- optimize-images.mjs
`-- create-og-image.mjs
Requirements: Node.js 20.9+ and npm.
git clone https://github.com/antoniosifov/portfolio.git
cd portfolio
npm ci
npm run devOpen http://localhost:3000.
Validate a production build with:
npm run typecheck
npm run buildThe static export is generated in out/.
Pushes to main trigger .github/workflows/deploy.yml. The workflow installs dependencies, builds the static Next.js export, and deploys out/ to GitHub Pages. The custom domain is retained through public/CNAME.
Analytics stay disabled unless the following variables are configured locally and as GitHub Actions secrets:
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_PLAUSIBLE_DOMAIN |
Domain registered in Plausible |
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL |
Optional custom or self-hosted Plausible script |