Building at the intersection of AI and education. Practical, explainable systems for real people.
EducationTypeScript · CSSGitHub @JuiecOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A modern, responsive portfolio website built with React 19, Vite, and Tailwind CSS v4. Showcases machine learning engineering work, educational technology projects, and design-driven development.
Live: Deployed on Vercel
clamp()@tailwindcss/vite pluginsrc/
├── App.tsx # Root component, scroll-snap engine, utilities
├── main.tsx # React entry point
├── index.css # Global styles, Tailwind import, animations
├── vite-env.d.ts # Vite environment types
│
├── components/ # Section and UI components
│ ├── Hero.tsx # Hero section with headline and CTA buttons
│ ├── Mission.tsx # About section with tabbed interface
│ ├── Projects.tsx # Portfolio grid with expandable cards
│ ├── Skills.tsx # Skill marquee with animated tracks
│ ├── Contact.tsx # Contact section with social links and actions
│ ├── Nav.tsx # Navigation with Three.js logo
│ ├── Eyebrow.tsx # Section subtitle component
│ └── SectionHeading.tsx # Reusable section heading
│
└── hooks/ # Custom React hooks
└── useBreakpoint.ts # Responsive breakpoint logic
Config files:
├── vite.config.ts # Vite configuration with React plugin
├── tsconfig.json # TypeScript configuration
├── package.json # Dependencies and scripts
└── .mise.toml # Toolchain versions (Node.js, pnpm)
The useBreakpoint hook provides mobile-first responsive flags:
window.innerWidth ≤ 480px (phone portrait)window.innerWidth ≤ 768px (phone landscape / small tablet)window.innerWidth ≤ 1024px (tablet)All sections use consistent, fluid padding:
72px 20px 100px (top/bottom/sides)90px 28px 100px100px 64px 64pxTypography scales with clamp() for fluid responsiveness:
fontSize: clamp(34px, 10vw, 52px) scales from 34px to 52px as viewport grows# Clone the repository
git clone https://github.com/Juiec/Juice.github.io.git
cd Juice.github.io
# Install dependencies
pnpm install
# Start development server (runs on 0.0.0.0:8443)
pnpm dev
# Build for production
pnpm build
# Preview production build
pnpm preview
# Format code
pnpm format
Create a .env.local file for social and contact links:
VITE_GITHUB_HANDLE=@username
VITE_GITHUB_URL=https://github.com/username
VITE_LINKEDIN_HANDLE=@username
VITE_LINKEDIN_URL=https://linkedin.com/in/username
[email protected]
VITE_WHATSAPP_NUMBER=+1234567890
VITE_WHATSAPP_URL=https://wa.me/1234567890
VITE_RESUME_PATH=/resume.pdf
The project uses Tailwind CSS v4 with the @tailwindcss/vite plugin:
src/index.css imports Tailwind: @import 'tailwindcss';tailwind.config.js or PostCSS config neededsrc/index.cssKey CSS classes defined in src/index.css:
.font-display, .font-body — Font family helpers.eyebrow — Small uppercase labels (13px).section-heading — Fluid section titles (28px–52px).btn-primary, .btn-outline — Button styles with hover effects.card — Card component with shadow and hover elevation.marquee-left, .marquee-right, etc. — Skill scroll animationsVite's HMR is enabled on 0.0.0.0:8443. Changes to source files are instantly reflected in the browser.
# Development build (faster, includes source maps)
pnpm dev
# Production build (optimized, minified)
pnpm build
# Output: dist/ folder ready for deployment
Bundle size: ~733 KB (minified), ~197 KB (gzip)
package.json)max-height animationtransform/opacity for GPU accelerationThis project is deployed on Vercel with automatic builds from main branch.
# Deploy (automatic on git push to main)
pnpm build
# Output in dist/ is deployed to production
Ensure .env.local variables are set in Vercel project settings → Environment Variables.
This portfolio is open source under the MIT License. Feel free to use this as a template for your own portfolio, but please credit the original design and remove personal content.
Found a bug or want to suggest a feature? Open an issue or PR!
Built with ❤️ as a showcase of AI + Education engineering work.