A modern, accessible, and performance-optimized portfolio template for developers.
- Modern React Architecture - Built with React hooks, context, and performance monitoring
- Responsive Design - Looks great on all devices from mobile to desktop
- Optimized Performance - Lazy loading, code splitting, memoization, and FPS tracking
- Accessibility First - WCAG compliant with keyboard navigation support
- Customizable - Easy to customize with design tokens and a central portfolio data file
- Component Library - Reusable UI components with comprehensive documentation
- Enhanced Type Checking - PropTypes with TypeScript static analysis
- Environment Variable Management - Secure API key handling
- Detailed Documentation - Architecture guides, component patterns, and best practices
- Comprehensive Testing - Unit tests with consistent patterns
These instructions will get you a copy of the project up and running on your local machine.
You'll need Git, Node.js and Yarn installed on your computer.
[email protected] or higher
[email protected] or higher
[email protected] or higher
# Clone this repository
$ git clone https://github.com/DapperDivers/developer-portfolio.git
# Go into the repository
$ cd developer-portfolio
# Install dependencies
$ yarn
# Start development server
$ yarn dev
- About Me & Summary
- Skills & Proficiencies
- Education History
- Work Experience
- Projects Showcase
- Testimonials & Feedback
- GitHub Profile & Contact
Edit the src/portfolio.js
file to update your personal information, skills, experience, projects, etc.
// src/portfolio.js
const greeting = {
title: "Hello! I'm Derek Mackley",
subtitle: "A passionate Full Stack Developer with a focus on security",
// ...
};
// Update other sections similarly
The project uses CSS variables for theming. Edit the design tokens in src/assets/css/design-tokens.css
:
:root {
/* Color tokens */
--color-primary: #0062cc;
--color-secondary: #6c757d;
/* Typography tokens */
--font-family-base: 'Roboto', sans-serif;
--font-family-heading: 'Poppins', sans-serif;
/* Spacing tokens */
--spacing-1: 0.25rem;
--spacing-2: 0.5rem;
/* ... */
}
import { Button } from '../components/ui/Button';
// Primary button
<Button>Click Me</Button>
// Secondary button with icon
<Button
variant="secondary"
icon="mdi:github"
>
View on GitHub
</Button>
// Link button
<Button
variant="link"
href="https://example.com"
target="_blank"
>
External Link
</Button>
import { Card } from '../components/ui/Card';
<Card
title="Project Title"
subtitle="Project Subtitle"
hoverable
shadow
animation={{
initial: { opacity: 0 },
animate: { opacity: 1 },
transition: { duration: 0.5 }
}}
>
<p>Card content goes here</p>
{/* With footer */}
<div slot="footer">
<Button>View Project</Button>
</div>
</Card>
import { Section } from '../components/layout/Section';
<Section
id="about"
title="About Me"
subtitle="Learn more about my background"
icon="mdi:account"
background="light"
>
<p>Section content goes here</p>
</Section>
import { LazyImage } from '../components/ui/LazyImage';
<LazyImage
src="/path/to/image.jpg"
alt="Description of image"
aspectRatio="16:9"
lowResSrc="/path/to/thumbnail.jpg"
/>
# Run all tests
$ yarn test
# Run tests with coverage
$ yarn test:coverage
# Run tests in watch mode
$ yarn test:watch
# Type checking
$ yarn typecheck
# Lint and type check
$ yarn verify
The portfolio is fully responsive with the following breakpoints:
- Mobile: < 576px
- Tablet: 576px - 992px
- Desktop: > 992px
This project prioritizes accessibility with:
- Semantic HTML
- ARIA attributes
- Keyboard navigation
- Color contrast compliance
- Screen reader support
- Skip to content link
The project includes comprehensive documentation in the /docs
directory:
- Architecture Guides: System architecture, project structure, performance optimization
- Component Guides: Detailed information on component patterns and development workflows
- Testing Guides: Best practices for component testing and TypeScript integration
- Usage Guides: How to work with environment variables, type checking, and customization
Key documents:
- System Architecture - Overall architecture and patterns
- Component Development Checklist - Guidelines for component creation
- Type Checking Guide - TypeScript integration approach
- Environment Configuration - Working with environment variables
- React - UI library
- Vite - Build tool
- Tailwind CSS - Utility-first CSS framework
- TypeScript - Static type checking
- Framer Motion - Animation library
- Jest & Testing Library - Testing
- Storybook - Component development environment
- ESLint & Prettier - Code quality
- Iconify - Icon system
- Yarn - Package manager
/
βββ docs/ # Documentation
β βββ architecture/ # Architecture guides
β βββ guides/ # Usage guides
β βββ testing/ # Testing documentation
β βββ components/ # Component documentation
βββ public/ # Static assets
βββ src/
β βββ assets/ # CSS, images, fonts
β β βββ css/ # CSS files including Tailwind
β β βββ lottie/ # Animation files
β β βββ images/ # Image assets
β βββ components/ # Reusable components
β β βββ ui/ # Base UI components
β β βββ layout/ # Layout components
β βββ containers/ # Page section containers
β βββ context/ # React context providers
β βββ hooks/ # Custom React hooks
β βββ stories/ # Storybook stories
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions
β βββ portfolio.js # Portfolio data
βββ scripts/ # Build and generator scripts
βββ memory-bank/ # Development progress tracking
βββ jest.config.cjs # Jest configuration
βββ tsconfig.json # TypeScript configuration
βββ tailwind.config.cjs # Tailwind configuration
βββ package.json # Dependencies and scripts
Derek Mackley
- Website: derekmackley.com
- GitHub: @DapperDivers
- LinkedIn: dmackley
Contributions, issues and feature requests are welcome! This project uses Yarn as the package manager and follows specific development practices:
-
Getting Started:
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/developer-portfolio.git
- Install dependencies:
yarn
-
Development Workflow:
- Create a new branch:
git checkout -b feature/your-feature-name
- Follow the Component Development Checklist
- Run tests:
yarn test
- Verify code quality:
yarn verify
(runs both lint and type checking)
- Create a new branch:
-
Submitting Changes:
- Commit your changes:
git commit -m "feat: add your feature description"
- Push to your fork:
git push origin feature/your-feature-name
- Submit a Pull Request
- Commit your changes:
-
Code Standards:
- Follow existing code style and patterns
- Include tests for new features
- Update documentation as needed
- Ensure all tests pass and type checking succeeds
This project is MIT licensed.
Give a βοΈ if this project helped you!