{"id":20691908,"url":"https://github.com/mitulagr2/fullstackopen","last_synced_at":"2026-04-10T12:32:06.365Z","repository":{"id":100849841,"uuid":"474637793","full_name":"mitulagr2/fullstackopen","owner":"mitulagr2","description":"Exercise solutions with live deployments for The Full Stack Open 2022 by the University of Helsinki.","archived":false,"fork":false,"pushed_at":"2023-07-09T11:04:10.000Z","size":1705,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-11T01:34:09.470Z","etag":null,"topics":["fullstackopen2022","graphql","mongodb","nodejs","reactjs","redux","typescript"],"latest_commit_sha":null,"homepage":"https://fullstackopen-mitulagr2.netlify.app","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/mitulagr2.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}},"created_at":"2022-03-27T12:56:14.000Z","updated_at":"2025-02-12T14:00:25.000Z","dependencies_parsed_at":"2024-11-16T23:28:53.195Z","dependency_job_id":null,"html_url":"https://github.com/mitulagr2/fullstackopen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mitulagr2/fullstackopen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitulagr2%2Ffullstackopen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitulagr2%2Ffullstackopen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitulagr2%2Ffullstackopen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitulagr2%2Ffullstackopen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitulagr2","download_url":"https://codeload.github.com/mitulagr2/fullstackopen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitulagr2%2Ffullstackopen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31642754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["fullstackopen2022","graphql","mongodb","nodejs","reactjs","redux","typescript"],"created_at":"2024-11-16T23:18:25.778Z","updated_at":"2026-04-10T12:32:06.307Z","avatar_url":"https://github.com/mitulagr2.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eFull Stack Open 2022 🔥\u003c/h1\u003e\n\nThis is my course submission repository for [The Full Stack Open 2022](https://fullstackopen.com/en/) by The University of Helsinki!\n\n![certificate-fullstack](https://user-images.githubusercontent.com/69587385/195052400-daa40801-70de-4c7f-8fd9-1fffc0366be7.png)\n\nTable of contents\n=================\n\n\u003c!--ts--\u003e\n   * [💡 What I Learnt](#-what-i-learnt)\n      * [Part 1 - Introduction to React](#part-1---introduction-to-react)\n      * [Part 2 - Communicating with server](#part-2---communicating-with-server)\n      * [Part 3 - Programming a server with NodeJS and Express](#part-3---programming-a-server-with-nodejs-and-express)\n      * [Part 4 - Testing Express servers, user administration](#part-4---testing-express-servers-user-administration)\n      * [Part 5 - Testing React apps](#part-5---testing-react-apps)\n      * [Part 6 - State management with Redux](#part-6---state-management-with-redux)\n      * [Part 7 - React router, custom hooks, styling app with CSS and webpack](#part-7---react-router-custom-hooks-styling-app-with-css-and-webpack)\n      * [Part 8 - GraphQL](#part-8---graphql)\n      * [Part 9 - TypeScript](#part-9---typescript)\n   * [💌 Other Full Stack Open Repositories](#-other-full-stack-open-repositories)\n\u003c!--te--\u003e\n\n# 💡 What I Learnt\n\n## Part 1 - Introduction to React\n\n-\tJavascript ES6.\n-\tComponent architecture.\n-\tHelper functions.\n-\tPage re-rendering.\n-\tStateful components.\n-\tReact hooks.\n-\tEvent handling.\n-\tDebugging React applications and [React devtools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en).\n\n## Part 2 - Communicating with server\n\n-\tRendering a collection.\n-\tUsing HTML forms.\n-\tControlled components.\n-\tHandling data stored in a remote server.\n-\tJavaScript Promises.\n-\tREST API.\n-\tSingle responsibility principle and modularizing backend communication.\n-\tAdding CSS to React.\n\n## Part 3 - Programming a server with NodeJS and Express\n\n- HTTP verbs and resource oriented architecture.\n- [curl](https://curl.se/) and [Postman](https://www.postman.com/).\n- HTTP safety and idempotence [standards](https://www.rfc-editor.org/rfc/rfc9110.html#name-common-method-properties).\n- Using middlewares.\n- Same origin policy and CORS.\n- Deploying to Heroku.\n- Debugging Node applications and Chrome dev tools.\n- Validating received data using mongoose [custom validators](https://mongoosejs.com/docs/validation.html#custom-validators).\n- Configuring ESLint.\n\n## Part 4 - Testing Express servers, user administration\n\n-\tUnit and Integration tests.\n-\tUser authentication and authorization.\n-\tNode.js project directory structure best practices.\n-\t[jest](https://jestjs.io/).\n-\t[supertest](https://github.com/visionmedia/supertest) to test backend API.\n-\tUsing async/await and [express-async-errors](https://github.com/davidbanham/express-async-errors) to refactor tests.\n-\tIntroduction to database modelling.\n-\tToken based authentication and it's limitations.\n\n## Part 5 - Testing React apps\n\n-\tTesting the React code.\n-\tComponent references with [useRef](https://reactjs.org/docs/hooks-reference.html#useref).\n-\tIntegrating [prop-types](https://github.com/facebook/prop-types).\n-\tRendering test components using [react-testing-library](https://github.com/testing-library/react-testing-library).\n-\tDebugging tests.\n-\tEnd to End testing using [cypress](https://www.cypress.io/).\n-\tBypassing the UI.\n\n## Part 6 - State management with Redux\n\n-\tIntroduction to [Flux](https://facebook.github.io/flux/docs/in-depth-overview/)-architecture.\n- Moving app state to the\t[Redux](https://redux.js.org/) store.\n- Pure functions and immutability.\n- Introduction to test driven development.\n- [Action creators](https://redux.js.org/advanced/async-actions#synchronous-action-creators) and forwarding Redux-Store.\n- Complex state and combined reducers.\n- Trimming redux configuration using [Redux Toolkit](https://redux-toolkit.js.org/).\n- [Redux DevTools](https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd).\n- Asynchronous actions and [Redux Thunk](https://github.com/reduxjs/redux-thunk).\n- Using react-redux's connect-function for older projects that do not use the hook-api ([Legacy code maintainance](https://user-images.githubusercontent.com/69587385/195093019-80528cbf-2088-46a9-8ef9-6cb9e85bb9a8.jpg) ⚔️).\n- Presentational, container, and higher order components. A brief breakdown of design choices.\n\n## Part 7 - React router, custom hooks, styling app with CSS and webpack\n\n-\tReact router and application navigation structure.\n-\tCustom hooks.\n-\tReact UI libraries comparision and the [styled components](https://www.styled-components.com/) library.\n-\tBundling with webpack.\n-\tBabel loader to transpile JSX into regular JavaScript.\n-\tLoading CSS with [css-loader](https://webpack.js.org/loaders/css-loader/) and injecting a merged style element with [style-loader](https://webpack.js.org/loaders/style-loader/).\n-\tIncorporating hot reload with [webpack-dev-server](https://webpack.js.org/guides/development/#using-webpack-dev-server).\n-\tGenerating [source-map](https://webpack.js.org/configuration/devtool/) to trace errors during execution and enable Chrome debugger.\n-\tMinification using [UglifyJS](http://lisperator.net/uglifyjs/).\n-\tAdding polyfill for browser compatibility.\n-\tClass components.\n-\tAn overview of React-Node app security, Server-side rendering and Universal code, PWAs, Microservice architecture, and Serverless computing.\n\n## Part 8 - GraphQL\n\n-\tGraphQL Schemas and Queries.\n-\t[Apollo server](https://www.apollographql.com/docs/apollo-server/) and [Apollo studio explorer](https://www.apollographql.com/docs/studio/explorer/explorer/).\n-\tMutations and their resolvers.\n-\tError handling and GraphQL validation.\n-\tEnums and Query filtering.\n-\tNamed queries and parameters.\n-\tHandling cache.\n-\tManagement of application state by [Apollo client](https://www.apollographql.com/docs/react/get-started/).\n-\tFragments.\n-\tSubscriptions.\n\n## Part 9 - TypeScript\n\n-\tKey features - type annotations, structural typing, type inference - and why one should use TypeScript.\n-\tInitializing an express app using tsc.\n-\tUnion types and interfaces.\n-\tUtility types.\n-\tProofing received data and [type guards](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates).\n-\tReact components with TypeScript.\n-\tExhaustive type checking.\n\nAnnnnnnd, a lot more!!\n\n# 💌 Other Full Stack Open Repositories\n\n\\- Full Stack Open 2022 - [mitulagr2/phonebook-fullstackopen](https://github.com/mitulagr2/phonebook-fullstackopen)\n\n\\- Full Stack Open React Native 2021 - [mitulagr2/fso-rate-repository-app](https://github.com/mitulagr2/fso-rate-repository-app)\n\n\\- Full Stack Open CI/CD - [mitulagr2/full-stack-open-pokedex](https://github.com/mitulagr2/full-stack-open-pokedex)\n\n\\- Full Stack Open Containers - [mitulagr2/fso-containers-and-orchestration](https://github.com/mitulagr2/fso-containers-and-orchestration)\n\n# Thank you very much!\n\nOpen to any suggestions on how to make this better! Much appreciated!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitulagr2%2Ffullstackopen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitulagr2%2Ffullstackopen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitulagr2%2Ffullstackopen/lists"}