GithubHelp home page GithubHelp logo

hackyourfuture / node.js Goto Github PK

View Code? Open in Web Editor NEW
70.0 28.0 571.0 3.84 MB

This repository contains all the material for the HackYourFuture module "Understand backend: creating web servers with JavaScript using Node.js"

JavaScript 97.49% HTML 2.51%
javascript nodejs expressjs backend hyf

node.js's Introduction

If you are following the HackYourFuture curriculum we recommend you to start with module 1: HTML/CSS/GIT. To get a complete overview of the HackYourFuture curriculum first, click here.

Please help us improve and share your feedback! If you find better tutorials or links, please share them by opening a pull request.

Module #5 - Understand backend: creating web servers with JavaScript using Node.js (Backend)

NodeJS

So far you've learned about the fundamentals of what makes up a webpage in your browser. We call this frontend: the HTML that gives structure to our pages, the CSS that give it a nice look, and the JavaScript that makes our page interactive. Everything you can "see" and "interact" with is made out of these technologies.

However, there is a whole part of applications that you might not be aware of. Have you ever wondered how data moves from one place to another, from one page to another?

This is where backend comes into play: all the parts of an application that can't directly be accessed by the user, but happen "behind the screen". Well here's the secret: there is code that tells the computer how to move and manipulate data. This code is hidden away from the user, because there is no need for them to know about it.

During the following 2 weeks you'll be learning all about this. As a tool to illustrate these concepts we will be using Node.js: software that allows us to use the language of JavaScript to write backend applications.

Learning goals

In this module you get familiar with the world of backend development. By the end of it, you have learned:

  • What is meant by the term backend;
  • The client-server model;
  • What HTTP and REST mean;
  • How to create your own web servers with Node.js, using Express.js;
  • What a templating engine is;
  • How to use the Node Package Manager (NPM);
  • How to use Express.js to make a RESTful API;
  • How to build a small full-stack application.

Before you start

Before you start you need to install a very important software: Node.js! We're using the latest stable version of it, which is v16.x. Click on the following link to download it to your computer:

Verify the installation by running node -v (-v is short for version) from the Command Line. It should say: v16.13.0 or a later version than that.

How to use this repository

Repository content

This repository consists of 3 essential parts:

  1. README: this document contains all the required theory you need to understand while working on the assignments. 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 assignments. 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!

How to study

Let's say you are just starting out with the Node.js module. 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 Node.js, that would be Week1 Reading
  2. You spend Wednesday and Thursday going over the resources and try to get a basic understanding of the concepts. In the meanwhile, you'll also implement any feedback you got on last week's assignments (from the Using API's module)
  3. On Friday you start with the assignments, found in the MAKEME.md. For the first week of Node.js, that would be Week1 Assignments
  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 assignments
  8. DEADLINE 2: You submit your assignments to the right channels (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

To have a more detailed overview of the guidelines, please read this document 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 mentor for this module is Andrej Gajduk: Product Owner and Senior Full-Stack Developer!

You can find out more about him here:

Learn from Andrej in the following playlist of videos he has made for you! (Click on the image to open the link)

HYF Video

Planning

Week Topic Readings Assignments Lesson Plan
1. Client-server model, HTTP & Express Readings W1 Assignments W1 Lesson Plan W1
2. REST, CRUD, API calls Readings W2 Assignments W2 Lesson Plan W2
3. User Authentication, session management, Testing Readings W3 Assignments W3 Lesson Plan W3

Finished?

Did you finish the module? You're a rockstar!

If you feel ready for the next challenge, click here to go to Databases!

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 :)

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

node.js's People

Contributors

allhandsondeck avatar daanaerts avatar erols avatar erolsuleyman avatar gajduk avatar georgesapkin avatar gijscor avatar gizemcandemir avatar joostlubach avatar josephinehyf avatar laurensrietveld avatar mkruijt avatar noergitkat avatar old-profile avatar remarcmij avatar robvk avatar spirosikmd avatar stasel avatar tjebbee avatar vintharas avatar wouterkleijn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node.js's Issues

Example HYF Planning Issue

Class 20 - Node.js

Note: $-signs to be replaced with@-signs to enable GitHub mentions.

Generated with this tool: https://github.com/remarcmij/hyf-plan

Teachers

  • $josja Josja
  • $yash-kapila

Week 1 - 12/05/2019

  • Lecture delivered
  • Recordings uploaded

Homework reviewed

  • $Akif2709 #350
  • $alaashhadat #346
  • $eneserdek #349
  • $ghifo
  • $mohammadnaefaldarwesh
  • $Muhannad1989 #347
  • $Nadoshka
  • $OrhanGoc
  • $RamazanInce #345
  • $sigma21
  • $WadeeaKiwan #348

Homework approved

  • $Akif2709
  • $alaashhadat
  • $eneserdek
  • $ghifo
  • $mohammadnaefaldarwesh
  • $Muhannad1989
  • $Nadoshka
  • $OrhanGoc
  • $RamazanInce
  • $sigma21
  • $WadeeaKiwan

Week 2 - 19/05/2019

  • Lecture delivered
  • Recordings uploaded

Homework reviewed

  • $Akif2709
  • $alaashhadat
  • $eneserdek
  • $ghifo
  • $mohammadnaefaldarwesh
  • $Muhannad1989
  • $Nadoshka
  • $OrhanGoc
  • $RamazanInce
  • $sigma21
  • $WadeeaKiwan

Homework approved

  • $Akif2709
  • $alaashhadat
  • $eneserdek
  • $ghifo
  • $mohammadnaefaldarwesh
  • $Muhannad1989
  • $Nadoshka
  • $OrhanGoc
  • $RamazanInce
  • $sigma21
  • $WadeeaKiwan

Week 3 - 26/05/2019

  • Lecture delivered
  • Recordings uploaded

Homework reviewed

  • $Akif2709
  • $alaashhadat
  • $eneserdek
  • $ghifo
  • $mohammadnaefaldarwesh
  • $Muhannad1989
  • $Nadoshka
  • $OrhanGoc
  • $RamazanInce
  • $sigma21
  • $WadeeaKiwan

Homework approved

  • $Akif2709
  • $alaashhadat
  • $eneserdek
  • $ghifo
  • $mohammadnaefaldarwesh
  • $Muhannad1989
  • $Nadoshka
  • $OrhanGoc
  • $RamazanInce
  • $sigma21
  • $WadeeaKiwan

Useful resource

Hey HYFers! Ex volunteer here with a tip. I've taught a course on backend programming through Node at the AUAS and I think we might have some assignments/slides/resources you can benefit from like this npm package which interactively teaches students about HTTP codes.

You can check out our course repo here. Assignments and resources are grouped by week and every week has its own readme. Let me know if you have any questions!

some request about more explanation about homework

Hi,
I am writing some comments about Node.Js Repository Week-3 Homework.
I have found the explanation about assignment as insufficient.
Firstly, “Read through the code from the lecture, make sure you understand the flow of the program.” sentence should be given in more comprehensive and explanatory way.The code from lecture can be changed class to class. We need more definition about it.
Secondly, assignment wants four more action, but we need some extra info about them. Given parts are not enough to understand what is ‘readTodo’ or ‘clearTodos’. It says “add four more” but these functions even was at our previous assignment.
Thirdly, some instructions about checking the code by postman can be helpful. For instance “at postman, do test by adding ……. code to body section” ext.
Fourthly, some examples of bugs can be given to help students who may write their code with considering to handle these bugs such as writing different entries than which shuld be such as negative index or bigger number than object length.
Finally, using extra js file for functions can be a requirement for assignment. After uploading our code, our mentors have wanted this point also. It could be stated beforehand.
These are just minor requests of a student.

more clear week3 homework Readme file

in my opinion Readme file in week3 for the homework is not clear, maybe it is better to show how the todo should be stored in the json file i.e
{
"id": "7f3abae4-0985-408b-8daa-b51582144e1b",
"task": "something",
"done": false
}
the "id" is generated by uuid and the "task" value is taken from Postman request body.

Maybe that helps make things a bit clearer.

Irrelevant video

The video linked in section 1. Making use of other APIs, titled "The Many Meanings of Event-Driven Architecture • Martin Fowler", has nothing to do with the topic that the section claims to be talking about. It is not about APIs and it's not about microservices. The word microservices was pronounced twice on the minute 48, and it is out of the context of APIs. The video is a bit complex and long, and even if useful, not in within the scope, of node.js, or even APIs.

link

the video link for "What is Node.js? What can you do with it? Why should you use it?" is not available

Wrong link

NPM tutorials. Follow chapters 1 - 10 estimated time: 4-6 hours This link directs to an irrelevant website, not to the NPM tutorial.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.