This is the public portfolio site for Andrew Pucci, a UX Designer with development skills. The site showcases professional work, resume, and contact information.
- Static Site Generator: Eleventy
- Frontend Framework: Bootstrap
- Styling: Sass with PostCSS (Autoprefixer, cssnano)
- Icons: Font Awesome
- Testing:
- Unit Tests: Vitest
- E2E Tests: Playwright
- Deployment: Netlify
- Node Version: 22.x (see
.nvmrcandpackage.jsonfor exact versions)
andrewpucci.com/
├── .eleventy.js # Eleventy configuration
├── src/
│ ├── site/ # Content and templates
│ │ ├── _data/ # Global data files
│ │ ├── _layouts/ # Page layouts (Nunjucks)
│ │ ├── assets/ # Static assets (images, fonts, files)
│ │ ├── portfolio/ # Portfolio project pages
│ │ ├── resume/ # Resume content and entries
│ │ └── index.md # Home page
│ └── utils/ # Custom filters, shortcodes, and utilities
├── tests/
│ ├── unit/ # Unit tests for utilities and filters
│ └── e2e/ # End-to-end tests with Playwright
├── dist/ # Build output (generated)
└── playwright-report/ # Test reports (generated)
- Node.js 22.x or higher (use
nvm useto switch to the correct version) - npm 8.x or higher
-
Clone the repository and navigate to the project directory:
git clone https://github.com/andrewpucci/andrewpucci.com.git cd andrewpucci.com -
Install Node.js (if using nvm):
nvm use
-
Install dependencies:
npm ci
-
Set up environment variables:
cp .env-sample .env
Edit
.envand setROOT_URLto your local or deployed URL.
Start the development server with live reload:
npm run devThe site will be available at http://localhost:8080.
Build the optimized production site:
npm run prodThe built site will be in the dist/ directory.
Unit tests cover custom Eleventy filters, shortcodes, and utility functions.
Run all unit tests:
npm testRun tests in watch mode:
npm run test:watchGenerate coverage report:
npm run test:coverageRun tests with UI:
npm run test:uiSee tests/unit/README.md for more details.
E2E tests verify critical user flows and page content using Playwright.
Run all E2E tests:
npm run test:e2eRun E2E tests in UI mode (for debugging):
npm run test:e2e:uiView test report:
npm run test:e2e:reportSee tests/e2e/README.md for more details.
Run both unit and E2E tests (CI mode):
npm run test:ciThe site is automatically deployed to Netlify when changes are pushed to the main branch.
- Build Command:
npm run prod - Publish Directory:
dist - Node Version: 22.x (specified in
.nvmrc)
See netlify.toml for detailed configuration.
GitHub Actions runs automated tests on:
- All pull requests to
main - All pushes to
main
The CI pipeline:
- Installs dependencies
- Runs unit tests
- Runs E2E tests with retries
- Uploads test reports as artifacts
See .github/workflows/ci.yml for the full workflow.
- Responsive Design: Mobile-first design using Bootstrap 5
- Performance Optimized:
- Asset revisioning for cache busting
- Image optimization with
@11ty/eleventy-img - HTML/CSS/JS minification
- PostCSS with Autoprefixer and cssnano
- SEO Friendly: Proper meta tags, semantic HTML, and structured data
- Accessibility: ARIA labels, semantic markup, keyboard navigation
- Security: Content Security Policy headers via Netlify
- Create a feature branch from
main - Make your changes
- Run tests locally:
npm run test:ci - Commit your changes with a descriptive message
- Push to GitHub and create a pull request
- Wait for CI checks to pass
- Merge to
mainafter review
- Create a new Markdown file in
src/site/portfolio/ - Add frontmatter with project metadata
- Write project content using Markdown and Nunjucks shortcodes
- Add project images to
src/site/assets/images/portfolio/
- Edit Sass files in
src/site/assets/styles/ - The build process automatically compiles and optimizes CSS
- Use Bootstrap variables for consistency
- Add your filter/shortcode to
src/utils/filters.jsorsrc/utils/async-shortcodes.js - Register it in
.eleventy.js - Add unit tests in
tests/unit/
- "Cannot find module": Run
npm cito reinstall dependencies - Sass compilation errors: Check for syntax errors in
.scssfiles - Image optimization errors: Ensure images exist in the specified paths
- E2E tests failing locally: Ensure dev server is running on port 8080
- Flaky E2E tests: Check for async operations and add proper waits
- Unit test failures: Verify that utility functions match expected behavior
GPL-3.0 - See LICENSE for details.
For questions or feedback, visit andrewpucci.com or connect on LinkedIn.