Skip to content

Repository files navigation

✦ Jenitha Johnson Maxi β€” Portfolio

More than a portfolio β€” a reflection of who I am, how I think, and what I love to build.

Crafted with care using React, Vite, and Framer Motion


πŸ”— Live Demo

🌐 https://jenitha-portfolio.vercel.app/


πŸ“‹ Table of Contents


🧠 Overview

This isn't just a portfolio β€” it's a digital space that reflects who I am as a developer and as a person.

I'm Jenitha Johnson Maxi, a Computer Science undergraduate at SLIIT with a deep passion for Full Stack Development, AI/ML, and Mathematics. I believe that great software is equal parts logic and artistry β€” and this site is my attempt to show both sides. Every section, animation, and interaction was built intentionally: not from a template, but from scratch, with care.

The emerald-teal gradient you see throughout isn't just aesthetic β€” it represents the energy I bring to my work: fresh, precise, and always growing. The smooth animations aren't decorative noise β€” they reflect my belief that user experience is never an afterthought. And the clean, structured code beneath it all mirrors how I approach every project: with clarity, consistency, and attention to detail.

Built component-by-component in React with CSS Modules for scoped styles, Framer Motion for scroll-triggered animations, and React Portals for accessible modals β€” this site is both a showcase of my work and a demonstration of my craft.


🧩 Sections

Section Description
Hero Full-screen landing with animated name, role, description, CTA buttons, profile photo, and social icons
About Profile card with contact info and socials, bio with highlights, core interests grid, education timeline, and dev philosophy
Skills Skills grouped into 4 categories β€” each rendered as animated SkillCard chips with icons and a pulsing colour dot
Projects 3-column image card grid; clicking any card opens a detail modal via React Portal with description, tech stack, GitHub and Live Demo links
Certifications Certificate thumbnails in a 3-column grid; clicking opens a lightbox via React Portal showing the full certificate image
Contact Left column contact info (email, phone, location) + right column message form with animated focus states
Footer Split layout β€” brand/bio/socials left, three nav columns right; animated divider and fixed back-to-top button

πŸ›  Tech Stack

Core Framework & Tooling

Technology Version Purpose
React 18 Component-based UI
Vite 5 Build tool and dev server
Framer Motion latest Animations and transitions
React Icons latest Icon library (Font Awesome, Simple Icons, etc.)
Vercel β€” Deployment and hosting

Styling Approach

  • CSS Modules (.css files per component) β€” scoped, collision-free styles
  • Tailwind CSS β€” utility classes used in tandem for spacing and layout
  • Custom CSS animations β€” @keyframes for blobs, particles, underline bars, and spinners
  • No global CSS framework conflicts β€” each section is fully self-contained

Key Architectural Patterns

Pattern Where Used
React Portal (createPortal) Projects modal, Certifications lightbox β€” rendered into document.body to avoid z-index/transform stacking issues
AnimatePresence Wraps modal/lightbox components directly for correct mount/unmount animations
whileInView Scroll-triggered entrance on every section, card, and content block
viewport={{ once: true }} Animations fire once β€” no re-triggering on scroll back
Escape key handler useEffect keydown listener in each modal/lightbox, cleaned up on unmount

πŸ“ Project Structure

portfolio/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ images/
β”‚   β”‚   └── profile.png                  # Profile photo (used in Hero + About)
β”‚   β”œβ”€β”€ Project1.png                     # Verdant Plant Shop screenshot
β”‚   β”œβ”€β”€ project2.png                     # Palm Beach Resort screenshot
β”‚   β”œβ”€β”€ project3.png                     # Portfolio screenshot
β”‚   β”œβ”€β”€ project4.png                     # PathFinder screenshot
β”‚   β”œβ”€β”€ cert1.png                        # Agile Scrum Master certificate
β”‚   β”œβ”€β”€ cert2.png                        # Mathematics for Data Science certificate
β”‚   β”œβ”€β”€ cert3.png                        # Python for Beginners certificate
β”‚   └── Jenitha_JohnsonMaxi_CV.pdf       # Downloadable CV (Navbar + Hero)
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ common/
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.jsx               # Fixed navbar, scroll-based active section tracking, mobile menu
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.css
β”‚   β”‚   β”‚   β”œβ”€β”€ Footer.jsx               # Split layout footer, social icons, back-to-top button
β”‚   β”‚   β”‚   └── Footer.css
β”‚   β”‚   └── cards/
β”‚   β”‚       β”œβ”€β”€ ProjectCard.jsx          # Standalone project card with GitHub/Demo buttons
β”‚   β”‚       β”œβ”€β”€ ProjectCard.css
β”‚   β”‚       β”œβ”€β”€ SkillCard.jsx            # Skill chip with dynamic icon, colour, and animated dot
β”‚   β”‚       └── SkillCard.css
β”‚   β”‚
β”‚   β”œβ”€β”€ sections/
β”‚   β”‚   β”œβ”€β”€ Hero/
β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.jsx                 # Landing screen, photo with organic blobs, scroll indicator
β”‚   β”‚   β”‚   └── Hero.css
β”‚   β”‚   β”œβ”€β”€ About/
β”‚   β”‚   β”‚   β”œβ”€β”€ About.jsx                # Profile card, bio, interests, education, philosophy
β”‚   β”‚   β”‚   └── About.css
β”‚   β”‚   β”œβ”€β”€ Skills/
β”‚   β”‚   β”‚   β”œβ”€β”€ Skills.jsx               # Category tabs / grid of SkillCards
β”‚   β”‚   β”‚   └── Skills.css
β”‚   β”‚   β”œβ”€β”€ Projects/
β”‚   β”‚   β”‚   β”œβ”€β”€ Projects.jsx             # Image card grid + React Portal detail modal
β”‚   β”‚   β”‚   └── Projects.css
β”‚   β”‚   β”œβ”€β”€ Certifications/
β”‚   β”‚   β”‚   β”œβ”€β”€ Certifications.jsx       # Thumbnail cards + React Portal lightbox
β”‚   β”‚   β”‚   └── Certifications.css
β”‚   β”‚   └── Contact/
β”‚   β”‚       β”œβ”€β”€ Contact.jsx              # Contact info list + message form with success state
β”‚   β”‚       └── Contact.css
β”‚   β”‚
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   β”œβ”€β”€ projects.js                  # All project data (title, description, tech, github, demo, images)
β”‚   β”‚   β”œβ”€β”€ skills.js                    # Skill categories and skill names
β”‚   β”‚   └── certifications.js           # Certificate data (title, platform, year, icon, image)
β”‚   β”‚
β”‚   β”œβ”€β”€ App.jsx
β”‚   β”œβ”€β”€ main.jsx
β”‚   └── index.css
β”‚
β”œβ”€β”€ index.html
β”œβ”€β”€ vite.config.js
β”œβ”€β”€ tailwind.config.js
└── package.json

πŸš€ Getting Started

Prerequisites

  • Node.js v16 or higher
  • npm (or yarn / pnpm)

Installation

# 1. Clone the repository
git clone https://github.com/Jenitha23/Portfolio.git
cd Portfolio

# 2. Install dependencies
npm install

# 3. Start the development server
npm run dev

Open http://localhost:5173 in your browser.

Available Scripts

npm run dev       # Start local development server with HMR
npm run build     # Build optimised production output to /dist
npm run preview   # Preview the production build locally
npm run lint      # Run ESLint

✏️ Customisation Guide

Personal Information

File What to update
src/sections/Hero/Hero.jsx Your name, role line, bio description, social links
src/sections/About/About.jsx Bio text, contact info (email, phone, location), education details, dev philosophy list
src/sections/Contact/Contact.jsx Email, phone number, location, map link
src/components/common/Navbar.jsx Nav items, CV download filename
src/components/common/Footer.jsx Name, bio, social links, nav column links

Content Data Files

File What to update
src/data/projects.js Project entries β€” title, description, tech array, github URL, demo URL, image path
src/data/skills.js Skill categories and skill names (icons are auto-mapped in SkillCard.jsx)
src/data/certifications.js Certificate title, platform, year, icon key, image path

Adding a New Project

  1. Add your screenshot to public/ β€” e.g. project5.png
  2. Add an entry in src/data/projects.js:
{
  id: 5,
  title: "Your Project Title",
  description: "A short description of what the project does and its key features.",
  tech: ["React", "Node.js", "MySQL"],
  github: "https://github.com/Jenitha23/your-repo",
  demo: "https://your-demo.vercel.app",   // set to null if not live yet
  images: "/project5.png",
  featured: true   // shows a ⭐ Featured badge on the card
}

Adding a New Certificate

  1. Add the certificate image to public/ β€” e.g. cert4.png
  2. Add an entry in src/data/certifications.js:
{
  id: 4,
  title: "Certificate Name",
  platform: "Issuing Platform",
  year: "2025",
  icon: "code",       // options: "code" | "chart" | "brain"
  description: "Brief description of what was covered.",
  image: "/cert4.png"
}

Adding a New Skill

Open src/data/skills.js and add the skill name under the appropriate category:

{ name: "TypeScript" }   // icon and colour are auto-resolved in SkillCard.jsx

To add icon and colour support for a new skill name, add entries to the iconMap and colorMap objects inside src/components/cards/SkillCard.jsx.

Changing the Colour Theme

The palette is defined inline across CSS files. The key values to find-and-replace are:

Role Value
Primary emerald #10b981
Mid teal #14b8a6
Cyan accent #06b6d4
Dark background #111827 / #000000
Card surface #0d1420 / #080d16

☁️ Deployment

The portfolio is deployed on Vercel with automatic deployments on every push to main.

Deploy Your Own Fork

Option 1 β€” Vercel (recommended)

  1. Push your fork to GitHub
  2. Go to vercel.com β†’ Import Project β†’ select your repo
  3. Vercel auto-detects Vite β€” click Deploy

Option 2 β€” Vercel CLI

npm i -g vercel
vercel

Option 3 β€” Netlify

npm run build
# Drag and drop the /dist folder at netlify.com/drop

Option 4 β€” GitHub Pages

npm install --save-dev gh-pages
# Add "homepage" to package.json and deploy scripts, then:
npm run deploy

πŸ“¬ Contact

Channel Details
Email jenithamaxi17@gmail.com
LinkedIn jenitha-johnson-maxi-84631621b
GitHub github.com/Jenitha23
Portfolio jenitha-portfolio.vercel.app

πŸ“„ License

This project is open source and available under the MIT License.


Made with ❀️ by Jenitha Johnson Maxi

Built with React Β· Vite Β· Tailwind CSS Β· Framer Motion

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages