- Build Tool: Webpack 5
- Framework: React 18
- Port: 8080
- Entry Point:
src/index.js - Features: Complex SVG animations, scroll-based scene transitions
- Build Tool: Vite 5
- Framework: React 18
- Port: 5173 (development)
- Entry Point:
src/main.jsx - Styling: Tailwind CSS + PostCSS
- Location:
/developer-playbook-ai-erafolder
albinotonnina.com/
├── src/ # Main portfolio site
│ ├── animation/ # SVG animations
│ ├── styles/ # Main styles
│ └── ...
├── webpack.config.babel.js # Main site webpack config
├── package.json # Root dependencies
├── vercel.json # NEW: Vercel deployment config
└── developer-playbook-ai-era/ # NEW: Book landing page
├── src/
│ ├── components/ # React components
│ │ ├── Hero.jsx
│ │ ├── Features.jsx
│ │ ├── About.jsx
│ │ └── CTA.jsx
│ ├── App.jsx
│ ├── main.jsx
│ └── index.css
├── package.json # Sub-project dependencies
├── vite.config.js # Vite configuration
├── tailwind.config.js # Tailwind configuration
├── postcss.config.js # PostCSS configuration
├── index.html # Entry HTML
└── README.md # Sub-project documentation
Created vercel.json in the root directory with:
- buildCommand: Builds the developer-playbook-ai-era sub-project
- installCommand: Installs root dependencies (yarn)
- outputDirectory: Points to
developer-playbook-ai-era/dist
This configuration ensures Vercel:
- Installs dependencies from the root
- Builds the Vite app in the sub-directory
- Serves the built output from the correct location
- Main site:
www.albinotonnina.com/ - Book landing page:
www.albinotonnina.com/developer-playbook-ai-era/
cd albinotonnina.com/
yarn dev
# Runs on localhost:8080cd albinotonnina.com/developer-playbook-ai-era/
yarn install
yarn dev
# Runs on localhost:5173The root vercel.json handles the complete build process. When deployed:
- Root dependencies are installed
- Vite build command runs for the sub-project
- Output is served from the correct path
- Speed: Much faster builds and dev server compared to Webpack
- Modern: Native ES modules, optimized for modern browsers
- Simplicity: Minimal configuration needed for a landing page
- Performance: Better code splitting and optimization out of the box
- Existing Setup: Already heavily optimized for complex SVG animations
- Custom Loaders: SVG ID processing and animation system
- Stability: Well-tested configuration for the portfolio
- Separation of Concerns: Different projects can use different tools
- React 18
- Prettier
- ESLint
- Webpack 5
- D3 Interpolate
- SVG Filter
- Custom animation libraries
- Vite 5
- Tailwind CSS
- PostCSS
-
Install dependencies in the new sub-project:
cd developer-playbook-ai-era yarn install -
Test locally:
yarn dev
-
Build and verify:
yarn build
-
Commit and push to GitHub
-
Deploy to Vercel (should auto-detect from vercel.json)
vercel.json- Deployment configuration for sub-directory builds
vite.config.js- Vite bundler configurationtailwind.config.js- Tailwind CSS theme and pluginspostcss.config.js- PostCSS processing pipeline.eslintrc- Code linting rules.prettierrc- Code formatting rules.gitignore- Git exclusions
The Vite config includes:
- Code Splitting: Vendors separated into their own chunk
- Terser Minification: Production code minimized
- Source Maps: Disabled in production for smaller bundle size
- Output Directory:
dist/relative to sub-project
- Sub-directory builds are fully supported
- Automatic detection of Vite projects
- Zero-config deployment with vercel.json
- Automatic redirects and SPA routing if needed
- The landing page can be served from a subdomain
- Or from a sub-path like shown above
- DNS/routing managed by Vercel
Created: November 13, 2025 Status: Ready for development