Skip to content

danmolloy/fio-kelly

Repository files navigation

Personal Website

Overview

This is a personal website for a classical musician, designed to engage concert promoters and audience members. It features a biography, photo gallery, links to audio recordings, and a contact form.

The project emphasizes UI/UX design, performance, and accessibility, showcasing modern frontend development.

Features

User Experience

  • Contact Form: Fully validated with clear error messages and user feedback for a seamless experience.
  • Responsive Design: Built mobile-first, with unique mobile-specific features such as a fly-out menu and dynamic photo placement.
  • Disappearing Header: Header hides on scroll and reappears on upward scroll, improving content focus while remaining accessible.
  • Interactive Experience:
    • Smooth scrolling with React Scroll on menu item select
    • Transforming mobile menu icon that enhances visual interactivity
    • Subtle parallax scrolling on images adds depth and engagement

Technical Overview

Performance Optimization

Although essentially a static website, measures have been taken to improve performance. This includes:

  • All images use the Next.js Image Component for lazy loading and optimized performance.
  • next/font used for all typography to eliminate external font requests.
  • Performance monitored via Google Lighthouse and Vercel Insights, ensuring consistently fast load times.

SEO

  • Utilised next/meta for improved SEO and web shareability.
  • Regularly verified via Google Lighthouse, consistently scoring 100.

Technologies Used

  • Framework & Language: Next.js 15, TypeScript
  • Styling: Tailwind CSS
  • Forms & Email: Formik, Yup, AWS SES
  • Testing & Monitoring: Jest, React Testing Library, Sentry
  • Animations & Interactivity: React Spring, React Scroll, Framer Motion
  • Code Quality: ESLint, Prettier

Testing

  • Achieves 86.31% unit test coverage, ensuring UI consistency and reliability.
  • Utilizes Jest matchers (.toBe, .toEqual, .toBeInTheDocument) and snapshot testing for predictable output.
  • Sentry monitors runtime errors, helping maintain a stable production experience.
  • Manual testing across multiple screen sizes complements automated testing.

Accessibility

Designed to meet WCAG 2.0 standards for an inclusive experience:

  • Semantic HTML: Improves navigation for screen readers.
  • Keyboard Navigation: Entire site accessible without a mouse.
  • Alt Text: All images have descriptive alternative text.
  • Color Contrast: Meets WCAG guidelines for readability.
  • Focus Management: Visible focus indicators for keyboard users.
  • Accessible Forms: Clear labels and error messages for all inputs.
  • Tested regularly with Google Lighthouse, ESLint jsx-a11y, and Chrome DevTools, scoring 100/100 in accessibility.

Continuous Integration

The project includes automated testing and linting via GitHub Actions on pull requests to the main branch.

  • Lint & Formatting Checks: Prettier and ESLint are run automatically.
  • Automated Testing: Jest tests run in CI mode, ensuring reliability across environments.
  • Node.js Setup & Dependency Caching: Uses Node 18 and caches dependencies for faster workflow runs.

Credits

Designed and developed entirely by Daniel Molloy.

About

Responsive and accessible website for a professional musician built with NextJS, Typescript and Tailwind CSS. Features interactive UI elements, automated CI with GitHub Actions, Jest test coverage.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors