Workflows
“I’m not a great programmer; I’m just a good programmer with great habits.”
“A workflow consists of repeatable activities necessary to complete a task.”
Learn the skills required to work a collaborative software project using only
Markdown. Limiting your projects to Markdown lets you focus on the big picture
without getting distracted by more challenging code.
Abstract Workflow Flowchart
It is an overview and a big picture of Git and GitHub workflow.
Abstract Workflow Flowchart Source
Detailed Workflow Flowchart
Detailed workflow steps on remote repository (GitHub) and local repository
(your computer).
Detailed workflow flowchart image (click here)
![Detailed workflow flowchart image](/workflows/assets/hyf-workflow-steps-v1.0.svg)
[Detailed workflow flowchart source](https://viewer.diagrams.net/?tags=%7B%7D&highlight=0000ff&edit=_blank&layers=1&nav=1&title=HYF%20Workflow%20Steps%20v1.0.drawio#R7V1rd%2BI2E%2F41nNN%2BgOO74WNCNhvaJJtN0jeb%2FdJjQIAbX1jbbJL%2B%2BleyLWxL8g3kC9n2tA0IWbaleZ4ZzYykgTy13z57xnZz4y6BNZCE5dtAvhhIkiwIAvyDSt6jEmkylqOStWcuozIxKXgw%2FwVxYXzhemcugZ%2BpGLiuFZjbbOHCdRywCDJlhue5r9lqK9fK3nVrrAFV8LAwLLr0yVwGm6h0LOlJ%2BRUw1xt8Z1GbRL%2FMjcXL2nN3Tnw%2Fx3VA9Itt4Gbid%2FQ3xtJ9TRXJnwby1HPdIPrkzv9BryYJljGH%2FRvWi6482wUb14tKHg0beKjs%2Buav%2B4er2cUsqvPFWxuO%2Ba8RmK4T1byCj%2Fbs7rzLXbDz4EMJ58Bamzt7IF1eoK%2B3YOtG116bC%2BD4cVfczB5xqfMClrO4tU0QoLE4g1fDf19fX0dW%2BLvpjBYuatN04P8Cw7J33sY3l2ZYEbVz9Xw5fAJz3wwAq6kNfMx3%2BJir8DFHc5C58B49JOOqtRlsdvP41tk33b8magNL39Ps%2Fcm6ftE%2B%2F%2FHV%2F2H8df7n4%2B3%2Fhsko2G9TYFmo6fAr%2FBCPRubX4tb2MuQBJyi7K74T1fT47udyKOsz53E4v5jcXK7Xf9zElwg%2FDWsH0oLhB%2B9YgkMZBKgRYSCfv25gbz9sjQX69RWCFpZtAhtJlQg%2F%2BoHnvoCpa4VSFcqsfL4yLYsoim8LvAC8EUApeUkx1bWfgWuDwHuH1%2BFWtPiNYr4YjjGDvCboE2Vca5OGnjqJS40Y8%2Bt981J6AOOeZfeyqj2eP%2BvBt2vPfJ89bsBu%2BPA8lMp7GSwhbcRfXQ%2Bicu06hvUpKT3PjkNS59p1t3Hv%2FwOC4D3mQGMXuNmxqdPB8Nmg2C9AwUvFnRUY3hoEBfXi9tALpkaaHkEPWJBjfmZ5k%2FtQ0AL%2F8Hh2%2F0iNRyTImLIlQso3xhbVs9%2FWSG2NVpb7utgYXjDyYXcEf4s5QKk3AhQ6cqVeVvSs1KsqQ%2BoFhtBrTYm82oWEgzcz%2BJb6%2FIyaGqnxt4u3uOXwyzv%2B4sDX%2FZb%2BkroKfU0uC7%2Fh6zijCdsmZWhSeoUmLKkJmi7AykSGimAMkC2iWQFSAK4ThDaWFRsb2o8dMk5gJ8qrlRBaeUmRtkZ%2FfdsI74%2FbgM8XNRP9vPXcuQVsSsoq6ac0rFGjWCyFpgCqiiRANQZAJQZAx00BVP8PoLUAqlQEqNYrgCoUQL9sgYPu5ByJT9P3dyAfny5q%2F7MZXO3mx2M0a1UO0LxwMlEuGtSoutA7wIoi1ZFtIBajT6yHPox0oQbSD0fs7Lskb%2Fx3YfFdB%2BDvH4s%2Fln%2F%2FGIrjqhaqwBuz8aV3rhkCC4ucOCakShEJaYmeNb6OEJj9g1SSIWaXyBQddCFTnJlZo4eZ%2BfJSr5hZo4bibLkMvVPofxtErRHFIsdERLFzD7PrMcT9aAZwGCX41MIF8BeeuQ09O2HBNXIQ%2BdHnG9MCPvoprnznuchx4ecQ%2Fimy%2FESYVGF5tUWWl2i5uHU%2FOvEjOUqN%2B3QaSi5DIva%2FhFZ79OiiRljxtTxJVaZmlT0dVRkmFr%2BhMNoLF5bA%2BKGO1jQaIdmyMBmp2WaiF6d0Dd2YRMKE0ViO4koawxXd1coHxyq3q%2FNvN9vh1ezt5XE6fHkSv18ba8ZklKDJBECYE9EPQz%2BUI8iygqht3yKmJDjzGVSmvRZnUQmsntOoKp5F1YRzL4EmybWBpioYnYdCi6sAF75%2FSoJn%2Ft4a8MKoirCwoEaGrVxSkudtXHu%2B86s66UtUryBMp02qXpUwhSVdGakirX1ZXsuJ3JT27cQePkRlHopn3pCVqurGnjku6ZDM1ApN3QzaeNrdazPA8I3cJoaNcBm2h%2B423HnWvjRztzYs7Ybhrssk3LXJSB7TcJfbdKlItHvslExt3liu6uLEyQt9wTI9ijPHD6LwgbO1%2BcI4bFAw8Q0%2BDEIVjLIyhLbq9JTGnQIyhcHnDATzjeXUmF1exrPVdp2hzMmReprYlmiP5cOrGSw2sacsVpfO3N8eiWvbCPOMbMMPUBpUDq6FuWc46O4NWAYbsHhxd%2BhjtWc5PY7RJgTHKBLD36brLRKMTM%2B5umCcUubITPXFhpijkBHKqWPSL%2BrQGSNbDlJBYIN06gEjwIkNDniluIDCJ0kREczxRcQMICoeOoYNyEnAsTjPk6328S%2BRaRASdlOm8c9KzmsO%2F91a%2FJwMjOxQLsHK2IVS1Qf6mFSkD7lfiYL4uTnRR8ZqiX0MR7BIylhoiEeKRS3DL6n03kT01p6xNEHSRpz42wXpSFnSEZlGR6ukQwf5umChPNYghj4W6ZPO3sLkUs5Caq9YCD83LxZC6cnoOZ1leKm9tUCQOD0Dw3%2FhNN2oTh%2B9JQpZHeHobHdM0UmaZnHcvYgaDgpJCiO9thWUxCCzMUqlAe6o6jvhb8GwA%2FIKme4v4mzFkmj8mecZ76lqW1TBz7%2BRSmZBisQSI6K%2BrAhF9eGH6Am4Rk2xj5JBkXPMXrdfUrQ2z%2BU0NHDX0Rq5NBwMy1yjxWoLKE8ASv454hRzYVhn8Q%2B2uVxGyAO%2B%2Ba8xj5PJ5fO4g2Hj6vlAvaABlJvQQstwIT8wVlLFKxrjpxmklwbmxMglkUj04JOMMhQ1QiqyLTQXUFf64dypa2e1mXNRndz65d1RaMMoTNLpHNGHjmKxAHOBt8YHzkpb8MWyycn4vTCR0TuD%2F61Mx%2FRjHxwxvU4ZwijFppotXDnz5gStYtLYkGSmVcyKCoqCki9cx6G%2FH4nsFYl9P8y8ubuqa02ResXdMl%2FX2oWbQjIB1am7RHj%2BuoOMH6A3nCLHGa0nPh5uNQK3ObPZVqP5Ci9C%2FzipvAem%2FtRlnkPm522aoZihyqmsah5h2u7BQZ4jLZ%2FxJAspUZlkm2g3CZ7dP%2FRsuOP1IzUdv5V9T52sBakup9zzaNoXJYmrmj7zYkezV7Bs2IIvZzrrVIVDbgVr5t5h5Xq2weEewPNcz%2F9vkhAxI5HNL6ojhq0hy4w5gkgtJeJnbmjdEl%2B92P6h0bh2kgoLlXEHziO2htb1Eg2ds%2BaNG2WyEsoP55hL822AY3Mx3%2Fyy0TmdXDA0ZkTxWbMZtanZDG74FO2qXHrZW1WHBPt500vVzEOlJXoRJTyTwM6wccv8wjenMd5xIOSXFVruP4jzk%2FzAWEcmEhxLo2ZukhG2mk1LQq23mpTUG94SBV1F8e0Kvhi9zY0GtG7Zqy1%2FRyvsxdxuhGEbMet1tuCC%2BTSlHrpyz5uS43l7CMB2zzC77TJKp%2Ba7lGKx88Lhq5hW2QcPYPcpugojjlAk0jV8b7KKG8dmmxbLe4%2F9HnzDE5GSXbi2HWpHG%2Fg%2B2jO6Zr4vvnxoU7o1afEX06yyWCnE0dR6An329WbtzX68vz0Hwe395O71%2BRtzE5L2SYUzQagyTRDMt%2Be%2BkdpxEzRWlPhwIN%2FtwpyByFxebAxnXRBKYsN4GzbRBDLFPiFT1rLAVPHcvbPIo0Y7ZvLShU57%2Fn5URm6bkRStaka%2BdshmP5PJcVbGO%2FOC5mwOrTfbvh1gjvLxePct1FdZQNWaAiqMBGHSeytYY1kyvKN%2FiX60gbcO9arrrCwTbTN5WpG16hmlbSldWdJYQThskGaCcM3tctrNOQA5hCTWIqRmdCxvlmKY5p2G4DTSRS5o2SYadpFrfI3%2BB9f6mSyQS9jpl43DaRIRYp0w4nCtLuHX%2BAZFPt1eVB3dRg6JqRuoq7X8uimpEGVtnBELnXXuUqsn0OB1mk3sB%2Fv05f7Py%2BsvT7DOw%2BOnu4eqAgN7MxgUpJDnH5hV3b5gyVRWo1ZZsaJS1jWUKcvwfawq8Zlz9XVajZg%2Fkc4Bx5Rh0YgMqVKa8u%2FJ3doz9XwGeQN9uA1S5PUr9Q5KvC2Qo0aylB5qaY34WJUcIri7P6ZtWD9znEpvTY%2BGt%2BtX1QpuRaVNb7%2FSp9lNmbsl%2FHYHPBO%2BO1IhDVEE%2B%2BCRyt6%2BpvOmccbqOGuvjCVCRvidxFLEhXwTeZKthSDhJOeGlAYnyCNBUieC0JXPfB9aHADQJ4agc13hn1l0MtSHpyPSOmHSkdoQHTFRlq%2FS5uTgH20CV8vSQP%2FQ194D2w0ALVroTF7fDFzUFeRvv0Xa7%2FfKQl2e%2BpG%2FEUTC0XmztLTopqz1tNxREjmW5rLG3tyB01pdibSXWfHwpjQk%2BxCug3iOFhwOkrof7msXzpvgFYXiho59hnWmrr3dQXX5e6GAUfAqdVkfJWCNpyxqvZMjvon12d34iO12j96Rj2ive0XYeiKOwtCETfkEmeLCSuFq31LnbEQz0uGZ9ca8TeijhoL2zv5F5n62sF93hHT4vsAPIuH2QxuX%2Fz7e292HOhdAFPT9Cr1CeEujhtLX2XZFPxLtepBnzjjllN1jLZ1yOtHljLRoAtEEvwBgUX%2FknRgg5KWIN7SXfzZXt2B73g%2FDGGOpgjUwbnUS0g03tH6sTyHuy11vnW3AXfjcKSDfxElCpMEOmaQtZNvsR%2Fgw4CV97EzwTloFbz%2F2%2BurJRtadHXbNVvaqJmXEZahK0n4RRt2DZknFARuTqcYaPiFdoknHTSUARUdyF509xOmQbnfpRtfsbKdNemnYZy6KAjmbyDl0e9wmxbAyiH4FiimCQPmEgvtW%2BWxa0MekwODhqX2StUzunE011TS9cFhfm%2BfnvnWrEkWPU3CZQer6CwV6tPqlEDvlerz%2BmltBxPss9mJ1QeH7p3DwZIaXzUJRDY%2BpoPbmDbemyCTkRvr4%2BMOw8%2BN3aX3ZmFaUKctnrNE6kRVLFmUpf1iPUooSK5p8OrPoHnjmMOLKNSl3j32O%2FhPIAx2UCWFTHa5KqaYaVqUi7eg7wFRn6Nu56y2BN4zt9bPwFt5vw2G6%2FHemBi5V5Yc0XW%2FiMEOJgneeu%2FaA7zczg%2BiYK0VZIPfTGUraeITdzG2sMWbDvXTlyYfbtbhuBuIBi0v7aZVVdZUmVpkoyMpxVtk%2BvkLaChUDLDSHi%2Fq4pKl2dzQu7OvaKUQ5qZJh%2BuIgN1XbfveBtRpksinNQzIae0GWMt7EN2FKbYSXyJUxpa5T3jd%2BZEkn9IQLr4g%2BbmSFVXO9rRK9rYuMvKmmVkGx%2B5l1OtbpuLZaylkvStEuVwZaW9Y71iA44RjvIlCb%2BCUydZlsiZ%2FtfnX%2B7WY7vJq9vTxOhy9P4vdrYz08bI3uYkFS%2BofxlnHcdaPeIvcWdtcoBA2%2FQxUTU2siC%2FIhplbd4xFFAYfM8aJXqfh8RIk4QIKoP8icj9jKZjSFY8Mp2Xbm7w2p6IBZxqISfBTtsoltP%2FItsaOTbRszJUhPjaoqrN08BJ2ZddeU1Safdiy%2B0xVwVfeDrU14WQ4SVfEQ7mPYCNhOPdraUOXDrA3GSaJq9plEmWipOVLkfBJ3vqsyZ9FBMx5MIVXHW89%2FE6KVfPhPb92c98BYIgxchke93IOfJngdtObt7K%2FakNWsR6fVnRfZuKGNiRPbebGW1ujahi7UPXUOTdvvCdYfPUIub6yvR1pQE3wXqh25sDsiRuDVPvDyFLlPnJAmc4vcx3Rz9CytrGYEvR9nKzCdAhJj1zvmCLSUoqaRC2ZlUqaqkhzpIoAkX%2B2QSV6uOTox57%2FleieUv68oWW07VDDjtbEWlylRdARiFj5OeOUxA7g1F8ibtNvmy5PhHHkPPDXLuYXhQyHYLyN%2FQTUNNK5JAgYS%2B1h3w9J%2FwCKI5laGs9fsG2ChRmw0jAEwbBuJPSV8%2Fdg7rjHtDdU1mRiuaSyPF3Od6X4TuBrSC796LhrshD5RGPHGXQJU4%2F8%3D)
TOP
Learning Objectives
Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)
There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji's will help you prioritize
your study time and to measure your progress:
- 🥚: Understanding this material is required, it covers the base skills you'll
need for this module and the next. You do not need to finish all of them but
should feel comfortable that you could with enough time.
- 🐣: You have started all of these exercises and feel you could complete them
all if you just had more time. It may not be easy for you but with effort you
can make it through.
- 🐥: You have studied the examples and started some exercises if you had time.
You should have a big-picture understanding of these concepts/skills, but may
not be confident completing the exercises.
- 🐔: These concepts or skills are not necessary but are related to this module.
If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push
yourself without getting distracted from the module's main objectives.
---
Practice the foundational workflows of software development by learning to write
Markdown locally on your own computer using Visual Studio Code (VSCode), the
Command Line Interface (CLI), and NPM scripts to automate your code’s quality
(formatting, linting and spell checking).
Practice using Git to save and organize your development process. You will learn
how you can use Git to go back to previous versions of your project, and to work
on different changes in parallel.
Learn how you can connect your local Git repositories with a GitHub repository
to add more structure to your development process and to share your projects.
Learn how to collaborate with a group on a single project hosted in a GitHub
repository. Practice using GitHub’s project management features to organize your
group’s tasks and to double-check your project’s code quality.
Explore the wider world of Open Source software by learning how communities of
independent developers write and maintain the code we all rely on.
TOP
Suggested Study
CLICK HERE
Lesson Plans
CLICK HERE
Deliverables
CLICK HERE
Study Tips
expand/collapse
- Don't rush, understand! Programming is hard.
- The examples and exercises will still be there to study later.
- It's better to fail tests slowly and learn from your mistakes than to pass
tests quickly and not understand why.
- Don't skip the examples! Understanding and experimenting with working code is
a very effective way to learn programming.
- Write lots of comments in the examples and exercises. The code in this
repository is yours to study, modify and re-use in projects.
- Practice
[Pair Programming](https://home.hackyourfuture.be/students/study-tips/pair-programming):
two people, one computer.
- Take a look through the
[Learning From Code](https://home.hackyourfuture.be/students/study-tips/learning-from-code)
guide for more study tips
### Study Board
Creating a project board on your GitHub account for tracking your study at HYF
can help you keep track of everything you're learning. You can create the board
at this link: `https://github.com/your_user_name?tab=projects`.
These 4 columns may be helpful:
- **todo**: material you have not studied yet
- **studying**: material you are currently studying
- **to review**: material you want to review again in the future
- **learned**: material you know well enough that you could help your classmates
learn it
TOP
Setting Up
You will need
NPM
installed on your computer to study this material
- Clone this repository:
- using SSH:
git clone --depth 1 git@github.com:HackYourFutureBelgium/workflows.git
- Navigate to the cloned repository
- Install dependencies:
It’s highly recommended that you use either Linux or Mac. If you have a
Windows computer you can either dual-boot your computer or install a virtual
machine.
TOP
Code Quality Scripts
expand/collapse
This repository comes with some scripts to check the quality of this code. You
can run these scripts to check the code provided by HYF, and to check the code
you write when experiment with the examples and complete the exercises.
### `npm run format`
This script will format all of the code in this repository making sure that all
the indentations are correct, the code is easy to read, and letting you know if
there are any syntax errors.
### `npm run format:check`
Checks the formatting of all files in the repository and throws an error if any
files are not well-formatted.
### `npm run spell-check`
This script will check all of the files in your repository for spelling
mistakes. Spelling is not just a detail, is important! Good spelling helps
others read and understand your programs with less effort.
`spell-check` is not so clever though, it doesn't have _all_ possible words in
it's dictionary and it won't know if you _wanted_ to spell a word incorrectly.
If you think one of it's "Unknown word"s is not a problem, you can either ignore
the suggestion or add the word to the `"words": [ ... ],` list in
[.cspell.json](./.cspell.json).
### `npm run lint:md`
This script will [lint](https://en.wikipedia.org/wiki/Lint_%28software%29) all
the Markdown files in this repository, checking for syntax mistakes and other
bad practices. Fixing linting errors will help you learn to write better code by
pointing out your mistakes _before_ they cause problems in your program.
Some linting errors will take some practice to understand and fix, but it will
be a good use of time.
### `npm run lint:ls`
This script will [lint](https://en.wikipedia.org/wiki/Lint_%28software%29) the
names of all files and folders in the project to check that they follow the
project naming convention
([kebab-case](https://betterprogramming.pub/string-case-styles-camel-pascal-snake-and-kebab-case-981407998841)).
TOP