➜ https://connor1219.github.io/
This is my personal portfolio website built with Next.js, React, and TypeScript. Features an interactive project carousel with dual modes showcasing both my software development projects and cool fish I've caught.
The website features a dynamic project carousel that displays different content based on the selected mode:
- Developer Mode: Showcases software development projects including web applications, systems programming, and open-source contributions
- Fishing Mode: Displays cool fish I've caught
The portfolio is fully responsive and optimized for both desktop and mobile viewing:
- Desktop layout with side-by-side navigation arrows and centered content
- Mobile-optimized layout with inline navigation controls
- Smooth transitions and fade effects between project slides
- Touch-friendly interface elements
Built with modern web technologies for optimal performance:
- Next.js 15 for server-side rendering and static site generation
- React 19 with TypeScript for type-safe component development
- Material-UI (MUI) for consistent design system and components
- React Icons for scalable vector icons
- Emotion for CSS-in-JS styling
The website consists of a main landing page with two primary sections:
- Left Panel: Personal information including name, current role, and social media links (LinkedIn, GitHub)
- Right Panel: Interactive project carousel displaying either development projects or fishing content
Users can toggle between two distinct modes by clicking the icon in the bottom-right corner:
- Developer Mode (default): Shows software projects with descriptions and links
- Fishing Mode: Displays cool fish I've caught
When switching modes, the carousel smoothly transitions with a fade effect, and the title updates to reflect the current context ("Software Developer" or "Fisherman").
- Use the left and right arrow buttons on either side of the project card to navigate
- Click on the dots below the carousel to jump directly to a specific project
- Hover effects provide visual feedback for interactive elements
- Compact arrow controls are positioned inline with navigation dots
- Optimized touch targets for easy interaction
Each project card displays:
- Title: Project or catch name
- Description: Detailed information about the project or fishing experience
- Image: Photos showcasing the work or catch
- Links: External links to live projects, repositories, or additional resources
Ensure you have Node.js (v18 or higher) and Yarn installed on your system.
- Clone the repository:
git clone https://github.com/connor1219/connor1219.github.io.git
cd connor1219.github.io- Install dependencies:
yarn install- Start the development server:
yarn devThe application will be available at http://localhost:3000.
- Development mode:
yarn dev- Runs with hot reloading - Production build:
yarn build- Creates optimized production build - Start production server:
yarn start- Serves the production build locally - Linting:
yarn lint- Runs ESLint to check code quality
src/
├── components/ # Reusable React components
│ ├── ProjectCarousel.tsx # Main carousel component
│ └── ProjectInfoCard.tsx # Individual project card
├── data/ # Static data and content
│ └── projects.ts # Project and fishing data
└── pages/ # Next.js pages
├── _app.tsx # App configuration
└── index.tsx # Main landing page
To add new projects or fishing content:
- Open
src/data/projects.ts - Add new entries to either the
GENERALorFISHINGcategory - Include required fields:
id,imageSrc,title,body, and optionallink - Add corresponding images to the
public/icon/directory
- Colors and themes: Modify MUI theme settings in
_app.tsx - Layout adjustments: Update responsive breakpoints and spacing in component files
- Content: Edit project data in
src/data/projects.ts - Social links: Update LinkedIn and GitHub URLs in
index.tsx
To test the application locally:
- Run
yarn devto start the development server - Navigate to
http://localhost:3000 - Test both desktop and mobile layouts using browser developer tools
- Verify carousel functionality in both modes
- Test all external links and navigation elements