Skip to content

NicolasHarnisch/Portifolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Personal Portfolio - NΓ­colas Harnisch

Professional Portfolio β€” React + TypeScript application focused on performance, accessibility, and responsive design.

React TypeScript TailwindCSS Vite ESLint Prettier Framer Motion Spline


πŸ“‹ Table of Contents


πŸ‡§πŸ‡· PortuguΓͺs

Read the full Portuguese version here: README.pt-BR.md

About 🎯

This portfolio project by NΓ­colas Harnisch demonstrates advanced skills in:

  • React componentization with TypeScript
  • Responsive design with Tailwind CSS
  • Accessibility and keyboard-first navigation
  • Smooth transitions with framer-motion
  • Internationalization (i18n) with LanguageContext (English/Portuguese)
  • Interactive 3D elements with Spline
  • Dynamic Star Background for immersive UI
  • Performance-focused architecture with React.lazy and Suspense
  • Custom hooks and optimized UI rendering

The site includes sections: Hero, About, Experience, Tech Stack, Projects, and Footer.


Architecture Overview πŸ—οΈ

  • Vite + React + TypeScript: fast development server and production build.
  • Component-based architecture: UI and logic separation.
  • Context API: LanguageContext (i18n), theme-provider (dark/light mode).
  • Custom hooks:
    • useMobile (mobile breakpoint detection)
    • useScrollAnimation (entry animation on scroll)
    • useTypingEffect (typewriter effect in Hero)
    • useToast (toast notifications)
  • Interactive 3D: Spline integration for high-end visual engagement.
  • Code Splitting: Heavy components (Spline, sections) are lazy-loaded to optimize initial TTI/LCP.

Technologies πŸ› οΈ

Core

  • React 18
  • TypeScript
  • Vite
  • Tailwind CSS
  • Framer Motion
  • Lucide React
  • shadcn/ui (design system)
  • Spline 3D (3D scenes)
  • Lucide React (icons)
  • HSL Theming (Glassmorphism & Airy Premium)

Dev Tools

  • ESLint
  • Prettier
  • Husky (git hooks, optional)
  • Vitest + Testing Library

Folder Structure πŸ“

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                     # Reusable UI components
β”‚   β”œβ”€β”€ About.tsx
β”‚   β”œβ”€β”€ Experience.tsx
β”‚   β”œβ”€β”€ Footer.tsx
β”‚   β”œβ”€β”€ Hero.tsx
β”‚   β”œβ”€β”€ Navbar.tsx
β”‚   β”œβ”€β”€ NavLink.tsx
β”‚   β”œβ”€β”€ ProjectCard.tsx
β”‚   β”œβ”€β”€ Projects.tsx
β”‚   β”œβ”€β”€ SplineScene.tsx          # 3D interactive scene
β”‚   β”œβ”€β”€ StarBackground.tsx       # Dynamic background
β”‚   β”œβ”€β”€ TechStack.tsx
β”‚   └── WhatsAppButton.tsx
β”œβ”€β”€ contexts/
β”‚   β”œβ”€β”€ LanguageContext.tsx
β”‚   └── theme-provider.tsx
β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ use-mobile.tsx
β”‚   β”œβ”€β”€ use-scroll-animation.tsx
β”‚   β”œβ”€β”€ use-typing-effect.tsx
β”‚   └── use-toast.ts
β”œβ”€β”€ lib/
β”‚   └── utils.ts
β”œβ”€β”€ locales/
β”‚   └── translations.ts
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ Index.tsx
β”‚   └── NotFound.tsx
β”œβ”€β”€ App.tsx
β”œβ”€β”€ main.tsx
β”œβ”€β”€ index.css
└── vite-env.d.ts

Core Features βœ…

Navigation

  • Fixed top navbar with smooth section scrolling
  • Mobile menu toggle
  • Active section indicator based on scroll position
  • 320px mobile-first responsive support

Hero

  • Typewriter effect using useTypingEffect
  • CTA links: CV (Google Drive), LinkedIn, GitHub, Email
  • Interactive 3D Robot/Scene (Spline)
  • Persistent dark/light theme toggle with transition effects
  • Dynamic Star Background following theme colors

About & Experience

  • Timeline style experience section
  • Skills and education highlights
  • Buttons for downloading CV and contacting author

Tech Stack

  • Categorized stack cards
  • Interactive chips and context-aware display

Projects

  • Project cards with descriptions, tags, and links
  • Dark mode style support on cards
  • Search/filter hooks (if configured)

Contact & Footer

  • Quick WhatsApp access button
  • Detailed footer with navigation and social presence
  • Multi-language support toggle (PT/EN) integrated in Navbar

Accessibility

  • Keyboard focus styles and skip-to-content model
  • High contrast and responsive typography

Setup βš™οΈ

Prerequisites

  • Node.js v18+ recommended
  • npm 10+ or pnpm

Installation

git clone https://github.com/NicolasHarnisch/Portifolio.git
cd Portifolio
npm install

Run Locally ▢️

npm run dev

Open: http://localhost:5173

Production build

npm run build
npm run preview

Testing πŸ§ͺ

Install test dependencies:

npm install -D vitest @testing-library/react @testing-library/jest-dom

Run tests:

npm run test

Deployment πŸš€

Vercel

npm install -g vercel
vercel

Netlify

  • Connect repository
  • Build command: npm run build
  • Publish directory: dist

GitHub Pages

  • Optional: setup with gh-pages package

Future Improvements πŸ—ΊοΈ

  • Add unit tests and E2E tests
  • Improve SEO with metadata and sitemap
  • Add more content sections (blog/case studies)
  • Add analytics and CI/CD pipeline

Author πŸ‘¨β€πŸ’»

NΓ­colas Harnisch

About

Personal portfolio. Built with React, TypeScript, and Tailwind CSS to showcase full-stack projects, API integrations, and backend architecture

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages