SSG rendering for GitHub pages. A modern, responsive portfolio website built with Next.js 14, TypeScript, and Tailwind CSS.
This project was developed by Cursor AI with hundreds of prompts as an exercise to understand the abilities and weaknesses of AI editors. Through this experience, I discovered effective practices for using AI-powered development tools in real-world projects.
The portfolio features a GitHub-style aesthetic with interactive scroll animations, built using modern web technologies and optimized for static deployment. It showcases advanced React patterns, performance optimization techniques, and demonstrates how to leverage AI tools for professional development workflows.
Key Features:
All development experiences and AI collaboration insights are documented in the published blog at https://attarchi.github.io


| Technology | Version | Purpose |
|---|---|---|
| Next.js | 14.1.0 | Static site generation with App Router |
| React | ^18 | Component-based UI development |
| TypeScript | ^5 | Type safety and developer experience |
| Tailwind CSS | ^3.3.0 | Utility-first styling system |
| Framer Motion | ^7.10.3 | Advanced animations and interactions |
| Lucide React | ^0.511.0 | Beautiful icon system |
| Marked | ^9.0.0 | Markdown parsing for blog posts |
| Jest | ^29.7.0 | Testing framework |
| Testing Library | ^16.3.0 | Component testing utilities |
git clone https://github.com/YOUR-USERNAME/YOUR-USERNAME.github.io.git
cd YOUR-USERNAME.github.io
yarn install
yarn dev
YOUR-USERNAME.github.io for automatic GitHub Pages deploymentsrc/content folder.com to .dev in the URLsrc/content/
βββ hero.ts # Main headline, description
βββ projects.ts # Featured projects with tech stacks
βββ contact.ts # Contact information
βββ footer.ts # Footer content
βββ professional-journey.ts # Professional timeline
βββ technical-expertise.ts # Technical expertise
βββ blog-page.ts # Blog page configuration
βββ blog-filters.ts # Blog filtering options
βββ theme.ts # Theme configuration
βββ icon.ts # Icon definitions
βββ icon-manifest.json # Icon manifest for tech stack
βββ posts/ # Blog posts in Markdown format
main branchhttps://YOUR-USERNAME.github.ioCNAME file to the public folder with your custom domain# Development server
yarn dev
# Production build
yarn build
# Start production server
yarn start
# Run tests
yarn test
# Run tests in watch mode
yarn test:watch
# Generate test coverage
yarn test:coverage
# Lint code
yarn lint
# Deploy to GitHub Pages
yarn deploy
attarchi.github.io/
βββ .github/workflows/ # GitHub Actions deployment
β βββ deploy.yml # Automated deployment
β βββ test.yml # CI/CD testing
βββ public/ # Static assets
β βββ icons/ # Technology icons
β βββ avatar.png # Profile image
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ blog/ # Blog pages
β β βββ thank-you/ # Contact form success page
β β βββ globals.css # Global styles
β βββ components/ # Reusable UI components
β β βββ micro/ # Atomic components
β β βββ sections/ # Page sections
β β βββ blog/ # Blog-specific components
β βββ content/ # Portfolio and blog content
β βββ lib/ # Utility functions and hooks
β βββ utils/ # Testing utilities
βββ __tests__/ # Test files
βββ docs/ # Project documentation
β βββ design-outline-proposal.md
β βββ technical-proposal.md
β βββ portfolio-content-specification.md
β βββ Phase*.md # Development phase documentation
βββ jest.config.ts # Jest configuration
The project uses a GitHub-inspired color palette with full dark/light mode support:
// Customize colors in tailwind.config.js
colors: {
background: 'hsl(var(--background))',
foreground: 'hsl(var(--foreground))',
primary: 'hsl(var(--primary))',
// ... more theme colors
}
All animations are built with Framer Motion and respect prefers-reduced-motion:
// Example animation variant
const fadeInUp = {
hidden: { opacity: 0, y: 20 },
visible: { opacity: 1, y: 0, transition: { duration: 0.6 } }
}
.md files to src/content/posts/---
title: "Your Blog Post Title"
date: "2025-01-15"
excerpt: "Brief description of the post"
tags: ["react", "nextjs", "tutorial"]
---
Your content here...
The project follows Test-Driven Development (TDD) principles:
# Run all tests
yarn test
# Run tests in watch mode
yarn test:watch
# Generate coverage report
yarn test:coverage
Feel free to open issues or submit pull requests for any improvements. This is a showcase project, but contributions are welcome! Please follow these guidelines:
Tests: Remove extra tests; focus on component-specific functionality. Remove CSS-based tests and duplicated logic.
// β
Good
import { Button } from '@/components/ui'
// β Avoid
import { Button } from '@/components/ui/button/Button'
@/* aliases instead of relative paths beyond one level:
// β
Good
import { utils } from '@/lib/utils'
// β Avoid
import { utils } from '../../../lib/utils'
Content Management: All content belongs in src/content/ with proper TypeScript interfaces. Remove hardcoded data from components.
Type Definitions: Keep types close to their usage. Only use src/types/ for shared interfaces to avoid circular dependencies.
Component Mocking: Each component should have a mock version in __mocks__/ for isolated testing.
Code Cleanup: Remove unused exports, files, and components. Eliminate unnecessary comments in favor of descriptive naming.
Quality Assurance: Run yarn test and yarn build after each change. Fix any breaking changes immediately.
Focused Changes: Apply improvements only to the specific component/file and its direct dependencies.
git checkout -b feature/your-feature-nameyarn test && yarn buildgit commit -m 'feat: add your feature'git push origin feature/your-feature-nameThe project is optimized for excellent performance scores:
Comprehensive documentation is available in the /docs folder - all generated by Claude.ai! These documents demonstrate how I broke down this complex project into simple, single-task prompts that any developer can follow.
Key Learning: Complex projects become manageable when you break them into focused, single-responsibility prompts. Each document shows exactly how to communicate with AI tools for maximum productivity.
MIT License - Feel free to use this code for your own portfolio! (Free to use for educational and commercial purposes)
Copyright (c) 2025 Portfolio Showcase Project
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
/docs folder for detailed guidesStar this repository β if it helped you create an amazing portfolio!