Skip to content

Juxn89/juangomezb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

71 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Juan Gomez - Senior Software Engineer Portfolio

Modern, high-performance portfolio website built with Next.js 16, React 19, and TypeScript. Features a creative design with Forest Code color palette, multilingual support (English/Spanish), and full integration with Dev.to blog.

Next.js React TypeScript Tailwind CSS License


✨ Features

🎨 Modern Design

  • Forest Code Color Palette: Emerald green, violet, and amber gradients
  • Responsive Design: Mobile-first approach (320px β†’ 4K)
  • Dark/Light Mode: System preference detection with smooth transitions
  • Smooth Animations: Framer Motion with performance optimization
  • Gradient Text Effects: Custom gradients without clipping issues

🌍 Internationalization (i18n)

  • Languages: English (en) & Spanish (es)
  • Library: next-intl 4.12.0 for Server Components
  • Auto-detection: Browser language, cookies, URL path
  • SEO-friendly: hreflang tags and locale-specific sitemaps

πŸ“ Content Management

  • Dev.to Integration: Automatic blog post fetching via API
  • ISR Caching: 1-hour revalidation for optimal performance
  • Local MDX Support: Ready for custom content
  • Dynamic Metadata: SEO optimized for each page

πŸ›‘οΈ Security & Performance

  • Rate Limiting: In-memory limiter (production-ready)
  • Security Headers: CSP, XSS protection, CSRF prevention
  • Edge Middleware: Bot protection and DDoS mitigation
  • Core Web Vitals: Optimized for 90+ Lighthouse scores

🎯 Key Sections

  • Hero: Profile photo, typewriter animation (5 roles), social links
  • About: Professional stats (15+ years, 500K+ users, Architect, Scalable)
  • Experience: Timeline of professional journey
  • Projects: Featured work with case studies
  • Blog: Dev.to articles integration
  • Contact: Secure contact form
  • 404 Page: Creative tech-themed animated error page

πŸ› οΈ Tech Stack

Core

Styling

Internationalization

Content & Data

Development Tools

  • Package Manager: pnpm (fast, efficient)
  • Linting: ESLint with Next.js config
  • Testing: Playwright (E2E, ready for CI/CD)
  • Git Remote: origin-ssh (SSH authentication)

πŸ“‚ Project Structure

juangomezb/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ [locale]/           # Localized routes (en, es)
β”‚   β”‚   β”‚   β”œβ”€β”€ layout.tsx      # Root layout with i18n
β”‚   β”‚   β”‚   β”œβ”€β”€ page.tsx        # Home page (all sections)
β”‚   β”‚   β”‚   └── not-found.tsx   # Localized 404 page
β”‚   β”‚   β”œβ”€β”€ layout.tsx          # Root layout (non-locale routes)
β”‚   β”‚   β”œβ”€β”€ not-found.tsx       # Root 404 page
β”‚   β”‚   β”œβ”€β”€ globals.css         # Global styles + Forest Code palette
β”‚   β”‚   β”œβ”€β”€ sitemap.ts          # Dynamic sitemap generation
β”‚   β”‚   └── robots.ts           # Dynamic robots.txt
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.tsx      # Navigation with locale switcher
β”‚   β”‚   β”‚   └── Footer.tsx      # Footer with social links
β”‚   β”‚   β”œβ”€β”€ sections/
β”‚   β”‚   β”‚   β”œβ”€β”€ HeroSection.tsx         # Landing with typewriter
β”‚   β”‚   β”‚   β”œβ”€β”€ AboutSection.tsx        # Stats, skills, expertise
β”‚   β”‚   β”‚   β”œβ”€β”€ ExperienceSection.tsx   # Career timeline
β”‚   β”‚   β”‚   β”œβ”€β”€ ProjectsSection.tsx     # Featured projects
β”‚   β”‚   β”‚   β”œβ”€β”€ BlogSection.tsx         # Dev.to integration
β”‚   β”‚   β”‚   β”œβ”€β”€ BlogCard.tsx            # Blog post card
β”‚   β”‚   β”‚   └── ContactSection.tsx      # Contact form
β”‚   β”‚   β”œβ”€β”€ providers/
β”‚   β”‚   β”‚   └── Providers.tsx   # Theme, i18n providers
β”‚   β”‚   └── ui/                 # Reusable UI components
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   └── devto.ts        # Dev.to API client
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ cn.ts           # className utility (clsx + twMerge)
β”‚   β”‚   β”‚   └── seo.ts          # SEO metadata generation
β”‚   β”‚   └── security/
β”‚   β”‚       └── rate-limiter.ts # In-memory rate limiting
β”‚   └── types/                  # TypeScript definitions
β”œβ”€β”€ messages/
β”‚   β”œβ”€β”€ en.json                 # English translations
β”‚   └── es.json                 # Spanish translations
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ images/
β”‚   β”‚   └── profile_photo.png   # Hero profile photo
β”‚   β”œβ”€β”€ resume/
β”‚   β”‚   β”œβ”€β”€ juan-gomez-cv-en.pdf
β”‚   β”‚   └── juan-gomez-cv-es.pdf
β”‚   └── favicon.svg             # Forest Code gradient favicon
β”œβ”€β”€ middleware.ts               # Edge middleware (security, rate limiting)
β”œβ”€β”€ i18n.ts                     # next-intl configuration
β”œβ”€β”€ routing.ts                  # Locale routing config
β”œβ”€β”€ next.config.ts              # Next.js configuration
β”œβ”€β”€ tailwind.config.ts          # Tailwind CSS configuration
β”œβ”€β”€ tsconfig.json               # TypeScript configuration
└── package.json                # Dependencies

πŸš€ Getting Started

Prerequisites

Installation

# Clone the repository
git clone git@github.com:Juxn89/juangomezb.git
cd juangomezb

# Install dependencies
pnpm install

Development Server

# Start dev server (localhost:3000)
pnpm dev

# Start dev server with Turbopack (faster)
pnpm dev --turbo

Open http://localhost:3000 in your browser.

Build for Production

# Create optimized production build
pnpm build

# Preview production build locally
pnpm start

Testing

# Run Playwright E2E tests
pnpm test

# Run tests in UI mode (visual debugging)
pnpm test:ui

# Run tests in headed mode (browser visible)
pnpm test:headed

βš™οΈ Configuration

Environment Variables

Create a .env.local file in the root directory:

# Public
NEXT_PUBLIC_SITE_URL=https://juangomezb.com

# Optional (for production scaling)
UPSTASH_REDIS_REST_URL=your_redis_url
UPSTASH_REDIS_REST_TOKEN=your_redis_token

Locales

Configure locales in i18n.ts:

export default getRequestConfig(async ({locale}) => ({
  messages: (await import(`./messages/${locale}.json`)).default,
  timeZone: 'America/Managua',
}));

Dev.to Username

Update username in src/lib/api/devto.ts:

const DEVTO_USERNAME = 'jgomezdev'; // Change to your username

🎨 Customization

Color Palette (Forest Code)

Edit src/app/globals.css:

:root {
  --color-accent-primary: 4 120 87;     /* Emerald green */
  --color-accent-secondary: 124 58 237; /* Violet */
  --color-accent-tertiary: 251 191 36;  /* Amber */
}

.dark {
  --color-accent-primary: 16 185 129;   /* Bright green */
  --color-accent-secondary: 167 139 250;/* Soft violet */
  --color-accent-tertiary: 252 211 77;  /* Golden yellow */
}

Skills List

Edit src/components/sections/AboutSection.tsx:

const skills = [
  {name: '.NET', category: 'backend', icon: Code},
  {name: 'React', category: 'frontend', icon: Code},
  // Add your skills...
];

Stats Cards

Edit src/components/sections/AboutSection.tsx:

const stats = [
  {label: t('stats.experience'), value: '15+'},
  {label: t('stats.users'), value: '500K+'},
  // Customize your stats...
];

🌐 Deployment

Vercel (Recommended)

  1. Push to GitHub:

    git push origin-ssh main
  2. Import project in Vercel Dashboard

  3. Configure:

    • Framework: Next.js
    • Root Directory: ./
    • Build Command: pnpm build
    • Output Directory: .next
  4. Add environment variables in Vercel dashboard

  5. Deploy! πŸŽ‰

Manual Deploy

# Build
pnpm build

# Deploy .next folder to your hosting provider

πŸ“ Scripts

Command Description
pnpm dev Start development server
pnpm build Create production build
pnpm start Start production server
pnpm lint Run ESLint
pnpm test Run Playwright tests
pnpm test:ui Run tests in UI mode

πŸ“š Documentation & Context Preservation

Complete Documentation Suite

This project includes comprehensive documentation to preserve all development context:

Document Purpose
README.md (this file) Project overview, features, getting started
SETUP.md Step-by-step setup guide after cloning
DEVELOPMENT.md Complete development context, decisions, problems & solutions
CONVERSATION_HISTORY.md Full chronological history of AI-assisted development
CHANGELOG.md Version history and changes
AGENTS.md AI agent guidelines for code generation
docs/transcripts/ Raw conversation transcripts (JSONL format)

Why This Matters

After formatting your laptop or switching machines, you can:

  • βœ… Quickly set up the project (SETUP.md)
  • βœ… Understand all architectural decisions (DEVELOPMENT.md)
  • βœ… See the complete development journey (CONVERSATION_HISTORY.md)
  • βœ… Review specific problems and solutions
  • βœ… Maintain consistent code quality with AI assistance

Quick Start After Formatting

  1. Clone repository: git clone git@github.com:juxn89/juangomezb.git
  2. Follow SETUP.md checklist
  3. Run pnpm install && pnpm dev
  4. Review DEVELOPMENT.md for context

🀝 Contributing

This is a personal portfolio project, but suggestions and bug reports are welcome!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘€ Author

Juan Gomez


πŸ™ Acknowledgments


Built with ❀️ using Next.js 16 and React 19

About

Modern portfolio website built with Next.js 16, TypeScript, Tailwind CSS 4, and next-intl. Features dark/light mode, Dev.to blog integration, and creative animations.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors