{"id":20365619,"url":"https://github.com/hackyourfuture/react","last_synced_at":"2025-05-16T10:08:30.309Z","repository":{"id":21644137,"uuid":"93503545","full_name":"HackYourFuture/React","owner":"HackYourFuture","description":"This repository contains all the material for the HackYourFuture module \"React.js: Building dynamic UIs with modern JavaScript\"","archived":false,"fork":false,"pushed_at":"2025-02-17T16:54:07.000Z","size":11145,"stargazers_count":411,"open_issues_count":4,"forks_count":720,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-05-16T10:08:21.729Z","etag":null,"topics":["hyf","mobx","react"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HackYourFuture.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-06-06T09:58:23.000Z","updated_at":"2025-05-13T08:35:13.000Z","dependencies_parsed_at":"2023-02-10T12:31:44.159Z","dependency_job_id":"0cf73dbb-d133-4ab1-a13c-96bb0bf6c05d","html_url":"https://github.com/HackYourFuture/React","commit_stats":{"total_commits":207,"total_committers":18,"mean_commits":11.5,"dds":0.7536231884057971,"last_synced_commit":"1fab0f2b12f9cac5d3cae55658622fda0acc6195"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackYourFuture%2FReact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackYourFuture%2FReact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackYourFuture%2FReact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackYourFuture%2FReact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HackYourFuture","download_url":"https://codeload.github.com/HackYourFuture/React/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509477,"owners_count":22082892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hyf","mobx","react"],"created_at":"2024-11-15T00:19:06.386Z","updated_at":"2025-05-16T10:08:25.301Z","avatar_url":"https://github.com/HackYourFuture.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e If you are following the HackYourFuture curriculum, we recommend you to start from module 1: [HTML/CSS/GIT](https://github.com/HackYourFuture/HTML-CSS). To get a complete overview of the HackYourFuture curriculum first, click [here](https://github.com/HackYourFuture/curriculum).\n\n\u003e 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/React/pulls).\n\n# Module #7 - React.js: Building dynamic UIs with modern JavaScript (Frontend)\n\n![React Module](./assets/react.png)\n\nWelcome to the React module! Congratulations on making it this far!\n\nIn these four weeks, we will go back to the frontend and learn how to make faster, more modern user interfaces. In the HTML and JavaScript modules, you've learned all about creating webpages that hold unchanging data. No matter who is using the website, the data will always be the same. We call this a `static website`. At the same time you've build various HTML pages so the user is able to access various parts of the website. We call this a `multi-page application (MPA)`.\n\nIn the Node.js module, you've learned about how to change the content of the page, based on the user's input, using a `templating engine`. Type in a keyword and the server sends back a `template` with customized data. We call this a `dynamic website`. However, we did it in such a way were we still had to send different pages to the client depending on the URL (for example, `/` or `/users`). This is also an MPA.\n\nIn this module, however, you'll learn how to make more complex websites. Though we won't be calling them websites anymore: they'll be `web applications`. They're not just informational, but allow the user to interact with it. This similar to any application on your desktop. These React applications will also deal with `dynamic data`: its `state` changes depending on who's using it.\n\nBesides being dynamic, React applications also are `single page applications (SPA)`. Essentially, this means that on loading the whole application (every page and its contents) is accessible to the user, without the need to send requests to the server to get another page.\n\n## Before you start\n\nIn order to properly work through this module smoothly, we're going to use software that will allow us to write React applications with ease. It's called `vite`.\n\nGo to your command line and execute the following:\n\n```bash\nnpm create vite FOLDER_NAME -- --template react\n```\n\nNow verify that you have it by executing the following:\n\n```bash\nvite --version\n```\n\nIt should be at least version `5.x.y`.\n\n## Learning goals\n\nIn order to successfully complete this module you will need to master the following:\n\n- Understand the React way of thinking about `user interfaces`;\n- Know the importance and place of `state` and how to pass it down;\n- Be able to work with different `hooks` and even create your own;\n- Recognize the utility of `modularization`;\n- Putting emphasis on writing reusable code (`components`);\n- How to handle `client-side routing`.\n\n## How to use this repository\n\n### Repository content\n\nThis repository consists of 3 essential parts:\n\n1. `README`: this document contains all the required theory you need to understand **while** working on the assignment. 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.\n2. `MAKEME`: this document contains the instructions for each week's assignment. Start with the exercises rather quickly, so that you can ground the concepts you read about earlier.\n3. `LESSONPLAN`: this document is meant for teachers as a reference. However, as a trainee don't be shy to take a look at it as well!\n\n### How to study\n\nLet's say you are just starting out with the Databases module. This is what you do:\n\n1. The week always starts on **Wednesday**. First thing you'll do is open the `README.md` for that week. For the first week of `Databases`, that would be [Week1 Reading](/Week1/README.md).\n2. 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 assignment (from the Node.js module).\n3. On **Friday** you start with the assignment, found in the `MAKEME.md`. For the first week of `React`, that would be [Week1 assignment](/week1/MAKEME.md).\n4. You spend **Friday** and **Saturday** playing around with the exercises and write down any questions you might have.\n5. **DEADLINE 1**: You'll submit any questions you might have before **Saturday 23.59**, in the class channel.\n6. On **Sunday** you'll attend class. It'll be of the Q\u0026A format, meaning that there will be no new material. Instead your questions shall be discussed and you can learn from others.\n7. You spend **Monday** and **Tuesday** finalizing your assignment.\n8. **DEADLINE 2**: You submit your assignment to the right channels (GitHub) before **Tuesday 23.59**. If you can't make it on time, please communicate it with your mentor.\n9. Start the new week by going back to point 1!\n\nIn summary:\n\n![Weekflow](assets/weekflow.png)\n\nTo 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/cohort on Slack!\n\n## Planning\n\n| Week | Topics                                                  | Reading Materials                | Assignment                         |\n| ---- | ------------------------------------------------------- | -------------------------------- | -------------------------------- |\n| 1.   | What is React, JSX, State \u0026 Props, Deploy a static site | [Readings W1](./week1/README.md) | [Assignment W1](./week1/MAKEME.md) |\n| 2.   | API calls, Testing                                      | [Readings W2](./week2/README.md) | [Assignment W2](./week2/MAKEME.md) |\n| 3.   | Client-side routing, Context, Custom hooks              | [Readings W3](./week3/README.md) | [Assignment W3](./week3/MAKEME.md) |\n| 4.   | Project!                                                | [Readings W4](./week4/README.md) |                                  |\n\n## Finished?\n\nDid you finish the module? Impressive!\n\nIf you feel ready for the **final** challenge, click [here](https://www.github.com/HackYourFuture/Project) to go to project! _Note that reviewing the feedback on your previous assignments remains the priority._\n\n_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 :)_\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eThis work is licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\u003eCreative Commons Attribution 4.0 International License\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackyourfuture%2Freact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackyourfuture%2Freact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackyourfuture%2Freact/lists"}