A modern, professional portfolio website built with Eleventy (11ty) static site generator. Features a dark GitHub-inspired theme, responsive design, and easy content management through data files.
- Static Site Generation: Built with 11ty for fast performance and easy deployment
- Data-Driven Projects: Manage projects through a simple JSON file
- Modern Design: Dark theme with professional styling and smooth animations
- Responsive Layout: Mobile-first design that looks great on all devices
- Technology Badges: Visual tags for each project's tech stack
- GitHub Pages Ready: Automated deployment workflow included
- SEO Optimized: Proper meta tags and semantic HTML structure
- Node.js 16+ and npm installed on your system
- Clone the repository:
git clone https://github.com/marcwitasee/me.git
cd me
- Install dependencies:
npm install
- Start the development server:
npm start
- Open your browser to
http://localhost:8080
me/
├── src/ # Source files
│ ├── _data/ # Data files
│ │ ├── projects.json # Project information
│ │ └── site.json # Site metadata
│ ├── _includes/ # Reusable components
│ │ ├── header.njk # Site header
│ │ └── project-card.njk # Project card component
│ ├── _layouts/ # Page layouts
│ │ └── base.njk # Base HTML layout
│ ├── css/ # Stylesheets
│ │ └── style.css # Main stylesheet
│ ├── images/ # Image assets
│ ├── assets/ # Other assets (PDFs, etc.)
│ ├── index.njk # Homepage
│ └── about.njk # About page
├── _site/ # Generated output (git ignored)
├── .eleventy.js # 11ty configuration
├── package.json # Node dependencies
└── README.md # This file
To add a new project to your portfolio:
- Open
src/_data/projects.json
- Add a new project object to the array:
{
"title": "Your Project Title",
"description": "Brief description of what the project does",
"image": "/images/your-project-screenshot.png",
"imageAlt": "Description of the screenshot",
"githubUrl": "https://github.com/yourusername/project-repo",
"technologies": ["Python", "Machine Learning", "AWS"],
"date": "2024-01-01",
"featured": true
}
- Add your project screenshot to
src/images/
- The project will automatically appear on the homepage
- title: Project name (required)
- description: Brief project description (required)
- image: Path to project screenshot (required)
- imageAlt: Alt text for accessibility (required)
- githubUrl: Link to GitHub repository (optional)
- projectUrl: Alternative link if not on GitHub (optional)
- technologies: Array of technologies used (required)
- date: Project date in YYYY-MM-DD format (required)
- featured: Boolean to highlight project (optional)
Edit src/_data/site.json
to update:
- Site title and description
- Your name and social links
- Navigation menu items
The site uses CSS custom properties for easy theming. Edit src/css/style.css
to modify:
- Colors: Update the
:root
variables - Typography: Modify font families and sizes
- Spacing: Adjust padding and margins
- Animations: Customize transitions and effects
Add new technology colors in the CSS:
.tech-your-tech {
border-color: #yourcolor;
color: #yourcolor;
}
# Start development server with live reload
npm start
# Build for production
npm run build
# Build for local testing (without pathPrefix)
npm run build:local
# Clean build directory
npm run clean
The site is configured for automatic deployment to GitHub Pages:
- Push your changes to the
main
ormaster
branch - GitHub Actions will automatically build and deploy your site
- Your site will be available at
https://yourusername.github.io/repository-name
To deploy manually to any static host:
- Build the site:
npm run build
- Upload the contents of
_site/
to your web server
To use a custom domain with GitHub Pages:
- Create a
CNAME
file in thesrc/
directory with your domain - Update the
pathPrefix
in.eleventy.js
if needed - Configure your domain's DNS settings
Edit .eleventy.js
to:
- Add new plugins
- Configure build options
- Add custom filters
- Modify input/output directories
If deploying to a subdirectory, update the pathPrefix
in .eleventy.js
:
pathPrefix: process.env.ELEVENTY_ENV === 'production' ? '/your-subdirectory' : '/'
- Build fails: Ensure all image paths in
projects.json
exist insrc/images/
- Styles not loading: Check that CSS file paths use the
url
filter - Projects not showing: Verify JSON syntax in
src/_data/projects.json
- Deploy fails: Check GitHub Actions logs for specific errors
- Use
npm run clean
if you encounter stale build issues - The development server auto-reloads on file changes
- Check the terminal for 11ty build errors
- Use browser dev tools to debug CSS issues
Feel free to fork this repository and customize it for your own portfolio!
This project is open source and available under the MIT License.