Content-Length: 406892 | pFad | http://github.com/aa-io/site

82 GitHub - aa-io/site: Andrew Ambrosino's personal website
Skip to content

aa-io/site

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Andrew Ambrosino - Personal Site

A modern, minimalist personal portfolio website built with Next.js 15 and React 19. This site showcases professional experience, projects, and serves as a digital presence for Andrew Ambrosino.

๐Ÿš€ Features

  • Modern Tech Stack: Built with Next.js 15, React 19, and TypeScript
  • AI Chat Assistant: Interactive AI assistant that can answer questions about Andrew's background, experience, and projects
  • Responsive Design: Fully responsive layout using Tailwind CSS 4
  • Dark/Light Mode: Theme switching with next-themes
  • Work Experience: Clean display of professional background with structured data
  • Project Showcase: Individual work project pages with MDX content
  • Custom Animations: Smooth animations with Motion (Framer Motion)
  • Social Links: Integrated social media and professional links
  • Custom Fonts: Soehne font family with multiple weights and styles
  • MDX Support: Rich content authoring with custom MDX components
  • Performance Optimized: Leverages Next.js Turbopack for fast development
  • Accessible: Built with Radix UI components for accessibility
  • SEO Optimized: Custom OG images and meta tags for social sharing
  • Professional Licenses: Display of certifications and licenses
  • Media Mentions: Showcase of press coverage and mentions

๐Ÿ› ๏ธ Tech Stack

๐Ÿ—๏ธ Project Structure

site/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ (pages)/
โ”‚   โ”‚   โ”œโ”€โ”€ chat/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ page.tsx          # AI chat assistant page
โ”‚   โ”‚   โ”œโ”€โ”€ page.tsx              # Main homepage
โ”‚   โ”‚   โ””โ”€โ”€ work/
โ”‚   โ”‚       โ”œโ”€โ”€ catch/
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ content.mdx   # Catch project content
โ”‚   โ”‚       โ”‚   โ”œโ”€โ”€ draft.mdx     # Draft content (unpublished)
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ page.tsx      # Catch project page
โ”‚   โ”‚       โ””โ”€โ”€ noyo/
โ”‚   โ”‚           โ”œโ”€โ”€ content.mdx   # Noyo project content
โ”‚   โ”‚           โ”œโ”€โ”€ draft.mdx     # Draft content (unpublished)
โ”‚   โ”‚           โ””โ”€โ”€ page.tsx      # Noyo project page
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ””โ”€โ”€ chat/
โ”‚   โ”‚       โ”œโ”€โ”€ route.ts          # AI chat API endpoint
โ”‚   โ”‚       โ”œโ”€โ”€ system-prompt.ts  # AI assistant configuration
โ”‚   โ”‚       โ””โ”€โ”€ tools/            # AI assistant tools
โ”‚   โ”œโ”€โ”€ assets/
โ”‚   โ”‚   โ””โ”€โ”€ font/                 # Soehne font family files
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ chat/                 # Chat UI components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ chat.tsx          # Main chat interface
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ input.tsx         # Chat input component
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ message.tsx       # Message display component
โ”‚   โ”‚   โ”œโ”€โ”€ ui/                   # shadcn/ui components
โ”‚   โ”‚   โ”œโ”€โ”€ animate-in.tsx        # Animation wrapper
โ”‚   โ”‚   โ”œโ”€โ”€ license-row.tsx       # Professional license display
โ”‚   โ”‚   โ”œโ”€โ”€ mention-row.tsx       # Media mention display
โ”‚   โ”‚   โ”œโ”€โ”€ section.tsx           # Section component
โ”‚   โ”‚   โ”œโ”€โ”€ social-link.tsx       # Social link components
โ”‚   โ”‚   โ”œโ”€โ”€ theme-provider.tsx    # Theme context
โ”‚   โ”‚   โ”œโ”€โ”€ work-page-wrapper.tsx # Work project layout
โ”‚   โ”‚   โ””โ”€โ”€ work-row.tsx          # Work experience row
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ env.ts               # Environment validation
โ”‚   โ”‚   โ””โ”€โ”€ mdx.ts               # MDX utilities
โ”‚   โ”œโ”€โ”€ test/                    # Test suite
โ”‚   โ”‚   โ”œโ”€โ”€ api/                 # API route tests
โ”‚   โ”‚   โ”œโ”€โ”€ components/          # Component tests
โ”‚   โ”‚   โ”œโ”€โ”€ data/                # Data validation tests
โ”‚   โ”‚   โ”œโ”€โ”€ setup.ts             # Test configuration
โ”‚   โ”‚   โ””โ”€โ”€ utils.test.ts        # Utility tests
โ”‚   โ”œโ”€โ”€ globals.css              # Global styles and CSS variables
โ”‚   โ”œโ”€โ”€ layout.tsx               # Root layout
โ”‚   โ”œโ”€โ”€ opengraph-image.jpg     # OG image for social sharing
โ”‚   โ””โ”€โ”€ twitter-image.jpg        # Twitter card image
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ links.ts                 # Social and primary links
โ”‚   โ”œโ”€โ”€ licenses.ts              # Professional licenses
โ”‚   โ”œโ”€โ”€ mentions.ts              # Media mentions and press
โ”‚   โ””โ”€โ”€ work.ts                  # Work experience data
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ img/
โ”‚   โ”‚   โ”œโ”€โ”€ covers/              # Project cover images
โ”‚   โ”‚   โ”œโ”€โ”€ logos/               # Company logos
โ”‚   โ”‚   โ””โ”€โ”€ projects/            # Project screenshots
โ”‚   โ”œโ”€โ”€ llms.txt                 # LLM-friendly site description
โ”‚   โ””โ”€โ”€ resume.pdf               # Resume download
โ”œโ”€โ”€ .cursor/
โ”‚   โ””โ”€โ”€ rules/                   # Cursor AI coding rules
โ”œโ”€โ”€ mdx-components.tsx           # Custom MDX components
โ”œโ”€โ”€ next.config.ts               # Next.js configuration with MDX
โ”œโ”€โ”€ vitest.config.mjs            # Vitest test configuration
โ””โ”€โ”€ components.json              # shadcn/ui configuration

๐Ÿšฆ Getting Started

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Installation

  1. Clone the repository

    git clone <repository-url>
    cd site
  2. Install dependencies

    pnpm install
  3. Set up environment variables

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

    OPENAI_API_KEY=your_openai_api_key_here
  4. Start the development server

    pnpm dev
  5. Open your browser Navigate to http://localhost:3000

Available Scripts

  • pnpm dev - Start development server with Turbopack
  • pnpm build - Build for production
  • pnpm start - Start production server
  • pnpm lint - Run ESLint
  • pnpm test - Run tests in interactive mode
  • pnpm test:run - Run all tests once
  • pnpm test:watch - Run tests in watch mode
  • pnpm test:ui - Run tests with UI
  • pnpm test:coverage - Run tests with coverage report
  • pnpm aeo - Build and run automated export optimization

๐ŸŽจ Customization

Adding Work Experience

Edit the data/work.ts file to add new work experiences:

{
  company: 'Company Name',
  logo: '/img/logos/company.png',
  slug: 'company-slug', // Optional: for dedicated project pages
  roles: [
    {
      title: 'Job Title',
      subtitle: 'Optional subtitle',
      startDate: '2020',
      endDate: '2023', // Optional: omit for current role
    },
  ],
}

Adding Professional Licenses

Edit the data/licenses.ts file to add professional certifications:

{
  entity: 'Issuing Organization',
  name: 'License/Certification Name',
  credential: {
    type: 'License Type',
    number: 'License Number',
  },
  dates: {
    start: '2020',
    end: '2023',
  },
}

Adding Media Mentions

Edit the data/mentions.ts file to add press coverage:

{
  title: 'Article Title',
  description: 'Brief description',
  url: 'https://example.com/article',
  year: '2023',
}

Creating Work Project Pages

  1. Create a new directory in app/(pages)/work/[project-name]/
  2. Add page.tsx with the page component
  3. Add content.mdx with the project content
  4. Add project images to public/img/projects/[project-name]/

Updating Social Links

Edit data/links.ts to modify social and primary links:

export const socialLinks: Array<SocialLinkType> = [
  {
    href: 'https://linkedin.com/in/username',
    icon: IconBrandLinkedin,
    text: 'LinkedIn',
    label: 'LinkedIn Profile',
  },
  // ... more links
];

Custom MDX Components

The site includes rich MDX components in mdx-components.tsx:

  • Cover: Image with caption
  • Typography: Custom heading styles with auto-generated IDs
  • Code blocks: Syntax highlighting with Sugar High
  • Tables: Styled table components
  • Links: External link handling

Styling

The project uses Tailwind CSS 4 with custom CSS variables:

  • app/globals.css - Global styles and CSS variables
  • Custom font loading with Soehne font family
  • Dark/light mode support with CSS variables
  • Responsive design with mobile-first approach

๐Ÿš€ Deployment

This project is optimized for deployment on Vercel:

  1. Push to GitHub
  2. Connect to Vercel
  3. Configure environment variables:
    • OPENAI_API_KEY - Required for the AI chat assistant
  4. Deploy automatically

For other platforms:

pnpm build

The build output will be in the .next folder.

Environment Variables

Required for production:

  • OPENAI_API_KEY - OpenAI API key for the AI chat assistant

๐Ÿ“ฑ SEO & Social

The site includes comprehensive SEO optimization:

  • Custom OG Images: Automatically generated Open Graph images for social sharing
  • Meta Tags: Proper meta tags for all pages
  • Structured Data: Work experience and project data structured for search engines
  • Sitemap: Automatically generated sitemap
  • Twitter Cards: Optimized Twitter card support
  • llms.txt: LLM-friendly site description for AI assistants

๐ŸŽฏ Roadmap

Completed โœ…

  • Fix readme
  • Social links implementation
  • Custom OG image generation
  • OG header links
  • Domain setup and deployment
  • Professional licenses display
  • Media mentions section
  • llms.txt implementation

In Progress ๐Ÿšง

  • Analytics integration
  • Stack section with technologies used

Future Features ๐Ÿ”ฎ

  • Command menu (โŒ˜K) for quick navigation
  • Additional content sections
  • Blog/Articles section
  • Project case studies with detailed write-ups
  • Interactive project demos

๐Ÿ”ง Features in Detail

Animation System

  • Custom AnimateIn component with staggered animations
  • Motion-powered smooth transitions
  • Performance-optimized animations

Work Experience Display

  • Structured data in TypeScript
  • Company logos and role hierarchies
  • Date range handling for current and past roles
  • Optional project page linking

MDX Content System

  • Custom MDX components for rich content
  • Automatic heading ID generation
  • Image optimization with Next.js Image
  • Code syntax highlighting
  • Responsive typography

Theme System

  • Light/dark mode toggle
  • CSS custom properties for consistent theming
  • Tailwind CSS integration
  • Smooth theme transitions

Professional Information

  • Structured license and certification display
  • Media mentions with external links
  • Work experience with role progression
  • Social and professional links

๐Ÿ“„ License

This project is for personal use. Feel free to use as inspiration for your own portfolio.

About

Andrew Ambrosino's personal website

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/aa-io/site

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy