Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CYF-ITP-South Africa | Rashaad Ebrahim | Portfolio #128

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 40 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,53 @@
# Portfolio

Your starting portfolio, to iterate on.
Module 1 iteration of your portfolio. We've got a lot of new concepts here so you might want to work through this in your study group, or bring to class for help.

_Keep your changes simple!_

We are using a different type of pull request workflow from your main coursework. We're doing this because we need lots of practice with Git to be ready to contribute to shared repos like professional developers. In previous cohorts, we only opened PRs to main all the way through the course, and then in Final Projects it was really hard to learn real branching and merging. So let's practice a different workflow now.

## Learning Objectives

- Customise the starting portfolio with your professional details
- Iterate on your portfolio every module
- Review your colleague's portfolio
- [ ] Branch from a branch in Git
- [ ] PR from a branch to a branch in GitHub
- [ ] Create a personal case study for a project

## Requirements

At Code Your Future, we expect everyone to graduate with a unique professional portfolio. Begin building this portfolio as soon as you begin our Software Development Course. At first, your portfolio will be a simple HTML/CSS page deployed to Github Pages or Netlify. This is your MVP.
Your case study should be a short description of the project, including: the problem it solves, the technologies used, the approach taken, a link to the deployed project, and a link to the code on GitHub.

Explain the problem and your solution in your own words, and don't just copy and paste the project brief. The point of a portfolio is to make _you stand out_, so write in your own voice. It's fine to choose something that you didn't work on all by yourself, but make sure you explain what part you did.

## Git Ready: Putting our code in the right place

The instructions here are given for the command line, but you could just as easily do this in GitHub Desktop or GitKraken.

1. Switch into the branch called `git checkout Module-HTML-CSS` to access this Readme
1. From `Module-HTML-CSS`, create a new branch `git checkout -b your-name-portfolio`
1. Make a new directory `mkdir your-name-portfolio`
1. Move your starter files into this directory `mv index.html style.css your-name-portfolio`
1. Change into the new directory `cd your-name-portfolio`
1. Check you are in the right branch `git branch --show-current`

## Git Set: Making changes

1. Open the project in your code editor
1. Make your changes
1. Check your changes with `git status`
1. Add your files to the staging area `git add index.html style.css` . _Remember, don't `git add .` or you could add files you don't mean to._
1. Commit your changes often `git commit -m "YOUR COMMIT MESSAGE"`

## Git Go: Making a pull request

Every module, you will _iterate_ on your portfolio, adding a new project and improving your design and presentation. By the time you apply to Final Projects, your portfolio will help you show you are ready to be accepted on to a Final Projects team.
1. Stage your files: `git add index.html style.css` . _Remember, don't `git add .` or you could add files you don't mean to._
1. Commit your changes `git commit -m "YOUR COMMIT MESSAGE"`
1. Push your changes to GitHub `git push origin your-name-portfolio`
1. Open a pull request to merge your branch into `Module-HTML-CSS` . If you have the [GitHub CLI](https://cli.github.com/manual/gh_pr_create) installed, you can do this with `gh pr create --base Module-HTML-CSS --head your-name-portfolio`. Otherwise do it in the GitHub UI or your Git client.

## Acceptance Criteria

- [ ] My portfolio introduces me and my work
- [ ] The design and code is my own, not a template or tutorial
- [ ] The design and code is my own, not a template or tutorial (you can use this code as a starting point)
- [ ] Each project is linked to my code on Github and the deployed project
- [ ] I have published my professional contact information on my portfolio
- [ ] My Accessibility and SEO scores are 100 on Lighthouse
Expand All @@ -26,6 +56,6 @@ Every module, you will _iterate_ on your portfolio, adding a new project and imp

## Resources

- [Josh Comeau on building your early career profile](https://www.youtube.com/watch?v=OXiaEXfkAec)
- [How to Build an Effective Dev Portfolio](https://www.joshwcomeau.com/effective-portfolio/)
- [CYF Graduate Module](https://module-graduates.codeyourfuture.io/)
- [Powerful Git Completion with ohmyzsh](https://github.com/ohmyzsh/ohmyzsh)
- [GitKraken](https://www.gitkraken.com/)
- [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens/)
37 changes: 31 additions & 6 deletions index.html → example-name-portfolio/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,37 @@ <h1>My Name</h1>
</section>
<section id="projects">
<header><h2>Projects Showcase</h2></header>
<p>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nulla nisi
excepturi quidem, eum rem doloribus quam aspernatur hic enim eligendi
commodi minima ullam necessitatibus, cumque blanditiis, nihil magni
amet consectetur?
</p>
<ul class="showcase">
<li class="showcase__item project">
<h3 class="project__heading"><a href="https://github.com/CodeYourFuture/HTML-CSS-Challenges-Solution">T-Shirt Order Form</a></h3>
<div class="project__blurb">
<p>This was exactly as it says: a t-shirt order form, in HTML and CSS. This text is copy-pasted.</p>
<p>
In this project I learned a whole bunch of foundational principles
for front end: I learned how to structure data formally with
modern native form inputs, and how to <a href="https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation">validate that data client-side</a> with HTML5
attributes. The brief was fairly open - the design is all mine,
but the Acceptance Criteria was strict: I had to deliver a perfect
score in <a href="https://developer.chrome.com/docs/lighthouse/overview/">Lighthouse</a>, and meet some other validation constraints.
</p>
<p>
I spent a lot of time testing my code with <a href="https://developer.chrome.com/docs/devtools/">Devtools</a> and thinking
carefully about the semantics of the copy pasted DOM. I also explored the <a href="https://developer.chrome.com/docs/devtools/coverage/">
Coverage</a> evaluator and used it to improve my CSS: only delivering
precisely what my design needed and no excess code.
</p>
</div>
<picture class="project__picture">
<source
srcset="https://picsum.photos/seed/picsum/600/600"
type="image/webp"
/>
<img
src="https://picsum.photos/seed/picsum/600/600"
alt="Screenshot of my page showing a form for ordering t-shirts"
/>
</li>
</ul>
</section>
<section id="contact">
<header><h2>Contact me</h2></header>
Expand Down
151 changes: 151 additions & 0 deletions example-name-portfolio/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
/* Design tokens.
With tokens, stick to communicating the PURPOSE not the VALUE.
Code should explain, not mystify, your design.
*/
:root {
--paper: hsla(251, 28%, 88%, 0.99);
--ink: hsla(244, 16%, 17%, 0.95);
--brand: hsla(0, 79%, 63%, 0.9);
--font: "Raleway", system-ui, sans-serif;
--gap: 20px;
--container: clamp(280px, calc(100vw - calc(var(--gap) * 2)), 1180px);
/* https://web.dev/accessible-tap-targets/ */
--tap-target: 48px;
--box: clamp(280px, 50vw + 2px, 530px);
}

/* Hey look, dark mode is
so easy with design tokens done this way
*/
@media (prefers-color-scheme: dark) {
:root {
--ink: hsla(252, 38%, 92%, 0.99);
--paper: hsla(244, 16%, 17%, 1);
}
}

/* General styles */
html,
body {
scroll-behavior: smooth;
background: var(--paper);
color: var(--ink);
font-family: var(--font);
}
body {
display: grid;
margin: auto;
min-height: 100vh;
gap: var(--gap);
max-width: var(--container);
}
a,
a:any-link {
color: currentColor;
text-decoration: none;
border-bottom: 2px solid transparent;
transition: border-color ease-in-out 0.3s;
}
a:hover,
a:focus {
color: var(--brand);
border-color: currentColor;
}
p a:any-link {
border-color: var(--brand);
}
/* Site header and navigation
https://elad.medium.com/css-position-sticky-how-it-really-works-54cd01dc2d46
*/
body > header {
background: var(--paper);
display: flex;
justify-content: space-between;
align-items: center;
position: sticky;
top: 0;
z-index: 1;
}
nav ul {
display: flex;
list-style: none;
gap: var(--gap);
}

/* Text readability
https://baymard.com/blog/line-length-readability
*/
section p {
line-height: 1.5;
max-width: 55ch;
}
/* targeted resets
We're resetting elements with a class - ANY class
- on the grounds that if you added a class,
you added your own styles
*/
h3[class] {
margin: 0 auto 0 0;
}
ul[class],
li[class] {
margin: 0;
padding: 0;
}

/* Basic image rules
Don't size images in css, size their containers
Just make images take up the entire space you give them
in every context
*/
svg {
height: 100%;
width: auto;
min-width: var(--tap-target);
}

img {
width: 100%;
height: 100%;
max-width: 100%;
object-fit: cover;
}

picture {
height: auto;
overflow: hidden;
}
/*
I would start breaking this up into component files now btw!
*/
.showcase {
display: flex;
flex-flow: row wrap;
gap: var(--gap);
}
/*
Here's an example of a grid layout. Notice there's no margin, padding, or sizes given on elements
All the spacing and sizing is set on the template, and the elements
are just slotted in.
The little dots are how we precisely place and size white-space
https://www.interaction-design.org/literature/article/the-power-of-white-space
*/

.project {
display: grid;
grid-template:
"picture picture picture" var(--box)
"....... ....... ......." calc(var(--gap) / 2)
"....... heading ......." min-content
"....... blurb ......." auto /
var(--gap) var(--box) var(--gap);
}
.project__picture {
grid-area: picture;
}
.project__heading {
grid-area: heading;
}
.project__blurb {
grid-area: blurb;
}
1 change: 1 addition & 0 deletions rashaad-ebrahim-portfolio/img/background.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added rashaad-ebrahim-portfolio/img/bose.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added rashaad-ebrahim-portfolio/img/form-controls.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added rashaad-ebrahim-portfolio/img/hometown.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading