{"id":13495786,"url":"https://github.com/uidotdev/react-course-curriculum","last_synced_at":"2025-05-15T16:07:02.343Z","repository":{"id":69993938,"uuid":"50911915","full_name":"uidotdev/react-course-curriculum","owner":"uidotdev","description":"Curriculum for ui.dev's React course.","archived":false,"fork":false,"pushed_at":"2020-07-09T19:07:01.000Z","size":80,"stargazers_count":2080,"open_issues_count":0,"forks_count":1026,"subscribers_count":66,"default_branch":"master","last_synced_at":"2025-05-11T12:15:01.877Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ui.dev/react/","language":null,"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/uidotdev.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}},"created_at":"2016-02-02T10:11:25.000Z","updated_at":"2025-05-07T17:57:26.000Z","dependencies_parsed_at":"2023-03-02T19:31:28.500Z","dependency_job_id":null,"html_url":"https://github.com/uidotdev/react-course-curriculum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uidotdev%2Freact-course-curriculum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uidotdev%2Freact-course-curriculum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uidotdev%2Freact-course-curriculum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uidotdev%2Freact-course-curriculum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uidotdev","download_url":"https://codeload.github.com/uidotdev/react-course-curriculum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254374475,"owners_count":22060611,"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":[],"created_at":"2024-07-31T19:01:38.192Z","updated_at":"2025-05-15T16:06:57.334Z","avatar_url":"https://github.com/uidotdev.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://ui.dev\"\u003e\n    \u003cimg\n      src=\"https://ui.dev/images/logos/ui.png\"\n      alt=\"UI.dev Logo\" width=\"300\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003eReact Course Curriculum - \u003ca href=\"https://hn.ui.dev/\"\u003eHacker News Clone\u003c/a\u003e\u003c/h3\u003e\n\n### Info\n\nThis is the repository for UI.dev's \"React\" course curriculum project.\n\nFor more information on the course, visit __[ui.dev/react](https://ui.dev/react/)__.\n\n### Project\n\nThis is a (soft) \"Hacker News\" clone. \n\nYou can view the final project at __[hn.ui.dev](https://hn.ui.dev/)__\n\n### Solution\n\nIf you get stuck, you can view my solution by checking out the `solution` branch. \n\nYou will need to use React's `dangerouslySetInnerHTML` prop to show the HTML posts that the API gives you. We didn't cover it in the course but you can [read about it here](https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml).\n\n### Approaches\n\nThere are a few different ways you can approach this, each with varying difficulties. \n\n+ Hardest: Look at the [finished project](https://hn.ui.dev/) and build it. This is obviously the hardest approach but the one you'll gain the most learning from. The only thing that you'll need is the documentation for the [Hacker News API](https://github.com/HackerNews/API).\n\n+ Whatever word is between \"Hardest\" and \"Easiest\": Copy my [api.js](https://github.com/uidotdev/react-course-curriculum/blob/solution/app/utils/api.js) file to your project then build the app. After all, you're here to learn React, not the Hacker News API. If you took this approach, I wouldn't blame you.\n\n+ Easiest: Take 10-15 minutes to walk through [my code](https://github.com/uidotdev/react-course-curriculum/tree/solution). Notice how I approached different problems and how you may or may not want to do something similar. From there, start building and reference my project only as you need it.\n\n### Project Preview\n\nLight Mode          |  Dark Mode\n:-------------------------:|:-------------------------:\n![](https://user-images.githubusercontent.com/2933430/55542659-c0b0e100-5684-11e9-9877-20f218c8fde5.png) ![](https://user-images.githubusercontent.com/2933430/55542657-c0184a80-5684-11e9-9473-8a153a232301.png) ![](https://user-images.githubusercontent.com/2933430/55542656-c0184a80-5684-11e9-923b-2836944a474a.png) |  ![](https://user-images.githubusercontent.com/2933430/55542654-c0184a80-5684-11e9-9436-9b3ae973e8b5.png) ![](https://user-images.githubusercontent.com/2933430/55542658-c0b0e100-5684-11e9-821f-03dc5f80c97c.png) ![](https://user-images.githubusercontent.com/2933430/55542655-c0184a80-5684-11e9-832b-657b683d0625.png)\n\n### [Tyler McGinnis](https://twitter.com/tylermcginnis)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuidotdev%2Freact-course-curriculum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuidotdev%2Freact-course-curriculum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuidotdev%2Freact-course-curriculum/lists"}