Project: Build, Deploy, and Contribute to a Personal Portfolio Website
Objective: Apply all the skills you've learned across our Seven sessions to create a professional developer portfolio, managed with Git and hosted on GitHub Pages.ls
Deadline: November 4, 2025, 11:59 PM
You must complete the following tasks. Use your Git history to document your progress. Your commit messages should be clear and follow best practices.
- Create a New Local Repository: Name it
dev-portfolio. - Initialize Git: Start tracking the project with Git.
- Create Initial Files:
index.html(Your portfolio's main page)style.css(For styling).gitignore(Add patterns for.vscode/,node_modules/,.env, etc.)
- Make Your First Commits:
- Commit 1: "Initial commit with project structure"
- Commit 2: "Add basic HTML structure to index.html"
- Commit 3: "Add .gitignore for common files"
- Push to GitHub:
- Create a new public repository on GitHub with the same name (
dev-portfolio). - Connect your local repository to the remote.
- Push your
mainbranch to GitHub.
- Create a new public repository on GitHub with the same name (
- Create Feature Branches:
- Create a branch named
feature/add-projects-section. - Create another branch named
feature/add-about-me-section.
- Create a branch named
- Develop in Branches:
- On the
projectsbranch, add a "My Projects" section toindex.html. - On the
about-mebranch, add an "About Me" section toindex.html.
- On the
- Merge Branches:
- Merge the
about-mebranch intomain. - Merge the
projectsbranch intomain. You will likely encounter a merge conflict. Resolve it manually.
- Merge the
- Visualize Your History:
- Generate a graph of your commit history and save a screenshot of the output. Add it to a new
docs/folder in your project. git log --oneline --graph --decorate --all
- Generate a graph of your commit history and save a screenshot of the output. Add it to a new
- Create a Release:
- Once
mainis stable, create an annotated tagv1.0.0for your initial version. - Push the tag to GitHub.
- On GitHub, create a Release from this tag.
- Once
- Simulate a Hotfix:
- Create a branch
hotfix/fix-styling-bugfrommain. - Make a small change in
style.cssand commit it. - Merge the hotfix back into
main. - Tag this new commit as
v1.0.1.
- Create a branch
- Cherry-Pick the Fix:
- Imagine you have a
developbranch that also needs this fix. Create adevelopbranch from an older commit onmain. - Cherry-pick the hotfix commit from
maininto yourdevelopbranch.
- Imagine you have a
- Set Up GitHub Pages:
- Enable GitHub Pages in your repository settings to serve from the
mainbranch. - Your portfolio should now be live at
https://<your-username>.github.io/dev-portfolio/.
- Enable GitHub Pages in your repository settings to serve from the
- Automate with GitHub Actions:
- Create a workflow file
.github/workflows/main.yml. - This action should automatically run on every push to
main. - Job: Add a simple job that prints a message, like "Deploying website...". (A real-world example would be running tests or building assets).
- Create a workflow file
- Contribute to an "Open Source" Project:
- Go to this repository:
https://github.com/OmarElzero/Github-Course/tree/master/community-themes. - Fork the repository.
- In your fork, add a new CSS file with a simple color theme (e.g.,
dark-theme.css). - Submit a Pull Request to the original
community-themesrepository to add your theme.
- Go to this repository:
To submit your project, post a link to your dev-portfolio GitHub repository in the designated submission channel.
We will review:
- Commit History: Quality and clarity of messages.
- Branching Strategy: Correct use of feature and hotfix branches.
- Pull Requests: Your contribution to the community project.
- GitHub Actions: A successful workflow run.
- GitHub Pages: Your live portfolio website.
Good luck, and show us what you've learned!