├── .editorconfig ├── .eslintrc.json ├── .gitattributes ├── .github └── workflows │ └── manual.yml ├── .gitignore ├── .htmlhintrc ├── .stylelintrc ├── CODEOWNERS ├── README.md ├── css ├── app.css └── normalize.min.css ├── img ├── .gitkeep ├── chasing-the-snow.jpg ├── headerimage.jpg ├── profilepic.jpg ├── seeing-clearly.png ├── social-google.png ├── social-instagram.png ├── social-twitter.png ├── something-to-remember.jpg └── village-in-the-valley.jpg ├── index.html └── js └── app.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "ecmaVersion": 6 5 | }, 6 | "env": { 7 | "browser": true 8 | }, 9 | "rules": { 10 | "curly": [ 11 | "error", 12 | "all" 13 | ], 14 | "eqeqeq": [ 15 | "error", 16 | "allow-null" 17 | ], 18 | "no-alert": "error", 19 | "no-caller": "error", 20 | "no-console": "off", 21 | "no-empty-function": "error", 22 | "no-eval": "error", 23 | "no-multi-spaces": "error", 24 | "no-multi-str": "error", 25 | "no-global-assign": "error", 26 | "no-new": "error", 27 | "no-new-func": "error", 28 | "no-new-wrappers": "error", 29 | "no-return-assign": "error", 30 | "no-script-url": "error", 31 | "no-sequences": "error", 32 | "no-unused-expressions": "error", 33 | "no-with": "error", 34 | "yoda": "error", 35 | "array-bracket-spacing": [ 36 | "error", 37 | "never" 38 | ], 39 | "brace-style": [ 40 | "error", 41 | "1tbs" 42 | ], 43 | "no-shadow": "error", 44 | "no-shadow-restricted-names": "error", 45 | "no-undef-init": "error", 46 | "camelcase": "error", 47 | "comma-spacing": "error", 48 | "eol-last": "error", 49 | "quotes": [ 50 | "error", 51 | "single", 52 | { 53 | "avoidEscape": true, 54 | "allowTemplateLiterals": true 55 | } 56 | ], 57 | "indent": [ 58 | "error", 59 | 4, 60 | { 61 | "SwitchCase": 1 62 | } 63 | ], 64 | "key-spacing": [ 65 | "error", 66 | { 67 | "beforeColon": false, 68 | "afterColon": true 69 | } 70 | ], 71 | "keyword-spacing": "error", 72 | "new-cap": "error", 73 | "new-parens": "error", 74 | "no-array-constructor": "error", 75 | "no-multiple-empty-lines": [ 76 | "error", 77 | { 78 | "max": 2 79 | } 80 | ], 81 | "no-new-object": "error", 82 | "func-call-spacing": [ 83 | "error", 84 | "never" 85 | ], 86 | "no-trailing-spaces": "error", 87 | "semi": [ 88 | "error", 89 | "always" 90 | ], 91 | "semi-spacing": [ 92 | "error", 93 | { 94 | "before": false, 95 | "after": true 96 | } 97 | ], 98 | "space-before-blocks": [ 99 | "error", 100 | "always" 101 | ], 102 | "space-before-function-paren": [ 103 | "error", 104 | { 105 | "anonymous": "always", 106 | "named": "never" 107 | } 108 | ], 109 | "space-in-parens": [ 110 | "error", 111 | "never" 112 | ], 113 | "space-infix-ops": "error" 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | # https://help.github.com/articles/dealing-with-line-endings/ 3 | * text=auto 4 | -------------------------------------------------------------------------------- /.github/workflows/manual.yml: -------------------------------------------------------------------------------- 1 | # Workflow to ensure whenever a Github PR is submitted, 2 | # a JIRA ticket gets created automatically. 3 | name: Manual Workflow 4 | 5 | # Controls when the action will run. 6 | on: 7 | # Triggers the workflow on pull request events but only for the master branch 8 | pull_request_target: 9 | types: [assigned, opened, reopened] 10 | 11 | # Allows you to run this workflow manually from the Actions tab 12 | workflow_dispatch: 13 | 14 | jobs: 15 | test-transition-issue: 16 | name: Convert Github Issue to Jira Issue 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@master 21 | 22 | - name: Login 23 | uses: atlassian/gajira-login@master 24 | env: 25 | JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} 26 | JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} 27 | JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} 28 | 29 | - name: Create NEW JIRA ticket 30 | id: create 31 | uses: atlassian/gajira-create@master 32 | with: 33 | project: CONUPDATE 34 | issuetype: Task 35 | summary: | 36 | Github PR - nd104 PDSND | Repo: course-git-blog-project | PR# ${{github.event.number}} 37 | description: | 38 | Repo link: https://github.com/${{ github.repository }} 39 | PR no. ${{ github.event.pull_request.number }} 40 | PR title: ${{ github.event.pull_request.title }} 41 | PR description: ${{ github.event.pull_request.description }} 42 | In addition, please resolve other issues, if any. 43 | fields: '{"components": [{"name":"nd104 - Programming for Data Science"}], "customfield_16449":"https://classroom.udacity.com/nanodegrees/nd000/parts/e36917bf-8075-4d97-8045-f610b37f041f", "customfield_16450":"Resolve the PR", "labels": ["github"], "priority":{"id": "4"}}' 44 | 45 | - name: Log created issue 46 | run: echo "Issue ${{ steps.create.outputs.issue }} was created" 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | project.docx 2 | .DS_Store 3 | .github/** 4 | -------------------------------------------------------------------------------- /.htmlhintrc: -------------------------------------------------------------------------------- 1 | { 2 | "tagname-lowercase": true, 3 | "attr-lowercase": true, 4 | "attr-value-double-quotes": true, 5 | "attr-no-duplication": true, 6 | "doctype-first": true, 7 | "id-unique": true, 8 | "src-not-empty": true, 9 | "alt-require": true, 10 | "spec-char-escape": true, 11 | "tag-pair": true, 12 | "title-require": true, 13 | "doctype-html5": true, 14 | "style-disabled": true, 15 | "head-script-disabled": true 16 | } 17 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "block-closing-brace-newline-after": "always", 4 | "block-closing-brace-newline-before": "always-multi-line", 5 | "block-no-empty": true, 6 | "block-opening-brace-newline-after": "always-multi-line", 7 | "block-opening-brace-space-before": "always", 8 | "color-hex-case": "lower", 9 | "color-hex-length": "long", 10 | "color-no-invalid-hex": true, 11 | "comment-empty-line-before": "always", 12 | "comment-whitespace-inside": "always", 13 | "declaration-block-no-shorthand-property-overrides": true, 14 | "declaration-block-semicolon-newline-after": "always", 15 | "declaration-block-semicolon-space-before": "never", 16 | "declaration-block-trailing-semicolon": "always", 17 | "declaration-colon-space-after": "always", 18 | "declaration-colon-space-before": "never", 19 | "declaration-no-important": true, 20 | "function-calc-no-unspaced-operator": true, 21 | "function-comma-space-after": "always", 22 | "function-comma-space-before": "never", 23 | "function-parentheses-space-inside": "never", 24 | "function-whitespace-after": "always", 25 | "indentation": 4, 26 | "media-feature-colon-space-after": "always", 27 | "media-feature-colon-space-before": "never", 28 | "media-feature-name-no-vendor-prefix": true, 29 | "media-feature-range-operator-space-after": "always", 30 | "media-feature-range-operator-space-before": "always", 31 | "media-query-list-comma-space-after": "always-single-line", 32 | "media-query-list-comma-space-before": "never", 33 | "no-eol-whitespace": true, 34 | "number-leading-zero": "always", 35 | "number-no-trailing-zeros": true, 36 | "length-zero-no-unit": true, 37 | "rule-non-nested-empty-line-before": ["always", { "except": ["after-single-line-comment"] }], 38 | "selector-combinator-space-after": "always", 39 | "selector-combinator-space-before": "always", 40 | "selector-list-comma-newline-after": "always", 41 | "selector-list-comma-space-before": "never", 42 | "selector-pseudo-element-colon-notation": "double", 43 | "value-list-comma-space-after": "always", 44 | "value-list-comma-space-before": "never" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @udacity/active-public-content -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Version Control with Git 2 | 3 | This is the repo for [Udacity's Version Control with Git course](https://www.udacity.com/course/version-control-with-git--ud123). In the course, students will learn version control while learning the basics to intermediate knowledge of Git. 4 | 5 | This repo contains the source code of a blog project that will be used throughout the course. 6 | 7 | ## Table of Contents 8 | 9 | * [Instructions](#instructions) 10 | * [Creator](#creators) 11 | 12 | ## Instructions 13 | 14 | * clone the project 15 | * open the index file in a browser 16 | 17 | ## Creators 18 | 19 | * Richard Kalehoff 20 | - [https://github.com/richardkalehoff](https://github.com/richardkalehoff) 21 | - [https://twitter.com/richardkalehoff](https://twitter.com/richardkalehoff) 22 | 23 | With the help of: 24 | 25 | * Colt 26 | * James 27 | * Julia 28 | -------------------------------------------------------------------------------- /css/app.css: -------------------------------------------------------------------------------- 1 | /*** Site Colors *** 2 | 3 | pale-grey: #fafbfc 4 | pale-grey-two: #dbe2e8 5 | dark: #2e3d49 6 | bluegrey: #7d97ad 7 | aquamarine: #02ccba 8 | 9 | */ 10 | 11 | html { 12 | box-sizing: border-box; 13 | } 14 | 15 | *, 16 | *::before, 17 | *::after { 18 | box-sizing: inherit; 19 | } 20 | 21 | body { 22 | background-color: #fafbfc; 23 | color: #2e3d49; 24 | font-family: Georgia, Times, 'Times New Roman', serif; 25 | } 26 | 27 | h1 { 28 | font-family: 'Montserrat', sans-serif; 29 | } 30 | 31 | h2, 32 | h3, 33 | h4 { 34 | font-family: 'Open Sans', sans-serif; 35 | } 36 | 37 | p { 38 | line-height: 1.5; 39 | } 40 | 41 | .container { 42 | margin: auto; 43 | max-width: 1300px; 44 | } 45 | 46 | 47 | /*** Header Styling ***/ 48 | .page-header { 49 | background-image: url('../img/headerimage.jpg'); 50 | background-position: 50% 75%; 51 | background-size: cover; 52 | text-align: center; 53 | padding: 1em; 54 | margin-bottom: 2rem; 55 | min-height: 25vh; 56 | } 57 | 58 | h1 { 59 | letter-spacing: 8px; 60 | position: relative; 61 | text-transform: uppercase; 62 | text-shadow: 0 0 1px white; 63 | } 64 | 65 | h1::after { 66 | border: 5px solid #02ccba; 67 | border-radius: 50%; 68 | content: ''; 69 | height: 15px; 70 | width: 15px; 71 | position: absolute; 72 | } 73 | 74 | 75 | /*** Article Styling ***/ 76 | article, 77 | aside { 78 | margin: 2em; 79 | } 80 | 81 | article header { 82 | display: flex; 83 | align-items: baseline; 84 | justify-content: space-between; 85 | } 86 | 87 | time { 88 | color: #7d97ad; 89 | } 90 | 91 | article img { 92 | height: auto; 93 | width: 100%; 94 | } 95 | 96 | .read-more { 97 | color: #02ccba; 98 | font-family: 'Open Sans', sans-serif; 99 | font-weight: bold; 100 | text-decoration: none; 101 | text-transform: uppercase; 102 | } 103 | 104 | .read-more::after { 105 | content: '►'; 106 | position: relative; 107 | left: 7px; 108 | font-size: 80%; 109 | top: -1px; 110 | } 111 | 112 | 113 | /*** Sidebar Styling ***/ 114 | aside { 115 | border-top: 2px solid #dbe2e8; 116 | margin-top: 2em; 117 | padding-top: 2em; 118 | } 119 | 120 | .social-link { 121 | display: inline-block; 122 | margin-right: 0.75em; 123 | } 124 | 125 | 126 | /*** Footer Styling ***/ 127 | footer { 128 | border-top: 2px solid #dbe2e8; 129 | margin-top: 4em; 130 | padding: 2em; 131 | text-align: center; 132 | } 133 | 134 | 135 | /*** Reponsive Styles ***/ 136 | @media (min-width: 650px) { 137 | aside { 138 | display: flex; 139 | } 140 | 141 | .sidebar-text { 142 | margin-left: 2em; 143 | } 144 | 145 | .sidebar-text h2 { 146 | margin-top: 0; 147 | } 148 | } 149 | 150 | @media (min-width: 1000px) { 151 | .page-header { 152 | min-height: 35vh; 153 | } 154 | 155 | .container { 156 | display: flex; 157 | } 158 | 159 | main { 160 | flex: 1 1 70%; 161 | } 162 | 163 | aside { 164 | display: block; 165 | border-top: 0; 166 | border-left: 2px solid #dbe2e8; 167 | margin: 0; 168 | padding: 2em; 169 | flex: 0 1 30%; 170 | align-self: flex-start; 171 | } 172 | 173 | .sidebar-text { 174 | margin-left: 0; 175 | } 176 | 177 | .sidebar-text h2 { 178 | margin-top: 0.5em; 179 | } 180 | } 181 | 182 | /*** Helper Classes ***/ 183 | 184 | /* from the HTML5 Boilerplate project for hidden, but accessible headings: https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L126-L145 */ 185 | .visuallyhidden { 186 | border: 0; 187 | clip: rect(0 0 0 0); 188 | height: 1px; 189 | margin: -1px; 190 | overflow: hidden; 191 | padding: 0; 192 | position: absolute; 193 | width: 1px; 194 | white-space: nowrap; 195 | } 196 | -------------------------------------------------------------------------------- /css/normalize.min.css: -------------------------------------------------------------------------------- 1 | button,hr,input{overflow:visible}audio,canvas,progress,video{display:inline-block}progress,sub,sup{vertical-align:baseline}html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} menu,article,aside,details,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{}button,select{text-transform:none}[type=submit], [type=reset],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}/*# sourceMappingURL=normalize.min.css.map */ 2 | -------------------------------------------------------------------------------- /img/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/.gitkeep -------------------------------------------------------------------------------- /img/chasing-the-snow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/chasing-the-snow.jpg -------------------------------------------------------------------------------- /img/headerimage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/headerimage.jpg -------------------------------------------------------------------------------- /img/profilepic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/profilepic.jpg -------------------------------------------------------------------------------- /img/seeing-clearly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/seeing-clearly.png -------------------------------------------------------------------------------- /img/social-google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/social-google.png -------------------------------------------------------------------------------- /img/social-instagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/social-instagram.png -------------------------------------------------------------------------------- /img/social-twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/social-twitter.png -------------------------------------------------------------------------------- /img/something-to-remember.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/something-to-remember.jpg -------------------------------------------------------------------------------- /img/village-in-the-valley.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/img/village-in-the-valley.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blog Project 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 |
19 |
20 |

Articles

21 | 22 |
23 |
24 |

Chasing the Snow

25 | 26 |
27 | 28 | A dogsled team in Alaska 29 | 30 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, laborum dolorem, dolor error nihil vitae similique necessitatibus omnis iure quasi vel iste repellendus alias! Asperiores voluptatem, maiores quibusdam eaque consequatur.

31 | 32 | Read more 33 |
34 | 35 |
36 |
37 |

Seeing Clearly

38 | 39 |
40 | 41 | Mountain peaks in Alaska 42 | 43 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, laborum dolorem, dolor error nihil vitae similique necessitatibus omnis iure quasi vel iste repellendus alias! Asperiores voluptatem, maiores quibusdam eaque consequatur.

44 | 45 | Read more 46 |
47 | 48 |
49 |
50 |

Something to Remember

51 | 52 |
53 | 54 | A winding, snow-covered road 55 | 56 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, laborum dolorem, dolor error nihil vitae similique necessitatibus omnis iure quasi vel iste repellendus alias! Asperiores voluptatem, maiores quibusdam eaque consequatur.

57 | 58 | Read more 59 |
60 | 61 |
62 |
63 |

Village in the Valley

64 | 65 |
66 | 67 | A quaint winter village nestled in the mountain 68 | 69 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi, laborum dolorem, dolor error nihil vitae similique necessitatibus omnis iure quasi vel iste repellendus alias! Asperiores voluptatem, maiores quibusdam eaque consequatur.

70 | 71 | Read more 72 |
73 |
74 | 75 | 96 |
97 | 98 | 101 | 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/course-git-blog-project/b0da0bd4af16ae0b81cde66810f1b9a7a3d77f9f/js/app.js --------------------------------------------------------------------------------