Skip to content

IanSkelskey/ianskelskey.github.io

Repository files navigation

OG Preview Image

Ian Skelskey — Portfolio v3.0

A modern, data-driven portfolio that showcases software and art projects with a clean, accessible UI. Built with React, Vite, and TypeScript, using Tailwind CSS for styling and TypeScript data files for content.

React Vite TypeScript Tailwind CSS React Router React Icons ESLint

Overview

  • Purpose: present software, game, and art projects with process and outcomes.
  • Mobile-first, responsive, and accessible (semantic HTML, ARIA, keyboard navigation, reduced motion support).
  • Dark/light theming via CSS custom properties and system preferences.
  • Content powered by TypeScript data files for type-safe, easy expansion and maintenance.

Features

  • Projects: filterable list with featured view, rich detail pages (images, mockups, carousels, video embeds, links).
  • About: profile with bio, experience timeline, expertise bar charts, and current learning focus.
  • Contact: social cards and sponsor section pulled from data.
  • Linked entries: skills, technologies, work history, and education each have their own detail pages and cross-link to related projects.
  • SEO: per-page document titles, scroll-to-top on navigation.

Live

https://ianskelskey.github.io/

Data-Driven Content

Edit site content in TypeScript:

  • Projects: src/data/projects/
  • Skills: src/data/skills.ts
  • Technologies: src/data/technologies.ts
  • Social links: src/data/socialLinks.ts
  • About/profile: src/data/about.ts
  • Homepage highlights: src/data/homepage.ts
  • Work history: src/data/work/
  • Education: src/data/education/
  • Timeline: src/data/timeline.ts

Add or edit entries and the UI updates automatically (cards, chips, badges, routes).

Getting Started

  1. Install dependencies:
    npm install
  2. Start the dev server:
    npm run dev

Scripts

Command Description
npm run dev Vite dev server
npm run build Production build
npm run preview Preview production build
npm run lint ESLint
npm run typecheck TypeScript no-emit type check
npm run validate-data Run data validation script
npm run prettier-write Format code with Prettier
npm run prettier-check Check formatting with Prettier
npm run verify Full pre-deploy check (prettier + validate + lint + typecheck + build)

🗂️ Structure (key folders)

📦 ianskelskey.github.io
├── 📁 src/
│   ├── 📄 pages/             — Route pages (Home, Projects, About, Contact, detail pages)
│   ├── 🧩 components/        — Reusable UI (cards, layout, timeline)
│   │   └── 🖼️  detail/        — Detail-page blocks (carousels, content renderer, media)
│   ├── 📊 data/              — TypeScript content (projects, skills, technologies, about, social)
│   │   ├── 🚀 projects/      — One file per project
│   │   ├── 💼 work/          — Work history entries
│   │   └── 🎓 education/     — Education entries
│   ├── 🏷️  types/             — Shared TypeScript types
│   ├── 🛠️  utils/             — Helpers (slug, resolvers, topSkills, etc.)
│   └── 🪝 hooks/             — Custom React hooks
└── 📁 public/
    └── 🖼️  assets/            — Images, thumbnails, and project media

Accessibility & Design

  • Semantic HTML5 with ARIA roles and labels where appropriate.
  • Keyboard focus styles and reduced motion support via prefers-reduced-motion.
  • Consistent spacing, typography, and elevation with CSS custom properties.
  • Dark/light mode driven by prefers-color-scheme.

Deployment

  • Build: npm run build
  • Preview: npm run preview
  • Deploy to GitHub Pages using your preferred workflow (e.g., Actions or manual gh-pages).

About

My portfolio — a data-driven showcase of software, game, and art projects built with React, TypeScript, Vite, and Tailwind CSS. Features responsive design, dark/light theming, and cross-linked skills, technologies, and work history.

Topics

Resources

Stars

Watchers

Forks

Contributors