albinotonnina.com
Personal portfolio website with interactive animations and visual storytelling. Built with React, featuring modular scene management, comprehensive testing, and smooth cross-device performance.
Top Related Projects
:page_facing_up::briefcase::tophat: A simple Jekyll + GitHub Pages powered resume template.
A modern static resume template and theme. Powered by Jekyll and GitHub pages.
A Bootstrap 4 resume/CV theme created by Start Bootstrap
Print-friendly, minimalist CV page
Quick Overview
albinotonnina.com is a personal portfolio website for Albino Tonnina, a creative developer. The repository contains the source code for the website, which features an interactive and animated design showcasing Albino's work and skills. The site is built using modern web technologies and focuses on providing a unique user experience.
Pros
- Highly interactive and visually appealing design
- Utilizes modern web technologies and best practices
- Responsive layout that works well on various devices
- Showcases creative coding and animation skills
Cons
- Complex codebase may be challenging for beginners to understand
- Heavy use of animations might impact performance on older devices
- Limited documentation for customization or reuse
- Specific to the developer's personal brand, making it less adaptable for others
Code Examples
Since this is a personal website project rather than a code library, we'll skip the code examples section.
Getting Started
As this is a personal website project and not intended for general use as a library or framework, there isn't a traditional "getting started" section. However, if you're interested in running the project locally or using it as inspiration for your own portfolio, you can follow these general steps:
-
Clone the repository:
git clone https://github.com/albinotonnina/albinotonnina.com.git -
Install dependencies:
cd albinotonnina.com npm install -
Run the development server:
npm run dev -
Open your browser and navigate to
http://localhost:3000to view the site.
Note that this project is tailored to Albino Tonnina's personal brand and may require significant modifications to adapt it for your own use.
Competitor Comparisons
:page_facing_up::briefcase::tophat: A simple Jekyll + GitHub Pages powered resume template.
Pros of resume-template
- Specifically designed for creating resumes, providing a focused and tailored solution
- Easily customizable with a simple YAML-based configuration
- Includes print-friendly styles for better hard copy output
Cons of resume-template
- Less visually striking compared to albinotonnina.com's interactive design
- Limited to static content, lacking dynamic elements or animations
- May require more manual formatting for complex layouts
Code Comparison
resume-template (_config.yml):
name: Your Name
title: Your Job Title
email: your.email@example.com
phone: (555) 555-5555
albinotonnina.com (package.json):
"scripts": {
"start": "webpack-dev-server --config webpack.dev.js",
"build": "webpack --config webpack.prod.js",
"deploy": "npm run build && gh-pages -d dist"
}
The code comparison highlights the different approaches: resume-template uses a simple configuration file for content, while albinotonnina.com employs a more complex build process with webpack for enhanced interactivity and animations.
A modern static resume template and theme. Powered by Jekyll and GitHub pages.
Pros of modern-resume-theme
- Easy to customize with a simple YAML configuration file
- Responsive design that works well on various devices
- Built-in support for multiple color schemes
Cons of modern-resume-theme
- Less visually striking compared to albinotonnina.com's animated design
- Limited to a single-page resume format
- Fewer interactive elements and animations
Code Comparison
albinotonnina.com (React-based):
const Scene = ({ children }) => (
<div className="scene">
<div className="scene__content">{children}</div>
</div>
);
modern-resume-theme (Jekyll-based):
{% assign content_array = content | split: site.excerpt_separator %}
{% if content_array.size > 1 %}
{{ content_array | first }}
{% else %}
{{ content }}
{% endif %}
The code snippets highlight the different technologies used: albinotonnina.com uses React for dynamic content, while modern-resume-theme relies on Jekyll's templating system for static site generation. This difference reflects the overall approach of each project, with albinotonnina.com offering a more interactive experience and modern-resume-theme focusing on simplicity and ease of use.
A Bootstrap 4 resume/CV theme created by Start Bootstrap
Pros of startbootstrap-resume
- Easy to use and customize, with a clean and professional design
- Responsive layout that works well on various devices
- Well-documented and maintained, with regular updates
Cons of startbootstrap-resume
- Less unique and creative compared to albinotonnina.com's interactive design
- Limited in terms of advanced animations and user interactions
- May require more customization to stand out from other resumes using the same template
Code Comparison
albinotonnina.com (JavaScript):
const animate = (el, props, duration) => {
return new Promise(resolve => {
TweenMax.to(el, duration, {
...props,
onComplete: resolve
})
})
}
startbootstrap-resume (HTML/CSS):
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top" id="sideNav">
<a class="navbar-brand js-scroll-trigger" href="#page-top">
<span class="d-block d-lg-none">Clarence Taylor</span>
<span class="d-none d-lg-block">
<img class="img-fluid img-profile rounded-circle mx-auto mb-2" src="img/profile.jpg" alt="">
</span>
</a>
<!-- Navigation items -->
</nav>
The code comparison shows that albinotonnina.com focuses on custom animations using JavaScript libraries, while startbootstrap-resume relies on HTML and CSS for layout and styling. This reflects the different approaches of the two projects, with albinotonnina.com offering a more interactive and unique experience, and startbootstrap-resume providing a straightforward and easily customizable template.
Print-friendly, minimalist CV page
Pros of cv
- Simple and clean design, focusing on content readability
- Easy to customize and deploy using Next.js and Vercel
- Responsive layout that works well on various devices
Cons of cv
- Less interactive and visually engaging compared to albinotonnina.com
- Limited animation and dynamic elements
- Fewer sections and less detailed information about the developer's work
Code Comparison
cv (TypeScript):
const Section: React.FC<SectionProps> = ({ title, children }) => (
<section className="mb-8">
<h2 className="font-bold text-2xl mb-4">{title}</h2>
{children}
</section>
);
albinotonnina.com (JavaScript):
const Section = styled.section`
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
`;
The cv repository uses TypeScript and React components with Tailwind CSS classes for styling, while albinotonnina.com employs JavaScript with styled-components for a more custom CSS approach. cv focuses on simplicity and ease of use, whereas albinotonnina.com prioritizes a unique and interactive user experience with complex animations and scroll-based interactions.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
albinotonnina.com
Interactive portfolio website showcasing creative web development and animation techniques
Live Site: www.albinotonnina.com
⨠Features
- Interactive SVG Animations - Complex scene transitions with scroll-based animations
- Responsive Design - Optimized for desktop and mobile viewing
- Performance Optimized - Webpack 5 with code splitting and asset optimization
- Modern React - Built with React 18 and modern JavaScript
- Custom Animation Engine - Scroll-triggered animations with D3 interpolation
- Advanced SVG Rendering - Preserved gradient definitions and complex illustrations
ð License
This portfolio is licensed under CC BY-NC-ND 4.0. You are welcome to view, run, and experiment with the code locally for learning purposes. However, you may not modify and redistribute it, such as using it as your own portfolio by changing the name or content.
ð Quick Start
Prerequisites
- Node.js
>=22.x - Yarn (recommended) or npm
Installation
# Clone the repository
git clone https://github.com/albinotonnina/albinotonnina.com.git
cd albinotonnina.com
# Install dependencies
yarn install
Development
# Start development server
yarn dev
# Open browser to http://localhost:8080
The development server includes:
- Hot module replacement
- Fast refresh for React components
- Source maps for debugging
- Optimized SVG processing
- Animation Debugger - Press
Ctrl/Cmd + Dto toggle real-time animation info
Recommended Development Setup
For the best development experience, I recommend using VS Code with the following extensions:
- Stylelint - CSS linting integration
- Prettier - Code formatting
- Tailwind CSS IntelliSense - CSS class completion
- CSS Peek - Navigate to CSS definitions
- HTML CSS Class Completion - Auto-complete CSS classes
The project includes VS Code configuration for:
- â Format on save for consistent code style
- â CSS syntax highlighting with proper language association
- â Integrated linting with error highlighting
- â Auto-fix on save for Stylelint issues
Production Build
# Build for production
yarn build
# Analyze bundle size
yarn analyze
Testing
# Run tests
yarn test
# Run tests in watch mode
yarn test --watch
Code Quality
# Lint JavaScript files
yarn lint
# Fix auto-fixable JavaScript issues
yarn lint:fix
# Lint CSS files
yarn lint:css
# Fix auto-fixable CSS issues
yarn lint:css:fix
# Format all files with Prettier
yarn format
ð ï¸ Available Scripts
| Command | Description |
|---|---|
yarn dev | Start development server with hot reload |
yarn build | Build for production |
yarn analyze | Analyze bundle size |
yarn test | Run test suite |
yarn lint | Lint JavaScript files |
yarn lint:fix | Fix auto-fixable JavaScript issues |
yarn lint:css | Lint CSS files |
yarn lint:css:fix | Fix auto-fixable CSS issues |
yarn format | Format all files with Prettier |
ð ï¸ Tech Stack
Frontend
- React 18 - UI library with modern hooks
- Webpack 5 - Module bundler with advanced optimization
- Babel - JavaScript compiler with modern syntax support
- PostCSS - CSS processing with modern features
Animation & Graphics
- D3 Interpolate - Smooth animation transitions
- SVG Filter - Dynamic SVG effects and filters
- Custom Animation Engine - Scroll-based scene transitions
- Complex SVG Illustrations - Hand-crafted vector graphics
Development Tools
- ESLint - Code linting with modern Babel parser and comprehensive rules
- Prettier - Code formatting with consistent style
- Stylelint - CSS linting with PostCSS support
- Jest - Testing framework
- Webpack Bundle Analyzer - Bundle size analysis
- VS Code Integration - Configured for optimal development experience
ð Project Structure
src/
âââ scene/ # Main interactive scene components
â âââ index.js # Scene component with SVG rendering
â âââ scene.svg # Complex interactive SVG illustration
â âââ transitions.js # Animation definitions
â âââ tickFunction.js # Animation engine
â âââ animationDebugger.js # Development animation debugger
â âââ calculateStyles.js # Animation style calculations
â âââ transition-utilities.js # Animation utility functions
âââ styles/ # CSS and styling
â âââ main.css # Main application styles
â âââ ...
âââ subtitles/ # Text content and subtitles
âââ images/ # Static assets
âââ utils/ # Utility functions
â âââ svg-id-processor.js # SVG processing utilities
âââ index.js # Application entry point
# Configuration files
âââ .eslintrc # ESLint configuration
âââ .prettierrc # Prettier configuration
âââ .stylelintrc # Stylelint configuration
âââ webpack.config.babel.js # Webpack configuration
âââ jest.config.js # Jest test configuration
âââ .vscode/ # VS Code workspace configuration
âââ settings.json # Editor settings
âââ extensions.json # Recommended extensions
ð¨ Key Technical Achievements
SVG Animation System
- Scroll-triggered animations with precise timing control
- Gradient preservation during complex transformations
- Performance optimized rendering for large SVG files
- Cross-browser compatible animation engine
Modern React Architecture
- React 18 with createRoot API
- Functional components with hooks
- Performance optimized with React.memo
- Clean separation of concerns
Advanced Webpack Configuration
- Development/Production optimized builds
- Code splitting for optimal loading
- Asset optimization with modern loaders
- SVG processing with @svgr/webpack
- Fast development with filesystem caching
ð Known Issues & Solutions
SVG Gradient Rendering
The project includes custom solutions for preserving SVG gradient stop-color attributes during animations. The animation system has been modified to prevent opacity inheritance issues that could break gradient definitions.
� Development & Debugging
Animation Debugger
The project includes a powerful real-time animation debugger to help understand and modify the complex scene transitions:
Toggle Debugger: Press Ctrl/Cmd + D in the browser
Features:
- ð Real-time timing and progress information
- ð Current scene and animation state
- ð Complete scene timeline with status indicators
- ð¯ List of currently active animated elements
- ð Scene-by-scene breakdown with timing details
Console Commands:
// Available in browser console
animationDebugger.jumpToScene("company"); // Jump to specific scene
animationDebugger.listScenes(); // Show all available scenes
animationDebugger.exportState(); // Export current state as JSON
animationDebugger.logState(); // Log detailed state info
For detailed debugging information, see ANIMATION_DEBUG.md.
Development Best Practices
The project follows modern development practices:
Code Quality Standards:
- All JavaScript follows ESLint rules with modern Babel parser
- CSS follows Stylelint standards with PostCSS support
- Consistent formatting enforced by Prettier
- Comprehensive test coverage for utility functions
Development Workflow:
- Before committing, run
yarn lintandyarn lint:cssto check for issues - Use
yarn formatto ensure consistent code formatting - Fix linting issues with
yarn lint:fixandyarn lint:css:fixwhen possible - Test changes thoroughly using the animation debugger
- Maintain clean code with proper separation of concerns
File Organization:
- Animation logic separated into focused modules
- Utility functions extracted for reusability
- CSS organized with clear naming conventions
- Test files co-located with source code
Making Changes
- Use the debugger to understand current animation state
- Modify timing in the
SCENE_TIMINGobject intransitions.js - Add new animations using the existing generator patterns
- Test changes with the real-time debugger feedback
Project Status â
This project has been successfully modernized with the following improvements:
â Completed Modernization
- React 18 with latest features and concurrent mode support
- Webpack 5 with improved bundling and tree-shaking
- Modern build tools (Babel 7, PostCSS, CSS optimization)
- Animation system refactor for improved maintainability
- Development tooling with hot module replacement and source maps
â Animation Debugging System
- Real-time animation debugger available in development mode only
- Toggle with Ctrl/Cmd+D to show/hide the debug overlay
- Zero production overhead - debug code is completely excluded from production builds
- Console API available at
window.animationDebuggerin development
â Bundle Optimization
- Production build size reduced by ~88% (181KB â 23KB) through effective tree-shaking
- Development-only features properly excluded from production
- SVG optimizations with proper gradient and animation preservation
â Code Quality & Development Experience
- ESLint with modern Babel parser and comprehensive linting rules
- Prettier for consistent code formatting across the project
- Stylelint for CSS linting with PostCSS and modern CSS support
- VS Code integration with proper syntax highlighting and format-on-save
- Automated formatting and linting with pre-configured scripts
- Development workflow optimized for modern JavaScript/CSS development
�ð License
This project is licensed under CC BY-NC-ND 4.0.
You are free to:
- Share â copy and redistribute the material in any medium or format
Under the following terms:
- Attribution â You must give appropriate credit
- NonCommercial â You may not use the material for commercial purposes
- NoDerivatives â You may not distribute modified material
ð¨âð» Author
Albino Tonnina
- Website: albinotonnina.com
- Email: albinotonnina@gmail.com
- LinkedIn: linkedin.com/in/albinotonnina
- GitHub: @albinotonnina
ð¤ Contributing
While this is a personal portfolio project, feedback and suggestions are welcome! Please feel free to open an issue or reach out directly.
Built with â¤ï¸ and lots of â
Top Related Projects
:page_facing_up::briefcase::tophat: A simple Jekyll + GitHub Pages powered resume template.
A modern static resume template and theme. Powered by Jekyll and GitHub pages.
A Bootstrap 4 resume/CV theme created by Start Bootstrap
Print-friendly, minimalist CV page
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot