Skip to content

ndayiemile/ndayiemile.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Emile Ndayishimiye - Portfolio Website

A modern, professional portfolio website showcasing my projects, experience, and skills as a Computer Science and Mathematics student at Amherst College.

✨ NEW: This portfolio has been refactored for maximum maintainability!
All content is now in data.js - update your portfolio without touching HTML!


🌟 Features

  • πŸ”§ Ultra-Maintainable: All content in one file (data.js)
  • 🎨 Modern Design: Clean, minimal aesthetic with professional typography
  • πŸŒ“ Dark Mode: Toggle between light and dark themes
  • πŸ“± Fully Responsive: Optimized for desktop, tablet, and mobile
  • ⚑ Fast Loading: Vanilla JS with no heavy frameworks

πŸš€ Quick Start

Option 1: View Locally

  1. Open index.html in your web browser
  2. That's it! No build process required.

Option 2: Deploy to GitHub Pages

See DEPLOYMENT.md for step-by-step instructions.


πŸ“ How to Update Your Portfolio

⭐ THE EASY WAY (Recommended)

To add/edit/remove content, just edit data.js!

Add a New Project:

// In data.js, add to the projects array:
{
    title: "My Awesome Project",
    icon: "fa-rocket",
    description: "Built an amazing thing that does X, Y, and Z...",
    tech: ["Python", "React", "Docker"],
    learning: "Learned about system design and scalability...",
    github: "https://github.com/yourusername/project",
    featured: true,
    impact: "50% improvement"
}

Add New Experience:

// In data.js, add to the experience array:
{
    role: "Software Engineer Intern",
    company: "Company Name",
    location: "City, State",
    period: "Summer 2026",
    type: "Engineering",  // Research, Teaching, Engineering, or Leadership
    highlights: [
        "Built feature that improved X by Y%",
        "Collaborated with team of Z engineers",
        "Learned about A, B, and C"
    ]
}

Update Skills:

// In data.js, find the skills array and edit:
{
    category: "Programming Languages",
    icon: "fa-code",
    items: ["Python", "Java", "JavaScript", "Go"]  // Just add/remove!
}

🎯 What You Can Update in data.js:

  • βœ… Personal information (name, email, links)
  • βœ… About me paragraphs
  • βœ… All projects
  • βœ… All experience
  • βœ… All skills
  • βœ… Everything!

πŸ› οΈ Technologies Used

  • HTML5: Semantic markup
  • CSS3: Custom properties, Grid, Flexbox, animations
  • JavaScript (Vanilla): Component-based rendering, no frameworks
  • Font Awesome: Icons (CDN)
  • Google Fonts: Inter typeface

πŸ“ Project Structure (Refactored!)

portfolio/
β”œβ”€β”€ index.html          
β”œβ”€β”€ styles.css          # Enhanced styling with modern patterns
β”œβ”€β”€ script.js           # Component rendering + interactions
β”œβ”€β”€ data.js             # ⭐ ALL CONTENT HERE - your single source of truth
β”œβ”€β”€ resumes/            # PDF resume files
β”œβ”€β”€ assets/             # Images (add profile.jpg here)
β”‚   └── README.md       # Guide for adding images
β”œβ”€β”€ README.md           # This file

🎨 Customization Guide

1. Add Your Profile Photo

  • Place your profile photo in the assets/ folder as profile.jpg
  • Recommended size: 400x400px (square)
  • Formats: JPG, PNG, or WebP

2. Update Personal Information

Edit data.js:

personal: {
    name: "Your Name",
    email: "your.email@example.com",
    phone: "(123) 456-7890",
    github: "https://github.com/yourusername",
    linkedin: "https://linkedin.com/in/yourusername",
    resume: "resumes/your-resume.pdf"
}

3. Customize Colors

Edit CSS variables in styles.css (lines 14-43):

:root {
    --accent-primary: #6366f1;    /* Main brand color */
    --accent-secondary: #8b5cf6;  /* Secondary color */
}

4. Add Project Screenshots (Optional)

  • Create assets/projects/ folder
  • Add screenshots
  • Reference in project descriptions

πŸ“Š Content Management

The New Way (Easy!):

All content updates happen in one file: data.js

data.js contains:

  • Personal info
  • About me text
  • All projects with details
  • All experience with highlights
  • All skills organized by category

Benefits:

  • βœ… Single source of truth
  • βœ… No HTML editing needed
  • βœ… Easy to keep consistent
  • βœ… Can version control content separately
  • βœ… Could connect to a CMS later

Content Structure:

const portfolioData = {
    personal: { /* Contact info */ },
    about: [ /* Paragraphs */ ],
    projects: [ /* Project objects */ ],
    experience: [ /* Experience objects */ ],
    skills: [ /* Skill categories */ ]
};

🎯 Adding New Content

Add a New Project:

  1. Open data.js
  2. Find the projects array
  3. Copy an existing project object
  4. Edit the details:
    {
        title: "Project Name",
        icon: "fa-icon-name",  // Font Awesome icon
        description: "What it does...",
        tech: ["Tech1", "Tech2", "Tech3"],
        learning: "What you learned...",
        github: "URL",
        featured: true,  // Show on main page?
        impact: "Measurable result"  // Optional metric
    }
  5. Save and refresh!

Add New Experience:

  1. Open data.js
  2. Find the experience array
  3. Add your entry:
    {
        role: "Position Title",
        company: "Company Name",
        location: "City, State",
        period: "Start - End",
        type: "Research|Teaching|Engineering|Leadership",
        highlights: [
            "Achievement 1",
            "Achievement 2",
            "Achievement 3"
        ]
    }

Update Skills:

Just edit the arrays in data.js:

skills: [
    {
        category: "Category Name",
        icon: "fa-icon-name",
        items: ["Skill 1", "Skill 2", "Skill 3"]
    }
]

πŸ“± Responsive Breakpoints

  • Desktop: 1200px+
  • Tablet: 768px - 1199px
  • Mobile: 320px - 767px

⚑ Performance

  • No Build Process: Pure vanilla JavaScript
  • Fast Load Times: Minimal dependencies
  • Optimized Images: Lazy loading ready
  • Efficient Rendering: Component-based approach
  • GPU Acceleration: CSS transforms for smooth animations

β™Ώ Accessibility

  • Semantic HTML5 elements
  • ARIA labels on interactive elements
  • Keyboard navigation support
  • Focus-visible styles
  • Color contrast meets WCAG standards
  • Screen reader friendly

πŸ› Troubleshooting

Content Not Showing?

  • Check browser console for errors
  • Verify data.js is loaded before script.js
  • Check for JavaScript syntax errors in data.js

Dark Mode Not Working?

  • Clear browser localStorage
  • Check browser console for errors
  • Ensure JavaScript is enabled

Mobile Menu Not Working?

  • Verify script.js is loaded
  • Check browser console for errors

About

My personal website capturing much about me as a learner and an aspiring software engineer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors