diff --git a/README.md b/README.md index ab93d8a..ef7059d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -> If you are following the HackYourFuture curriculum we recommend you to first take a look at the complete curriculum, which you can find [here](https://github.com/HackYourFuture/curriculum). +# DEPRECATED - HTML-CSS +This module has been reorganised: +- The HTML and CSS is now in the explore module, find it [here](https://github.com/HackYourFuture/explore) +- The CLI and Git is now the CLI-Git module which you can find [here](https://github.com/HackYourFuture/CLI-Git) -> Please help us improve and share your feedback! If you find better tutorials or links, please share them by [opening a pull request](https://github.com/HackYourFuture/HTML-CSS/pulls). -# Module #1 - HTML, CSS and GIT (Frontend) - -![image](assets/module1.png) +![Module 1](assets/module1.png) Welcome to the wonderful world of web development! In this module you will learn the basic building blocks of the web: HTML and CSS. HTML gives us the power to add text, images and videos to a page. CSS gives us the power to organize these parts and make it look nice. @@ -18,41 +18,73 @@ You'll also be learning [GIT](https://www.youtube.com/watch?v=P0kF3vvy3QM), soft In order to successfully complete this module you will need to master the following: -- Be able to write syntactically correct `HTML` and `CSS` -- Understand what is meant by `responsive` web development -- Practice navigating your computer using the `command line interface (CLI)` -- Learn about `GIT` and its basic usage -- Become familiar with `Trello` and `GitHub` as a way to submit your homework -- Know your way around `Visual Studio Code` -- Feel comfortable working with your `browser's inspector` +- Be able to write syntactically correct `HTML` and `CSS` +- Understand what is meant by `responsive` web development +- Practice navigating your computer using the `command line interface (CLI)` +- Learn about `GIT` and its basic usage +- Become familiar with `Trello` and `GitHub` as a way to submit your homework +- Know your way around `Visual Studio Code` +- Feel comfortable working with your `browser's inspector` ## How to use this repository -> Before you do anything, first go [here](Week0/preparation.md). +> Before you do anything, first go [here](Week0/README.md). + +### Repository content This repository consists of 3 essential parts: -1. `README`: this document contains all the required theory you need to understand **before** class. It's also meant as a reference to understand what you're doing while you're coding. -2. `MAKEME`: this document contains the instructions for each week's homework. +1. `README`: this document contains all the required theory you need to understand **while** working on the homework. It contains not only the right resources to learn about the concepts, but also lectures done by HackYourFuture teachers. This is the **first thing** you should start with every week +2. `MAKEME`: this document contains the instructions for each week's homework. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier. 3. `LESSONPLAN`: this document is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well! -**Before** the first class of the module you should start off with the [Week 1 Reading](/Week1/README.md). Study all the concepts and try to get the gist of everything. After your first class, you can get started with the [Week 1 Homework](/Week1/MAKEME.md). +### How to study + +Let's say you are just starting out with HackYourFuture. This is what you do... + +1. The week always starts on **Wednesday**. First thing you'll do is open the `README.md` for that week. For the first week of `HTML-CSS`, that would be [Week1 Reading](/Week1/README.md) +2. You spend **Wednesday** and **Thursday** going over the resources and try to get a basic understanding of the concepts. From the second week on, you'll also implement any feedback you got on last week's homework +3. On **Friday** you start with the homework, found in the `MAKEME.md`. For the first week of `HTML-CSS`, that would be [Week1 Homework](/Week1/MAKEME.md) +4. You spend **Friday** and **Saturday** playing around with the exercises and write down any questions you might have +5. **DEADLINE 1**: You'll submit any questions you might have before **Saturday 23.59**, in the class channel +6. On **Sunday** you'll attend class. It'll be of the Q&A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others +7. You spend **Monday** and **Tuesday** finalizing your homework +8. **DEADLINE 2**: You submit your homework to the right channels (Trello/GitHub) before **Tuesday 23.59**. If you can't make it on time, please communicate it with your mentor +9. Start the new week by going back to point 1! + +In summary: + +![Weekflow](assets/weekflow.png) + +To have a more detailed overview of the guidelines, please read [this document](https://docs.google.com/document/d/1JUaEbxMQTyljAPFsWIbbLwwvvIXZ0VCHmCCN8RaeVIc/edit?usp=sharing) or ask your mentor/class on Slack! + +### Video lectures + +For each module HackYourFuture provides you with video lectures. These are made by experienced software developers who know what they're talking about. The main teacher for this module will be [Arco Mul](https://hackyourfuture.slack.com/team/UBVNH7CG1): an experienced video game and web developer! + +You can find out more about him here: + +- [Personal website](https://www.arcomul.nl/) +- [GitHub](https://github.com/ArcoMul) +- [@Arco on Slack](https://hackyourfuture.slack.com/team/UBVNH7CG1) + +Learn from Arco in the following playlist of videos he has made for you! (Click on the image to open the link) -If you have any questions or if something is not entirely clear ¯\\\_(ツ)\_/¯, please ask/comment on Slack! +HYF Video ## Planning -| Week | Topic | Reading Materials | Homework | Lesson Plan | -| ---- | ------------------------------------------------------ | ---------------------------------- | ------------------------------- | -------------------------------------- | -| 0. | Quick Start! | [W0 Reading](Week0/preparation.md) | - | - | -| 1. | Command Line Interface basics, HTML/CSS syntax | [W1 Reading](/Week1/README.md) | [W1 Homework](/Week1/MAKEME.md) | [W1 Lesson Plan](/Week1/LESSONPLAN.md) | -| 2. | Introduction to GIT, Responsive design | [W2 Reading](/Week2/README.md) | [W2 Homework](/Week2/MAKEME.md) | [W2 Lesson Plan](/Week2/LESSONPLAN.md) | -| 3. | GIT branches, CSS frameworks, Working with the browser | [W3 Reading](/Week3/README.md) | [W3 Homework](/Week3/MAKEME.md) | [W3 Lesson Plan](/Week3/LESSONPLAN.md) | +| Week | Topic | Reading Materials | Homework | Lesson Plan | +| ---- | ------------------------------------------------------ | ------------------------------ | ------------------------------- | -------------------------------------- | +| 0. | Quick Start! | [W0 Reading](Week0/README.md) | - | - | +| 1. | Command Line Interface basics, HTML/CSS syntax | [W1 Reading](/Week1/README.md) | [W1 Homework](/Week1/MAKEME.md) | [W1 Lesson Plan](/Week1/LESSONPLAN.md) | +| 2. | Introduction to GIT, Responsive design | [W2 Reading](/Week2/README.md) | [W2 Homework](/Week2/MAKEME.md) | [W2 Lesson Plan](/Week2/LESSONPLAN.md) | +| 3. | GIT branches, CSS frameworks, Working with the browser | [W3 Reading](/Week3/README.md) | [W3 Homework](/Week3/MAKEME.md) | [W3 Lesson Plan](/Week3/LESSONPLAN.md) | ## Finished? Have you finished the module? Great! Pat yourself on the back for the great work you've done. -If you feel ready for the next challenge, click [here](https://www.github.com/hackyourfuture/javascript1) to go to **JavaScript1**! +If you feel ready for the next challenge, click [here](https://www.github.com/hackyourfuture/javascript) to go to **JavaScript**! _The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)_ diff --git a/Week0/README.md b/Week0/README.md index 27531b6..97f3292 100644 --- a/Week0/README.md +++ b/Week0/README.md @@ -6,99 +6,104 @@ Hi new student, welcome to HackYourFuture! In this document you'll find all the We'll discuss the following points: -- How do I communicate with everybody? Use communication tool [Slack](https://www.slack.com) -- Where do I write my code? Inside a code editor called [Visual Studio Code](https://code.visualstudio.com/) -- What's the way to submit my homework? Use planning tool [Trello](https://trello.com/) -- How do I put my code online? On software development platform [GitHub](https://www.github.com/) +- How do I communicate with everybody? Use communication tool [Slack](https://www.slack.com) +- Where do I write my code? Inside a code editor called [Visual Studio Code](https://code.visualstudio.com/) +- What's the way to submit my homework? Use planning tool [Trello](https://trello.com/) +- How do I put my code online? On software development platform [GitHub](https://www.github.com/) ### How do I communicate with everybody? Use Slack -Slack Video +![slack logo](../assets/slack-logo.png) + Slack is an application that allows us to communicate with others through (video) chat. It's used in most tech companies and is really easy to use. In order for you to get familiar we're going to use it as well! +Have a look at this + Please download the app for on your desktop: -- [OSX](https://slack.com/downloads/osx) -- [Windows](https://slack.com/downloads/windows) -- [Linux](https://slack.com/downloads/linux) +- [macOS](https://slack.com/downloads/mac) +- [Windows](https://slack.com/downloads/windows) +- [Linux](https://slack.com/downloads/linux) And if you really can't go without your phone, you can also get it for mobile: -- [App store](https://itunes.apple.com/nl/app/slack/id803453959?mt=12) -- [Google Play](https://play.google.com/store/apps/details?id=com.Slack&hl=nl) +- [App store](https://itunes.apple.com/nl/app/slack/id803453959?mt=12) +- [Google Play](https://play.google.com/store/apps/details?id=com.Slack&hl=nl) When it's all installed it's time to get into it! First try out the demo: -- [Slack Demo](https://slackdemo.com/) +- [Slack Demo](https://slackdemo.com/) + +Important things to note is to: -These are the first things to do: +- make use of threads to isolate discussions +- format code to make it easier to read by using the ` ``` your code ``` ` syntax -- Add a (professional looking) profile picture -- Add a nice description about yourself -- Say hi to your classmates in the class channel +These are the first things to do once you have been invited into slack: + +- Add a (professional looking) profile picture +- Add a nice description about yourself +- Say hi to your classmates in the class channel Done? This is optional, but for those who are curious: -- [Cheat sheet for basics and shortcuts](https://slack.com/intl/en-nl/help/articles/201374536-Slack-keyboard-shortcuts) -- [How to format your messages in Slack](https://api.slack.com/reference/surfaces/formatting) +- [Cheat sheet for basics and shortcuts](https://slack.com/intl/en-nl/help/articles/201374536-Slack-keyboard-shortcuts) +- [How to format your messages in Slack](https://api.slack.com/reference/surfaces/formatting) ### Where do I write my code? Inside a code editor called Visual Studio Code -![VS Code](https://blog.launchdarkly.com/wp-content/uploads/2018/10/visualstudio_code-card.png) +![vscode logo](../assets/vscode-logo.png) Technically speaking, you can write code for the web in any application that allows you to write and save plain text files (such as Notepad or TextEdit). However a code editor is a tool specifically designed for editing code. -Depending on the programming language, the code editor highlights special keywords, give suggestions for some extent, adds automatic indentation and sometimes has an integrated command line interface (more on that in the next section) as well. +Depending on the programming language, the code editor highlights special keywords, gives suggestions to some extent, adds automatic indentation and sometimes has an integrated command line interface (more on that in the next section) as well. -While your code editor does the basic job of allowing you to write code, it can always be improved to make our lives as developers easier. In the following video you'll learn about the most useful code editor extensions you can install in order to make development a much richer experience: +While your code editor does the basic job of allowing you to write code, it can always be improved to make our lives as developers easier. In [this video](https://www.youtube.com/watch?v=ORrELERGIHs) you'll get a great introduction on all the features. His code is python, so don't worry about understanding the code, it is about how to navigate the visual studio code environment. Currently, Visual Studio Code is one of the top code editors on the market. As such, we have chosen it has our default code editor to use. Click the following link to download it: -- [Visual Studio Code](https://code.visualstudio.com/) +- [Visual Studio Code](https://code.visualstudio.com/) #### Improving our code editor -We can always improve what we have, including our code editor! We can add `plugins` to make our programming life much easier. Please install the following plugins as well and see for yourself! +We can always improve what we have, including our code editor! We can add `extensions` to make our programming life much easier. Please install the following extensions as well and see for yourself! -- [Live HTML Previewer](https://marketplace.visualstudio.com/items?itemName=hdg.live-html-previewer) -- [Syntax Highlighter](https://marketplace.visualstudio.com/items?itemName=evgeniypeshkov.syntax-highlighter) -- [Bracket Pair Colorizer](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer) -- [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) -- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) +- [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) +- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) (Make sure to enable 'Format on save' in the Visual Studio Code settings after installing this plugin) For more specific information on how to setup your editor: -- [VSCode Tips](https://github.com/HackYourFuture/fundamentals/tree/master/VSCodeTips) +- [VSCode Tips](https://github.com/HackYourFuture/fundamentals/tree/master/VSCodeTips) ### What's the way to submit my homework? Use planning tool Trello
-Slack Video
+Trello Video
-Trello is a planning tool that allows you to make todo lists in order to organize and prioritize your projects. In HackYourFuture we'll use it to submit your homework for the first module. Before you start your first class, please do the following +Trello is a planning tool that allows you to make todo lists in order to organize and prioritize your projects. In HackYourFuture we'll use it to submit your homework for the first module. Before you start your first class, please do the following: -- [Register](https://trello.com/signup) for an account -- Get access to the `Feedback Assignments` board, by asking @Wouter in Slack -- Create a card with your name. Inside, add a CodePen URL of your technical assignment + a short description of your website +- [Register](https://trello.com/signup) for an account +- Join the `Feedback Assignments` board, the link to join will be shared in your Slack channel. If not, reach out to your class mentor. +- Create a card with your name. Inside, add a CodePen URL of your technical assignment + a short description of your website ### How do I put my code online? On software development platform GitHub -GitHub Video +GitHub Video GitHub is a place where you can put your code online. Why? To safely store your code in case something bad happens to your computer (computer crash, virus, faulty files). You'll always be able to access this code from GitHub, using any other computer. -- [Register](https://github.com/join) for an account -- Put the URL for your account in the class channel +- [Register](https://github.com/join) for an account +- Put the URL for your account in the class channel -### Check double check: +### Check double check Let's make sure you have done everything necessary: -- Slack: downloaded, added profile and said hi -- Visual Studio Code: downloaded, added plugins -- Trello: registered and added a card, including the CodePen URL of your technical assignment + short description -- Github: registered and put the URL of your account in the class channel +- Slack: downloaded, added profile and said hi +- Visual Studio Code: downloaded, added plugins +- Trello: registered and added a card, including the CodePen URL of your technical assignment + short description +- Github: registered and put the URL of your account in the class channel > If the answer to this is 'no', don't panic. First try and see if you can find some information about the above tools yourself (hint: ask Google first). If that doesn't work, don't be shy to ask your classmates or anyone from HackYourFuture on what to do next. @@ -106,4 +111,6 @@ Let's make sure you have done everything necessary: Have you finished with everything? Be proud of yourself, as you have optimally prepared yourself with all the tools needed to make your coding adventure a success! +Before getting technical, please read about the HackYourFuture culture [here](https://github.com/HackYourFuture/culture) and also check [these scenarios](https://github.com/HackYourFuture/culture/blob/main/scenarios.md) that will give you a hint on how we work. The first or second week of the course, there will be a collaborative session with your whole class to discuss all of this. + Now, with that out of the way we can get started with the readings for the first week. You can find that [here](https://github.com/HackYourFuture/HTML-CSS/blob/master/Week1/README.md). Make sure you've finished it before your first class on Sunday! diff --git a/Week1/LESSONPLAN.md b/Week1/LESSONPLAN.md index e48933d..c82a328 100644 --- a/Week1/LESSONPLAN.md +++ b/Week1/LESSONPLAN.md @@ -6,11 +6,11 @@ The purpose of this class is to introduce to the student: 1. The basics of working with the command line interface 2. Basic HTML/CSS concepts: - - HTML basics - - Difference between `` and `` tags - - Semantic HTML5 - - CSS basics - - The box model + - HTML basics + - Difference between `` and `` tags + - Semantic HTML5 + - CSS basics + - The box model ## Core concepts @@ -20,10 +20,10 @@ The purpose of this class is to introduce to the student: ### Explanation -- The command line interface (CLI) is a way to navigate your computer by issuing direct commands -- In the past the computer had **ONLY** a command line -- The CLI doesn't always give feedback, like any other program on your computer would give -- Desktop application icons are visual shortcuts (Windows: show `$ calc` to launch the calculator) +- The command line interface (CLI) is a way to navigate your computer by issuing direct commands +- In the past the computer had **ONLY** a command line +- The CLI doesn't always give feedback, like any other program on your computer would give +- Desktop application icons are visual shortcuts (Windows: show `$ calc` to launch the calculator) ### Example @@ -55,18 +55,18 @@ The purpose of this class is to introduce to the student: ### Exercise -- Open a command line (Git Bash on Windows) -- Create a project folder to contain all your HYF work (mkdir) -- Create a module folder (cd, mkdir) -- Create a text file: notes.txt (cd, touch) -- Open Visual Studio Code and add some notes (code .) -- Rename the file to lecture1.txt (mv) +- Open a command line (Git Bash on Windows) +- Create a project folder to contain all your HYF work (mkdir) +- Create a module folder (cd, mkdir) +- Create a text file: notes.txt (cd, touch) +- Open Visual Studio Code and add some notes (code .) +- Rename the file to lecture1.txt (mv) _"I go on holiday and I take with me"_ with CLI commands: -- They have to repeat the commands said before them. -- Add a new command and explain what it does. -- Let the round continue twice otherwise the students that went first don't have to repeat all the commands. +- They have to repeat the commands said before them. +- Add a new command and explain what it does. +- Let the round continue twice otherwise the students that went first don't have to repeat all the commands. E.g., first student says _"ls : lists commands"_. Second student must say _"ls and cd: change directory"_. Then third student must say _"ls, cd and pwd : show print working directory"_ and so on. _By [@unmeshvrije](https://github.com/unmeshvrije)_ @@ -79,28 +79,28 @@ SECOND HALF (14.00 - 16.00) ### Explanation -- HTML is just plain text, nothing special -- Browsers read the HTML and CSS and render a beautiful webpage -- HTML of a website comes from a server (which is just another computer somewhere) -- Difference `` and `` +- HTML is just plain text, nothing special +- Browsers read the HTML and CSS and render a beautiful webpage +- HTML of a website comes from a server (which is just another computer somewhere) +- Difference `` and `` Box model -- Everything is a box -- The "box" refers to the attributes universal to every element: `margin`, `padding`, `border` -- Every element pushes against one another +- Everything is a box +- The "box" refers to the attributes universal to every element: `margin`, `padding`, `border` +- Every element pushes against one another ### Example -- Show most basic HTML structure, also show how Visual Studio Code can autocomplete html structure by just typing: html -- ``, `<link>`, `<meta>` -- Show example of the box model by using the browser inspector on various elements +- Show most basic HTML structure, also show how Visual Studio Code can autocomplete html structure by just typing: html +- `<title>`, `<link>`, `<meta>` +- Show example of the box model by using the browser inspector on various elements ### Exercise -- Using the command line create a project folder, a html file and css file -- Create a basic html structure, and link to an external css file -- Create a webpage which uses all the html tags and css properties which were have discussed +- Using the command line create a project folder, a html file and css file +- Create a basic html structure, and link to an external css file +- Create a webpage which uses all the html tags and css properties which were have discussed ### Essence @@ -108,29 +108,14 @@ Box model ### Explanation -- Explain why there are `<h1>`, `<h2>`, `<h3>` -- In theory a page can be constructed using only `<div>`s -- Semantic tags make the code more comprehensible -- It helps organize the page +- Explain why there are `<h1>`, `<h2>`, `<h3>` +- In theory a page can be constructed using only `<div>`s +- Semantic tags make the code more comprehensible +- It helps organize the page ### Example -- Show examples of semantic HTML: `<header>`, `<footer>`, `<main>`, `<section>`, `<article>`, `<nav>`, `<aside>` - -### Exercise - -### Essence - -## 4. CSS Basics - -### Explanation - -- Explain inline css, `<style>` block css and external css -- Roughly two types of CSS, styling (text) and CSS for layout structure - -### Example - -Show different ways to write css, and some basic css properties: `font-size`, `background-color`, `border` +- Show examples of semantic HTML: `<header>`, `<footer>`, `<main>`, `<section>`, `<article>`, `<nav>`, `<aside>` ### Exercise diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md index befeb2c..1de5cbb 100644 --- a/Week1/MAKEME.md +++ b/Week1/MAKEME.md @@ -2,74 +2,81 @@ ## Todo list -1. Command Line Interface -2. CSS Challenges -3. Code along -4. PROJECT: Digital Resume +1. Prep exercises +2. Command Line Interface +3. CSS Challenges +4. Code along +5. PROJECT: Digital Resume -### 1. Command Line Interface challenge +### **1. Prep exercises** -> Before you start any of the exercises, make sure to create a folder on your desktop that will hold all of your exercise files. Give the folder the name `hyf-html-exercises`. Inside, create a `week1` folder and will hold this week's exercise files inside. +> Prep exercises are exercises that you should work on _before_ the session on Sunday. These are a little more difficult or show an important concept and as such are a great exercise to talk about with your mentor. Have a solution ready by Sunday as you may be asked to show what you did. + +Inside your `HTML-CSS` fork, go to the folder `week1`. Inside of that folder, navigate to `/prep-exercises`. For each exercise, you will find a separate folder. The `README` explains what needs to be done. There will also be some questions at the bottom to think about. Go through them _before_ the session on Sunday as it will be covered then. + +### **2. Command Line Interface challenge** + +> Before you start any of the exercises, make sure to create a folder on your desktop that will hold all of your exercise files. Give the folder the name `hyf-html-exercises`. Inside, create a `week1` folder and will hold this week's exercise files inside. Using the CLI, create a plain text file (`.txt`) that contains the commands necessary to answer the following questions: 1. How do I create a hidden file or folder? How do I display it in the CLI? 2. How do I create multiple nested directories, like `/c/Users/myusername/these/folders/are/just/for/fun`? -3. How do I append a message to a file, without a newline character, so the output would be: +3. Write more than one command that will create a file that looks like the following (you are **not** allowed to use the newline character (\n)): ``` first message second message ``` -### 2. CSS Challenges +### **3. CSS Challenges** In order to improve you need to practice a lot! In the following challenges you'll work with CSS, starting from the absolute basics to building a page: -- [CSS Challenges](https://en.wikiversity.org/wiki/Web_Design/CSS_challenges): Do challenge #1 to #6. +- [CSS Challenges](https://en.wikiversity.org/wiki/Web_Design/CSS_challenges): Do challenge #1 to #6. -### 3. Code along +### **4. Code along** A big part of learning web development is through learning by example. In the following video you'll learn how to build a simple website, using basic HTML & CSS: -- [Simple website](https://www.youtube.com/watch?v=pOwLCTkypUs) +- [Simple website](https://www.youtube.com/watch?v=pOwLCTkypUs) -### 4. PROJECT: Digital Resume +### **5. PROJECT: Digital Resume** > Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to. In the following assignment you'll make your own Digital Resume. Here are the requirements that need to be fulfilled: -- It needs to be one webpage -- Your project folder should contain two files: a `.html` and a `.css` file -- Include the following pieces of information: - - Your personal information - - A picture of you - - A few lines about who you are - - Education (list at least 1 education institute) - - Work experience (list at least 1 workplace) +- It needs to be one webpage +- Your project folder should contain two files: a `.html` and a `.css` file +- Include the following pieces of information: + - Some personal information (Note: _the page will be public on the whole internet_ for our review, so as a privacy-conscious individual, feel free to use fake information here) + - A picture of you (or a fake one, https://thispersondoesnotexist.com/ provides AI generated faces) + - A few lines about who you are + - Education (list at least 1 education institute) + - Work experience (list at least 1 workplace) When writing the HTML include the following: -- Different types of headings, like `<h1>` and `<h2>` -- An unordered list (`<ul>`). Use this to list out your educational background -- Another unordered list (`<ul>`). -- An `<img>` tag (for your picture) -- Some `<p>` tags +- Different types of headings, like `<h1>` and `<h2>` +- An unordered list (`<ul>`). Use this to list out your educational background +- Another unordered list (`<ul>`). +- An `<img>` tag (for your picture) +- Some `<p>` tags When writing the CSS include the following: -- Some CSS properties, like: `margin`, `padding`, `color`, etc. -- Use [flexbox](https://www.youtube.com/watch?v=fYq5PXgSsbE) or [grid](https://www.youtube.com/watch?v=9zBsdzdE4sM) -- You are **NOT** allowed to use CSS frameworks (like Bootstrap, MaterializeCSS, etc.) +- Some CSS properties, like: `margin`, `padding`, `color`, etc. +- You are **NOT** allowed to use CSS frameworks (like Bootstrap, MaterializeCSS, etc.) +- Bonus: look into using [flexbox](https://www.youtube.com/watch?v=fYq5PXgSsbE) or [grid](https://www.youtube.com/watch?v=EFafSYg-PkI) ## SUBMIT YOUR HOMEWORK! After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following: 1. The CLI challenge -2. The Digital Resume +2. A link to your *deployed* Digital Resume! Remember your CLI knowledge to figure out the URL to it (a webserver is just a computer and so the directories are part of the URL!) Upload both in a repository to GitHub and then upload the link to it on the Trello board: "Feedback Assignments". Go through the [guide](../hand-in-homework-guide.md) to learn how to do this. -_Deadline Saturday 23.59 CET_ +_Deadline Tuesday 23.59 CET_ diff --git a/Week1/README.md b/Week1/README.md index 4d5ea85..c967827 100644 --- a/Week1/README.md +++ b/Week1/README.md @@ -6,14 +6,26 @@ These are the topics for week 1: 1. What is the command line interface (CLI)? 2. Introduction to HTML: - - Crash course - - The most commonly used tags - - Semantic HTML + - Crash course + - The most commonly used tags + - Semantic HTML 3. Introduction to CSS: - - Crash course - - Where to write it? - - The box model - - The cascading effect + - Crash course + - Where to write it? + - The box model + - The cascading effect + - Specificity +4. Working with the browsers + - What is a web browser? + - Choosing the right web browser + - How to use the inspector + - Useful browser extensions + +## 0. Video Lectures + +Your teacher Arco has made video lectures for this week's material. You can find them here: [Videos 1 - 6](https://www.youtube.com/playlist?list=PLVYDhqbgYpYXbAL_Hps1Y--THRmaTFipj) + +<a href="https://www.youtube.com/playlist?list=PLVYDhqbgYpYXbAL_Hps1Y--THRmaTFipj" target="_blank"><img src="../assets/week1-arco.png" width="600" height="400" alt="HYF Video" /></a> ## 1. What is the command line interface (CLI)? @@ -23,13 +35,13 @@ As a beginning developer it's important to get familiar with it, as it will teac The first thing you'll notice is that once you type in a command, the computer doesn't always give back feedback. This is completely normal. Most of application development goes like that, and it's good to get used to it. -Please install [Git for Windows](https://gitforwindows.org) which comes with an application called **Git BASH** which simulates frequently used CLI commands. +**Note for Windows users**: Please install [Git for Windows](https://gitforwindows.org). It comes with an application called _Git BASH_ which simulates frequently used CLI commands in Unix fashion. This aligns our work here in this course, as we can all use the same commands. But there is an even bigger reason: Being comfortable in the Unix Bash shell is very important for a web developer, as web servers usually run Linux. For more information, check the following resources and code along: -- [Understanding the Command Line for Beginners](https://learntocodewith.me/getting-started/topics/command-line/) -- [A Command Line Primer for Beginners](https://lifehacker.com/a-command-line-primer-for-beginners-5633909) -- [Command Line Crash Course](https://www.youtube.com/watch?v=yz7nYlnXLfE) +- [Understanding the Command Line for Beginners](https://learntocodewith.me/getting-started/topics/command-line/) +- [A Command Line Primer for Beginners](https://lifehacker.com/a-command-line-primer-for-beginners-5633909) +- [Command Line Crash Course](https://www.youtube.com/watch?v=yz7nYlnXLfE) ## 2. Introduction to HTML @@ -39,8 +51,8 @@ HTML is the foundation of web development. It is an acronym for **HyperText Mark In order to learn HTML properly it's important to know what is is. Go through the following resources to learn more about it: -- [HTML5 Basics - History of HTML](https://www.youtube.com/watch?v=NzzGt7EmXVw) -- [HTML Crash Course](https://www.youtube.com/watch?v=UB1O30fR-EE) +- [HTML5 Basics - History of HTML](https://www.youtube.com/watch?v=NzzGt7EmXVw) +- [HTML Crash Course](https://www.youtube.com/watch?v=UB1O30fR-EE) ### The most commonly used tags @@ -60,8 +72,8 @@ This leads to the following insight about writing code: while code is written to Take a look at the following resources to learn more about semantic HTML: -- [Semantic HTML](https://www.internetingishard.com/html-and-css/semantic-html/) -- [HTML5 as Fast as Possible](https://www.youtube.com/watch?v=IsXEVQRaTX8) +- [Semantic HTML](https://www.internetingishard.com/html-and-css/semantic-html/) +- [HTML5 as Fast as Possible](https://www.youtube.com/watch?v=IsXEVQRaTX8) ## 3. Introduction to CSS @@ -71,31 +83,31 @@ CSS is just as important as HTML. It is an acronym for **Cascading Style Sheets* Go through the following video to get a firmer grasp of the fundamentals of CSS: -- [CSS Crash Course](https://www.youtube.com/watch?v=yfoY53QXEnI) +- [CSS Crash Course](https://www.youtube.com/watch?v=yfoY53QXEnI) ### Where to write it? There are 3 basic ways to write CSS: -- In an external stylesheet: a `.css` file, that is linked to a `.html` file using the following tag: +- In an external stylesheet: a `.css` file, that is linked to a `.html` file using the following tag: ```html <link href="/path/to/style.css" rel="stylesheet" /> ``` -- In the `<head>` of a `.html` file. This is done using the `<style>` tag. This is called an `internal stylesheet`: +- In the `<head>` of a `.html` file. This is done using the `<style>` tag. This is called an `internal stylesheet`: ```html <head> - <style> - body { - background-color: blue; - } - </style> + <style> + body { + background-color: blue; + } + </style> </head> ``` -- As part of the attribute `style` inside any HTML tag. This is called `inline styling`: +- As part of the attribute `style` inside any HTML tag. This is called `inline styling`: ```html <div style="background-color: blue;">HackYourFuture is cool!</div> @@ -111,20 +123,102 @@ This is a software design principle called [`separation of concerns`](https://so To learn more about the box model, go through the following: -- [Learn CSS Box Model In 8 Minutes](https://www.youtube.com/watch?v=rIO5326FgPE) -- [Opening the Box Model](https://learn.shayhowe.com/html-css/opening-the-box-model/) +- [Learn CSS Box Model In 8 Minutes](https://www.youtube.com/watch?v=rIO5326FgPE) +- [Opening the Box Model](https://learn.shayhowe.com/html-css/opening-the-box-model/) ### The cascading effect The first C in CSS stands for Cascading and it's crucial to learning how to use CSS correctly. Essentially, it means that it matters (1) **in which order** and -(2) **how specific** -you write CSS rules. +(2) **how specific** you write CSS rules. Read the following articles to learn about it: -- [The "C" in CSS](https://css-tricks.com/the-c-in-css-the-cascade/). -- [How CSS works: understanding the cascade](https://blog.logrocket.com/how-css-works-understanding-the-cascade-d181cd89a4d8) +- [The "C" in CSS](https://css-tricks.com/the-c-in-css-the-cascade/). +- [How CSS works: understanding the cascade](https://blog.logrocket.com/how-css-works-understanding-the-cascade-d181cd89a4d8) + +### Specificity + +As there are multiple ways to write your css code which leads to multiple rules applying to the same html element CSS needs to decide which rule to follow. In the simplest form, if we for example have the following HTML: + +```html +<p>This paragraph should be styled normally</p> +<p class="explanation"> + This paragraph should be styled differently as we add a class to the element +</p> +``` + +and the following CSS: + +```css +p .explanation { + font-weight: 600; +} + +p { + font-weight: 400; +} +``` + +Then because the `p .explanation` rule is more specific than the `p` rule the `font-weight` of our second paragraph will be `600` even though the other rule was applied last. Read the following articles to learn more about how it works: + +- [Learn Basic CSS Selectors in 15 mins](https://www.youtube.com/watch?v=7kxhOI1Y38Y) +- [Specifics on CSS specificity](https://css-tricks.com/specifics-on-css-specificity/) +- Optional as it goes into every detail: [MDN's guide on Specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) + +## 4. Working with the browser + +### What is a web browser? + +You probably use it daily. Let's take a closer look at what it actually is. + +A `web browser` is software that allows you to view webpages, either retrieved from the internet or loaded from your computer. The primary function of a web browser is to render HTML files: transforming all the code (HTML, CSS and JavaScript) as well as the references (images, videos, etc.) to display a page correctly. + +For further study, delve into the following: + +- [What is a browser?](https://www.youtube.com/watch?v=TcbhVv9ty44) +- [How web browsers work](https://www.youtube.com/watch?v=WjDrMKZWCt0) +- [About your web browser](http://www.allaboutcookies.org/browsers/) + +### Choosing the right browser + +As a web developer you will write code that will display in different browsers. As such it is important that you get familiar with most major browsers in use today. These are: + +- [Google Chrome](https://www.google.com/chrome/) +- [Safari](https://support.apple.com/downloads/safari) +- [Mozilla Firefox](https://www.mozilla.org/en-GB/firefox/new/) +- [Microsoft Edge](https://www.microsoft.com/en-us/windows/microsoft-edge) +- [Opera](https://www.opera.com/download) + +There are other browsers popping up, but they are mostly enhancements of the Chromium OS browser which is the basis of Chrome. This generally means that if it works in Chrome, it will work on those browsers too. + +In your HackYourFuture journey you'll mainly be using **Google Chrome** when developing, as is has great developer tools that allow us to develop web applications in an easier and clearer way. + +### How to use the browser inspector + +The inspector is a part of web browsers developers can use to take a closer look at the composition of the HTML elements. This makes it easier to write HTML and CSS code that works. + +Watch the following videos and follow along: + +- [Using browser inspector tools](https://www.youtube.com/watch?v=WJIqIDm7CoA) +- [Google Chrome Developer Tools Crash Course](https://www.youtube.com/watch?v=x4q86IjJFag) + +### Useful browser extensions + +As web developers we'll be dealing with the browser all the time. Why not upgrade our browser so it can make our programming life easier? + +A `browser extension` is a piece of software someone has written to increase the capability of the web browser. For example, if you hate receiving advertisements you probably use something like [Adblock](https://chrome.google.com/webstore/detail/adblock/gighmmpiobklfepjocnamgkkbiglidom) to block all the unwanted ads you might find in your webpages (if not, download it as soon as possible!). + +The following is a list of extensions that have proven to be useful during web development. This list only applies for Google Chrome, so if you don't have it, [install it](https://www.google.com/chrome/). + +Extensions: + +- Modify the technologies underlying each website, in real time, using [Web developer](https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm/related?hl=en-US) +- Expose what technologies a website is using with [WhatRuns](https://chrome.google.com/webstore/detail/whatruns/cmkdbmfndkfgebldhnkbfhlneefdaaip?hl=en-US) +- If you ever wanted to know the exact color of any element in a page, you can now do so with [ColorZilla](https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp?hl=en-US) +- When developing you'll be using dummy text to populate your elements. Enter [Loren Ipsum Generator](https://chrome.google.com/webstore/detail/lorem-ipsum-generator-def/mcdcbjjoakogbcopinefncmkcamnfkdb?hl=en%20) + +There are many more of these extensions and we encourage you to explore. See what fits your needs! ## Finished? diff --git a/Week1/prep-exercises/01-bird-in-css/README.md b/Week1/prep-exercises/01-bird-in-css/README.md new file mode 100644 index 0000000..a5b2c1f --- /dev/null +++ b/Week1/prep-exercises/01-bird-in-css/README.md @@ -0,0 +1,18 @@ +# Create a bird using just HTML and CSS! + +Your task is to create the following bird using just html and css: + +![Bird created with HTML and CSS](../../../assets/bird.png) + +Tips: + +- The beak is probably the hardest and may need some googling on how you can do triangles in CSS. +- Remember to create an html as well as a css file, do not use inline styling! + +## Things to think about + +In this exercise you have seen that you can do quite cool things already with just some basic html/css knowledge. Before the session on Sunday, have a think about the following questions. You don't need to know or fill in the answers as they will be discussed on Sunday, but see if you can figure it out: + +- Which html element(s) did you use for each of the shapes? Why did you use that one/those? +- If you couldn't change the css file that you just created but you are allowed to add a new css file, how would you change the color of the bird? +- Can you think of a reason why you sometimes cannot change a css file? diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md index cbde44d..85915a6 100644 --- a/Week2/MAKEME.md +++ b/Week2/MAKEME.md @@ -4,33 +4,29 @@ ## Todo list -1. GIT exercises -2. Responsive design challenges -3. Code along -4. PROJECT: Responsive website +1. Prep exercises +2. GIT exercises +3. Responsive design challenges +4. Code along +5. PROJECT: Responsive website +6. Optional: Flexbox games -### 1. GIT exercises +### 1. Prep exercises -> Before you start any of the exercises, make sure to create a folder on your desktop that will hold all of your exercise files. Go inside the `hyf-html-exercises` folder. Inside, create a `week2` folder and will hold this week's exercise files inside. +> Prep exercises are exercises that you should work on _before_ the session on Sunday. These are a little more difficult or show an important concept and as such are a great exercise to talk about with your mentor. Have a solution ready by Sunday as you may be asked to show what you did. -# Git branching homework: +Inside your `HTML-CSS` fork, go to the folder `week2`. Inside of that folder, navigate to `/prep-exercises`. For each exercise, you will find a separate folder. The `README` explains what needs to be done. There will also be some questions at the bottom to think about. Go through them _before_ the session on Sunday as it will be covered then. -- Ask your teacher to create a repository on her/his Github account - `https://github.com/<TEACHER_NAME>/hyfclass.git` for this homework. -- Clone the repository (Google how to clone a repository). -- Send the teacher your `Github user name` so that (s)he will give you _write_ access to the repository. -- You will receive an email notification when (s)he adds you as a collaborator. -- Accept the invitation for collaboration. -- Create a file `YOUR_NAME-commands.txt`. -- Add bash commands that you like. Add description for commands. -- Then git add, commit and push the file. -- Add more files if you want to and practice with `git log` and `git pull`. -- You should observe that `you can see changes from your fellow students`. +### 2. GIT exercise -- **Do not merge the changes to master branch**. -- **Do not make any changes to master branch**. +1. Create a repository on Github called favorite-cmd-commands, make sure to check the checkmark about including a README file +2. Clone that repository (Google how to clone a repository). +3. Edit the `README.md` markdown file. +4. Add bash commands that you like (at least 3) and style them as headers. +5. Provide a short description (20 characters~) for each. +6. Then `git add`, `git commit` and `git push` the file to your GitHub repository. -### 2. Responsive design challenges +### 3. Responsive design challenges Making websites that are `responsive` to a variety of device sizes (in other words, that still "look good" on any device), has become the standard way of building websites. You have to learn how to do this too. It's not as intimating as it might seem; you're **not** going to build a separate page for literally every device size out there. @@ -38,43 +34,54 @@ Instead, you'll be applying certain CSS rules only to certain device sizes: the In the following mini-course you'll get some practice in doing this: -- [Responsive Web Design Challenges](https://learn.freecodecamp.org/responsive-web-design/responsive-web-design-principles/) +- [Responsive Web Design Challenges](https://learn.freecodecamp.org/responsive-web-design/responsive-web-design-principles/) -### 3. Code along +### 4. Code along In the following video you'll be rebuilding a responsive HTML5 website. Put your focus on how the structure of the page is built: First HTML to provide structure & content, and then the CSS. Look at the HTML tags used and the names given to classes. -- [Build A Responsive Website With HTML & CSS Tutorial](https://www.youtube.com/watch?v=ZeDP-rzOnAA) +- [Build A Responsive Website With HTML & CSS Tutorial](https://www.youtube.com/watch?v=ZeDP-rzOnAA) -### 4. PROJECT: Drones website +### 5. PROJECT: Responsive website -> Use GIT and GitHub while making this project, you can easily use this as part of your portfolio! +> Tip: Use GIT and GitHub along the way, so that you can practice it! -In this project you'll be building on an existing project. It's your job to make it `responsive` and look organised on various devices. +In this project you're going to rebuild `the homepage` of an existing responsive website. Choose one of the following: -Start off by downloading the HTML and images in the following [folder](https://github.com/HackYourFuture/HTML-CSS/tree/master/Week2/homework). +- [Codecademy](https://www.codecademy.com/) +- [Uber](https://www.uber.com/nl/nl/) +- [Adyen](https://www.adyen.com/) +- [Patreon](https://www.patreon.com/) +- [Coursera](https://www.coursera.org/) +- [Triodos](https://www.triodos.nl/) -You are going to write the CSS for this page, **it is not allowed to change the HTML**. +You don't have to build everything, but include the following requirements: -The page contains two grids: the first one should work using `floats`, the second using `flexbox`. Be careful not to mix the two! +- Create a completely new repository on your GitHub for your website, you can name it _WEBSITENAME-copy_ +- Create an `index.html` to make your HTML +- Design-wise it should be similar so the fonts, icons, text, etc. should look the same as the original +- Only rebuild the homepage (which should include a navigation bar, footer, the landing section and at least 2 other sections. A section is one part of the website that contains information and that needs to adjust based on the screen size. A list of company logo's or a single button is not considered a section!) +- Write your CSS in an external stylesheet +- You are **allowed** to use a CSS framework if you have experience in it, but you do not have to. It is up to you! +- Make use of `flexbox` +- Download the assets (images, other forms of media) through the original webpage, or use your own! +- Use media queries for both tablet and mobile (This might be same for the website you're making) +- Deploy your website using Github Pages! It is very similar to what you did in week 1, have a look at the guide if you forgot how to do it. -Other than that you should use `media queries`. Here are the requirements for each device size: +### 6. Optional: Flexbox games -- On mobile phones (smaller than 600px): a one column grid, that spans the full width -- On tablets (between 600px and 1024px): a three column grid, with the exception that the first two items span the full width together (so first we have two columns, then after the first two items we have three columns) -- On desktops (1024px and up): a four column grid, with the exception that the first item spans two columns. - There should be some `margin` between the grid items +If you like learning in a fun way there are quite a few games on the internet that teach you the way flexbox works: -Make the page look beautiful by adding some more CSS! Include CSS rules for: - -- `hover` states for buttons -- A distinct `font-family`, found from [Google Fonts](https://fonts.google.com/). Include using the `font-face` [rule](https://css-tricks.com/snippets/css/using-font-face/) -- Animation using `transition` +- [Flexbox Froggy](https://flexboxfroggy.com/) +- [Flexbox Defense](http://www.flexboxdefense.com/) +- [Flexbox Adventure](https://codingfantasy.com/games/flexboxadventure) ## SUBMIT YOUR HOMEWORK! After you've finished your todo list it's time to show us what you got! The homework you have to submit this week is the following: -1. GIT exercise #1 (the URL of the remote `git_practice` repository) -2. The Drones website +1. GIT exercise (the URL of the remote `favorite-cmd-commands` repository) +2. A link to your repository of your copied website +3. A link to your *deployed* copied website Go through the [guide](../hand-in-homework-guide.md) to learn how to submit your homework. diff --git a/Week2/README.md b/Week2/README.md index a2367f6..aec3272 100644 --- a/Week2/README.md +++ b/Week2/README.md @@ -5,15 +5,23 @@ These are the topics for week 2: 1. Introduction to GIT - - What is GIT? - - Installing GIT - - Basic GIT commands - - What is GitHub? - - Working with SSH + - What is GIT? + - Installing GIT + - Basic GIT commands + - What is GitHub? + - Working with SSH 2. More advanced CSS - - Flexible organizing with flexbox - - Pseudo class selectors - - Responsive design with media queries + - Flexible organizing with flexbox + - Using the grid layout + - Pseudo class selectors + - Responsive design with media queries +3. Markdown + +## 0. Video Lectures + +Your teacher Arco has made video lectures for this week's material. You can find them here: [Videos 7 - 11](https://www.youtube.com/playlist?list=PLVYDhqbgYpYXbAL_Hps1Y--THRmaTFipj) + +<a href="https://www.youtube.com/playlist?list=PLVYDhqbgYpYXbAL_Hps1Y--THRmaTFipj" target="_blank"><img src="../assets/week1-arco.png" width="600" height="400" alt="HYF Video" /></a> ## 1. Introduction to GIT @@ -23,21 +31,21 @@ GIT is software that allows you to save your work at any given moment in time. I You can think of it like a video game. You get to a certain point in the game, after hours of struggle. You're really proud of how far you've come, and don't want to do it over again in case you die. So you decide to _save your game_. If something bad happens after that point you can always reload your game and start from that point on. -This is exactly what happens with GIT: however, instead of calling it _saving your game_ we call it **committing your changes**. A "change" is a code modification you made within a working day. +This is exactly what happens with GIT: however, instead of calling it _saving your game_ we call it **committing your changes**. A "change" is a code modification you made in one or more files. It's recommended to commit multiple times a day, every time you make something that is worth saving. Making commits often also makes it easier to reset your work to the last working state. Discarding changes with GIT is better than to trust on CTRL-Z to undo failed attempts. If you ever would want to go back to a previous _game save_ you can make GIT help you do so by **checking out to that commit**. You will learn more about that in the next sections. Check out the following short clip to learn about the essentials of GIT: -- [GIT explained in 100 seconds](https://www.youtube.com/watch?v=hwP7WQkmECE) +- [GIT explained in 100 seconds](https://www.youtube.com/watch?v=hwP7WQkmECE) ### Installing GIT In order to use GIT you first have to install it. The software is different depending on your operating system: -- For Windows, install [Git Bash](https://git-scm.com/download/win) -- For MacOS, install [GIT](https://git-scm.com/download/mac) -- For Linux, install [GIT](https://git-scm.com/download/linux) +- For Windows, install [Git Bash](https://git-scm.com/download/win) +- For MacOS, install [GIT](https://git-scm.com/download/mac) +- For Linux, install [GIT](https://git-scm.com/download/linux) After you've installed it you can use it through the CLI. To verify that it worked, enter the command: @@ -47,7 +55,14 @@ git --version It should say that the version is **2.21** (or up if you've installed a new version). -Now that you have GIT installed, it's important to make a basic configuration. Inside your CLI, type in the following (Replace "Your name" and "your.email@youremailserver.com" with your own name and email address, respectively): +You can work with GIT using only the CLI but you can also use a GUI (graphical user interface). +Two free cross-platform examples are [SourceTree](https://www.sourcetreeapp.com/) and [Gitkraken](https://www.gitkraken.com/). +It's up to personal preference what works the best, both CLI and GUI will use the same underlying system. +You can even use both in the same project, e.g. commands on the CLI will reflect instantly in the GUI. +The main advantage of a GUI is that it has a visual overview of all commits and branches, local and remote. + +Now that you have GIT installed, it's important to make a basic configuration. Inside your CLI, type in the following (Replace "Your name" and "your.email@youremailserver.com" with your own name and email address, respectively). +In case you are using a GUI, it will probably ask the same data the first time you open the application, and it will do these commands for you. ```bash git config --global user.name "Your name" @@ -62,10 +77,10 @@ You'll use GIT like any software you execute through the CLI. There are different ways of using GIT. For now we'll learn one procedure: **committing your workspace to a local repository**. Let's take that phrase apart first: -- **Committing** is another word for saving or storing the changes you've made to the files in your workspace. For example, changing the content of a file is a "change". -- **Workspace** is another word for the project folder (and its contents). When making a repository it will be in the root (in other words, the top level) of the folder. -- **Local** refers to your computer, with no involvement of the internet. When you create a file or folder on your computer, you are creating it "locally". -- **Repository** is a storage location containing the data regarding your project folder. GIT creates a hidden folder `.git` that functions as the local repository. +- **Committing** is another word for saving or storing the changes you've made to the files in your workspace. For example, changing the content of a file is a "change". +- **Workspace** is another word for the project folder (and its contents). When making a repository it will be in the root (in other words, the top level) of the folder. +- **Local** refers to your computer, with no involvement of the internet. When you create a file or folder on your computer, you are creating it "locally". +- **Repository** is a storage location containing the data regarding your project folder. GIT creates a hidden folder `.git` that functions as the local repository. Before we start we must know the most basic command of all: @@ -75,30 +90,32 @@ git init What it does is creating a brand new **local** repository in your project folder. Only after doing this you will be able to follow along the next procedure. -No we can continue with the actual procedure itself. This happens in 3 stages: +Now we can continue with the actual procedure itself. This happens in 3 stages: 1. **Untracked**. In this stage GIT is not aware of the changes in your workspace. -2. **Staged**. In this stage the changes will be tracked by GIT. +2. **Staged**. In this stage the changes are selected for the next commit. 3. **Committed** In this stage your changes have been saved into the local repository. If you need to refer to a previous version of your workspace you can safely do that now. -This might sound very abstract, and it is. So to make it more comprehensible, watch the following videos and code along: +This might sound very abstract, and it is. So to make it more comprehensible, you can watch the following videos and/or try stuff in the Git playground: -- [GIT Tutorial for beginners](https://www.youtube.com/watch?v=HVsySz-h9r4) -- [Introduction to GIT - Core Concepts](https://www.youtube.com/watch?v=uR6G2v_WsRA) -- [GIT & GitHub Crash Course](https://www.youtube.com/watch?v=SWYqp7iY_Tc) +- [GIT command line basics](https://www.youtube.com/watch?v=HVsySz-h9r4) +- [Learn Git - using CLI & GitKraken](https://www.youtube.com/playlist?list=PLe6EXFvnTV7-_41SpakZoTIYCgX4aMTdU) +- [Introduction to GIT - Core Concepts](https://www.youtube.com/watch?v=uR6G2v_WsRA) +- [GIT & GitHub Crash Course](https://www.youtube.com/watch?v=SWYqp7iY_Tc) +- [Git Playground](https://git-school.github.io/visualizing-git/) ## What is GitHub? GitHub is **NOT the same** as GIT. While GIT is software that allows you to keep track of your files, GitHub is an online software development platform that allows you to store a copy of your code online. Check the following video to learn more: -- [What is GitHub?](https://www.youtube.com/watch?v=w3jLJU7DT5E) +- [What is GitHub?](https://www.youtube.com/watch?v=w3jLJU7DT5E) We use GitHub because of its main benefit: it allows us to freely store our code online (or `remote`, as we developers also call it). This is useful, for example, in the case that our computer crashes and our projects are lost. The second benefit of using an online code storage is that it allows us to work together with other developers, using one central (and remote) repository. This is done using branches, which you will learn about [next week](../Week3/README.me). -- [GIT Good: A Practical Introduction to GIT and GitHub I](https://codeburst.io/git-good-part-a-e0d826286a2a) -- [GIT Good: A Practical Introduction to GIT and GitHub II](https://codeburst.io/git-good-a-practical-introduction-to-git-and-github-in-git-we-trust-f18fa263ec48) +- [GIT Good: A Practical Introduction to GIT and GitHub I](https://codeburst.io/git-good-part-a-e0d826286a2a) +- [GIT Good: A Practical Introduction to GIT and GitHub II](https://codeburst.io/git-good-a-practical-introduction-to-git-and-github-in-git-we-trust-f18fa263ec48) ### Working with SSH @@ -110,13 +127,15 @@ When working with online (or what you'll hear more often: `remote`) code reposit Check the following resources for more information: -- [Beginners Guide To SSH](https://www.youtube.com/watch?v=qWKK_PNHnnA) -- [How SSH works](https://www.youtube.com/watch?v=zlv9dI-9g1U) +- [Beginners Guide To SSH](https://www.youtube.com/watch?v=qWKK_PNHnnA) +- [How SSH works](https://www.youtube.com/watch?v=zlv9dI-9g1U) When working with GitHub we want to ensure the same level of security. Thus, we will have to make an SSH key and link it to GitHub! -- [How to generate an SSH key](https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) -- [Adding SSH Key to GitHub](https://www.youtube.com/watch?v=H5qNpRGB7Qw) +- [How to generate an SSH key](https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) +- [Adding SSH Key to GitHub](https://www.youtube.com/watch?v=H5qNpRGB7Qw) + +> Note that if you are in AZC then usually the SSH port is blocked on the internet. If that is the case you cannot use SSH, so you will need to do all your communication with git using HTTPS instead ## 2. More advanced CSS @@ -130,8 +149,8 @@ What it does is helping you to think according to `grid-based web design`: eleme Read the following to learn more about 'grid-based web design': -- [Introduction to grids in web design](https://webdesign.tutsplus.com/articles/a-comprehensive-introduction-to-grids-in-web-design--cms-26521) -- [Intro to Web Design Grids](https://www.youtube.com/watch?v=gjYZoPEk0ow) +- [Introduction to grids in web design](https://webdesign.tutsplus.com/articles/a-comprehensive-introduction-to-grids-in-web-design--cms-26521) +- [Intro to Web Design Grids](https://www.youtube.com/watch?v=gjYZoPEk0ow) Once you understand this way of thinking you'll know why it makes sense to use `flexbox`. @@ -143,9 +162,23 @@ display: flex; This will give us the `flexbox`-specific properties, so we can develop clean and organised CSS. Check the following links to understand how this is done: -- [CSS Flexbox in 100 Seconds](https://www.youtube.com/watch?v=K74l26pE4YA) -- [What is Flexbox and Why to Learn it](https://www.youtube.com/watch?v=CXSwNIPsyTs) -- [CSS Flexbox Course](https://www.youtube.com/watch?v=-Wlt8NRtOpo)) +- [Interactive guide to flexbox](https://www.joshwcomeau.com/css/interactive-guide-to-flexbox/) +- [What is Flexbox and Why to Learn it](https://www.youtube.com/watch?v=CXSwNIPsyTs) +- [CSS Flexbox Course](https://www.youtube.com/watch?v=-Wlt8NRtOpo) + +### Using the grid layout + +The most recent addition to the css toolkit for organising your layout is using `display: grid`. Where every other layout always goes from top to bottom, grid allows you to create a two-dimensional layout. + +The complete guide to grid by css-tricks is the go to guide, read it here: + +- [CSS-tricks complete guide to grid](https://css-tricks.com/snippets/css/complete-guide-grid/) + +### When to use flex and when to use grid + +A common question we get is when to use flexbox and when to use grid. Kevin Powell is a css master and does a great job of answering that question here: + +- [Flexbox or grid](https://www.youtube.com/watch?v=3elGSZSWTbM) ### Pseudo class selectors @@ -153,7 +186,7 @@ Every HTML element can be in different states. The default state is when an elem ```css button { - background-color: white; + background-color: white; } ``` @@ -161,14 +194,14 @@ There are times when a user interacts with an element. For example: clicking a b ```css button:hover { - background-color: blue; + background-color: blue; } ``` -Like the hover state there are others as well: `click`, `focus`, `visited`, and others. For most of these element states we have special selectors. Read the following article to learn about them. Once you do try them out for yourself!: +Like the hover state there are others as well: `click`, `focus`, `visited`, and others. For most of these element states we have special selectors. Read the following article to learn about them. Once you have done that, try them out for yourself!: -- [Pseudo class selectors](https://css-tricks.com/pseudo-class-selectors/) -- [Pseudo-Classes vs Pseudo-Elements in CSS](https://www.youtube.com/watch?v=0VDx1570X3U) +- [Pseudo class selectors](https://css-tricks.com/pseudo-class-selectors/) +- [Pseudo-Classes vs Pseudo-Elements in CSS](https://www.youtube.com/watch?v=0VDx1570X3U) ### Responsive design with media queries @@ -180,8 +213,55 @@ The primary way of making a responsive website is by writing custom CSS code tha Learn more about media queries here: -- [Introduction to Media Queries](https://varvy.com/mobile/media-queries.html). -- [Learn CSS Media Query in 7 Minutes](https://www.youtube.com/watch?v=yU7jJ3NbPdA) +- [Introduction to Media Queries](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Media_queries). +- [Learn CSS Media Query in 7 Minutes](https://www.youtube.com/watch?v=yU7jJ3NbPdA) + +### Layouts + +Now that you know about all the tools at your disposal it is time to look at creating layouts, which are the most basic design of your app/website. It is important to always do this step first as any changes in the layout will affect all of the other parts in the website, whereas the smaller parts should not affect the layout. + +Learn more about them here: +- [The fundamentals of css layouts](https://www.youtube.com/watch?v=yMEjLBKyvEg) + +## 3. Markdown + +As you've probably seen, every project on GitHub comes with a file called `README.md` +This readme file is used in general to outline the goal of the project and usually includes some code examples. + +Even the page you are reading now is also created using Markdown. + +Markdown is not a syntax that browsers understand, it is however really simple to write and read with any text editor. +Many online GIT platforms, like GitHub, will parse Markdown files and display them as pretty HTML pages. +Another good example on Markdown support is Slack. You can style your Slack messages using Markdown! + +A few examples of what you can do with Markdown: + +| HTML | Markdown | +| ---------------------------- | -------------------------------------------- | +| H1 | `# title` | +| H2 | `## title` | +| _Emphasis_ | `*italic` | +| **Bold** | `**bold**` | +| ~~Strikethrough~~ | `~~Scratch this.~~` | +| [Link](#) | `[link text](https://somewhere)` | +| `<p>Single line of code</p>` | `` use single `backticks` around your code`` | + +If you want to show a bigger block of code, you start and end with 3 backticks + +````markdown +``` + <html> + <head>...</head> + <body>...</body> + </html> +``` +```` + +With Markdown you can to more things like images, list, checklists, tables and more. +If you want to learn more about Markdown you could check these sources: + +- [Markdown Crash Course](https://www.youtube.com/watch?v=HUBNt18RFbo) +- [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) ## Finished? diff --git a/Week2/assets/wireframe.png b/Week2/assets/wireframe.png index a4b2fb2..d492a2a 100644 Binary files a/Week2/assets/wireframe.png and b/Week2/assets/wireframe.png differ diff --git a/Week2/prep-exercises/01-drones-website/README.md b/Week2/prep-exercises/01-drones-website/README.md new file mode 100644 index 0000000..8952850 --- /dev/null +++ b/Week2/prep-exercises/01-drones-website/README.md @@ -0,0 +1,24 @@ +# Drones Website + +In this project you'll be building on an existing project. It's your job to make it `responsive` and look organised on various devices. + +The HTML and images are in this folder. You are going to write the CSS for this page, **it is not allowed to change the HTML**. + +The page contains two grids: the first one should work using `flexbox`, the second using `grid`. Be careful not to mix the two! + +Other than that you should use `media queries`. Here are the requirements for each device size: + +- On mobile phones (smaller than 600px): a one column grid, that spans the full width +- On tablets (between 600px and 1024px): a three column grid, with the exception that the first two items span the full width together (so first we have two columns, then after the first two items we have three columns) +- On desktops (1024px and up): a four column grid, with the exception that the first item spans two columns. +- There should be some `margin` between the grid items + +So that it works like this: + +![](../../assets/wireframe.png) + +## Things to think about + +- Which way do you think is better for this use case? Flex or grid? What use cases can you think of that would make you use the other one? +- Can every browser run both flex and grid? What about certain features of flex and grid? What is an easy way to see if browsers support a certain feature? +- Did you use the browser inspector for the exercise? What is the reason for yes/no here? diff --git a/Week2/homework/images/drone1.png b/Week2/prep-exercises/01-drones-website/images/drone1.png similarity index 100% rename from Week2/homework/images/drone1.png rename to Week2/prep-exercises/01-drones-website/images/drone1.png diff --git a/Week2/homework/images/drone2.png b/Week2/prep-exercises/01-drones-website/images/drone2.png similarity index 100% rename from Week2/homework/images/drone2.png rename to Week2/prep-exercises/01-drones-website/images/drone2.png diff --git a/Week2/homework/images/drone3.png b/Week2/prep-exercises/01-drones-website/images/drone3.png similarity index 100% rename from Week2/homework/images/drone3.png rename to Week2/prep-exercises/01-drones-website/images/drone3.png diff --git a/Week2/homework/images/drone4.png b/Week2/prep-exercises/01-drones-website/images/drone4.png similarity index 100% rename from Week2/homework/images/drone4.png rename to Week2/prep-exercises/01-drones-website/images/drone4.png diff --git a/Week2/homework/images/drone5.png b/Week2/prep-exercises/01-drones-website/images/drone5.png similarity index 100% rename from Week2/homework/images/drone5.png rename to Week2/prep-exercises/01-drones-website/images/drone5.png diff --git a/Week2/homework/images/drone6.png b/Week2/prep-exercises/01-drones-website/images/drone6.png similarity index 100% rename from Week2/homework/images/drone6.png rename to Week2/prep-exercises/01-drones-website/images/drone6.png diff --git a/Week2/homework/images/drone7.png b/Week2/prep-exercises/01-drones-website/images/drone7.png similarity index 100% rename from Week2/homework/images/drone7.png rename to Week2/prep-exercises/01-drones-website/images/drone7.png diff --git a/Week2/homework/index.html b/Week2/prep-exercises/01-drones-website/index.html similarity index 92% rename from Week2/homework/index.html rename to Week2/prep-exercises/01-drones-website/index.html index ee2247a..ccc05cb 100644 --- a/Week2/homework/index.html +++ b/Week2/prep-exercises/01-drones-website/index.html @@ -3,83 +3,83 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Grids + Drones
-

Grids

+

Drones

-
-

Grid with floats

-