├── 11-react-demo-sqlite ├── DB_FILE ├── .eslintignore ├── app.js ├── comments-api │ └── comments.sqlite └── .jshintrc ├── 04-es6-demo ├── .env ├── output.txt └── app │ └── assets │ └── img │ └── my-logo.png ├── 06-react-blogs ├── src │ ├── App.css │ ├── component │ │ ├── PostList.css │ │ ├── About.css │ │ ├── Nav.css │ │ ├── PostForm.css │ │ ├── Post.css │ │ ├── PostDetail.css │ │ ├── TabPanel.js │ │ └── PostsMain.css │ ├── setupTests.js │ └── App.test.js ├── routes.json └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ └── images │ └── office.jpg ├── fmi-2024-05-ts ├── src │ ├── temp.ts │ ├── greeter.ts │ └── shared-types.ts ├── dist │ ├── temp.js │ ├── shared-types.js │ ├── temp.js.map │ ├── shared-types.js.map │ ├── greeter.js │ └── greeter.js.map └── favicon.ico ├── 12-blogs-react-client ├── src │ ├── PostForm.css │ ├── Register.css │ ├── Login.css │ └── setupTests.js └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ └── img │ └── reading.png ├── 12-roter-lazy-loading-lab ├── src │ ├── App.css │ ├── react-app-env.d.ts │ ├── pages │ │ └── About.tsx │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── 12-react-demo-sqlite-custom-form ├── DB_FILE ├── .eslintignore ├── webpack.config.js ├── src │ ├── app.js │ ├── polyfills.js │ ├── index.html │ └── vendor.js ├── .jshintrc ├── comments-api │ └── comments.sqlite └── config │ └── helpers.js ├── 14-express-ts-lab ├── .env ├── src │ └── model │ │ └── errors.ts ├── nodemon.json └── tsconfig.json ├── 23-loopback-mongo ├── .eslintignore ├── .eslintrc ├── .yo-rc.json ├── README.md ├── client │ └── README.md ├── common │ └── models │ │ └── product.js ├── .vs │ ├── VSWorkspaceState.json │ ├── slnx.sqlite │ └── 23-loopback-mongo │ │ └── v15 │ │ └── .suo ├── server │ ├── component-config.json │ ├── boot │ │ ├── authentication.js │ │ └── root.js │ ├── middleware.development.json │ └── datasources.json └── .gitignore ├── 03-es6-features ├── user.json ├── custom-prop.js └── favicon.ico ├── fmi-2024-14-express-ts-lab ├── .env ├── src │ └── model │ │ └── errors.ts ├── nodemon.json └── tsconfig.json ├── 05-nodejs-demo ├── output.txt ├── readable0.js ├── example01c.js ├── out.gz ├── readableEvent.js ├── example01.js ├── fs1.js ├── readable1.js └── rx1.js ├── fmi-2025-03-ts-intro ├── dist │ ├── model │ │ ├── person.js │ │ └── credentials.js │ ├── common │ │ └── common-types.js │ ├── greeter.js │ ├── util │ │ └── idgen.js │ └── dao │ │ └── user-repository.js └── src │ ├── greeter.ts │ ├── model │ └── credentials.ts │ ├── common │ └── common-types.ts │ └── util │ └── idgen.ts ├── fmi-2025-06-react-todos-ts ├── src │ ├── component │ │ ├── TodoInput.css │ │ └── TodoItem.css │ ├── vite-env.d.ts │ └── App.css ├── routes.json ├── tsconfig.json └── vite.config.ts ├── 03-es6-features-lab3 ├── main.css └── users.json ├── 05-ts-blogs-rest ├── routes.json ├── dist │ ├── person.js │ ├── model │ │ ├── person.js │ │ ├── id-generator.js │ │ ├── person.js.map │ │ └── id-generator.js.map │ ├── repository.js │ ├── shared-types.js │ ├── person.js.map │ ├── repository.js.map │ ├── shared-types.js.map │ ├── index.js │ ├── dao │ │ ├── id-generator.js │ │ └── id-generator.js.map │ └── index.js.map └── src │ ├── shared-types.ts │ └── index.ts ├── 06-myblogs-rest-ts ├── routes.json ├── src │ ├── shared-types.ts │ └── state-store.ts └── dist │ ├── shared-types.js │ ├── shared-types.js.map │ ├── state-store.js │ └── state-store.js.map ├── 08-react-blogs-mui ├── routes.json ├── src │ ├── react-app-env.d.ts │ ├── shared │ │ └── constants.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ └── img │ └── paella.jpg ├── 11-router-basics-ts ├── routes.json ├── src │ ├── pages │ │ ├── PostPage.css │ │ ├── ErrorPage.css │ │ ├── RootPage.css │ │ └── HomePage.tsx │ ├── react-app-env.d.ts │ ├── model │ │ └── contact.ts │ ├── components │ │ └── PostList.css │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── 14-ipt-knowledge-tester-express ├── .eslintignore ├── app │ ├── index.js │ ├── favicon.ico │ ├── assets │ │ └── img │ │ │ ├── test.png │ │ │ └── ipt-logo.png │ └── components │ │ └── views │ │ └── main │ │ └── no-match.jsx └── .jshintrc ├── fmi-2024-06-todos-ts ├── routes.json ├── src │ ├── react-app-env.d.ts │ ├── shared-types.ts │ ├── todo-api-client.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2025-02-es6 ├── css │ └── main.css ├── users.json └── js │ └── github-async.js ├── 03-fetch-api-lab ├── css │ └── main.css └── users.json ├── 12-routing-auth-lab ├── src │ ├── App.css │ ├── react-app-env.d.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2022-04-react-blogs ├── routes.json ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── static │ │ ├── preview.png │ │ ├── mock-images │ │ │ ├── covers │ │ │ │ ├── cover_1.jpg │ │ │ │ ├── cover_10.jpg │ │ │ │ ├── cover_11.jpg │ │ │ │ ├── cover_12.jpg │ │ │ │ ├── cover_13.jpg │ │ │ │ ├── cover_14.jpg │ │ │ │ ├── cover_15.jpg │ │ │ │ ├── cover_16.jpg │ │ │ │ ├── cover_17.jpg │ │ │ │ ├── cover_18.jpg │ │ │ │ ├── cover_19.jpg │ │ │ │ ├── cover_2.jpg │ │ │ │ ├── cover_20.jpg │ │ │ │ ├── cover_21.jpg │ │ │ │ ├── cover_22.jpg │ │ │ │ ├── cover_23.jpg │ │ │ │ ├── cover_24.jpg │ │ │ │ ├── cover_3.jpg │ │ │ │ ├── cover_4.jpg │ │ │ │ ├── cover_5.jpg │ │ │ │ ├── cover_6.jpg │ │ │ │ ├── cover_7.jpg │ │ │ │ ├── cover_8.jpg │ │ │ │ └── cover_9.jpg │ │ │ ├── avatars │ │ │ │ ├── avatar_1.jpg │ │ │ │ ├── avatar_10.jpg │ │ │ │ ├── avatar_11.jpg │ │ │ │ ├── avatar_12.jpg │ │ │ │ ├── avatar_13.jpg │ │ │ │ ├── avatar_14.jpg │ │ │ │ ├── avatar_15.jpg │ │ │ │ ├── avatar_16.jpg │ │ │ │ ├── avatar_17.jpg │ │ │ │ ├── avatar_18.jpg │ │ │ │ ├── avatar_19.jpg │ │ │ │ ├── avatar_2.jpg │ │ │ │ ├── avatar_20.jpg │ │ │ │ ├── avatar_21.jpg │ │ │ │ ├── avatar_22.jpg │ │ │ │ ├── avatar_23.jpg │ │ │ │ ├── avatar_24.jpg │ │ │ │ ├── avatar_3.jpg │ │ │ │ ├── avatar_4.jpg │ │ │ │ ├── avatar_5.jpg │ │ │ │ ├── avatar_6.jpg │ │ │ │ ├── avatar_7.jpg │ │ │ │ ├── avatar_8.jpg │ │ │ │ ├── avatar_9.jpg │ │ │ │ └── avatar_default.jpg │ │ │ └── products │ │ │ │ ├── product_1.jpg │ │ │ │ ├── product_10.jpg │ │ │ │ ├── product_11.jpg │ │ │ │ ├── product_12.jpg │ │ │ │ ├── product_13.jpg │ │ │ │ ├── product_14.jpg │ │ │ │ ├── product_15.jpg │ │ │ │ ├── product_16.jpg │ │ │ │ ├── product_17.jpg │ │ │ │ ├── product_18.jpg │ │ │ │ ├── product_19.jpg │ │ │ │ ├── product_2.jpg │ │ │ │ ├── product_20.jpg │ │ │ │ ├── product_21.jpg │ │ │ │ ├── product_22.jpg │ │ │ │ ├── product_23.jpg │ │ │ │ ├── product_24.jpg │ │ │ │ ├── product_3.jpg │ │ │ │ ├── product_4.jpg │ │ │ │ ├── product_5.jpg │ │ │ │ ├── product_6.jpg │ │ │ │ ├── product_7.jpg │ │ │ │ ├── product_8.jpg │ │ │ │ └── product_9.jpg │ │ └── illustrations │ │ │ ├── illustration_login.png │ │ │ ├── illustration_avatar.png │ │ │ └── illustration_register.png │ └── favicon │ │ ├── favicon.ico │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── apple-touch-icon.png │ │ ├── android-chrome-192x192.png │ │ └── android-chrome-512x512.png └── src │ ├── components │ ├── animate │ │ ├── variants │ │ │ ├── index.js │ │ │ └── bounce │ │ │ │ └── index.js │ │ └── index.js │ └── charts │ │ └── index.js │ ├── sections │ ├── authentication │ │ ├── login │ │ │ └── index.js │ │ └── register │ │ │ └── index.js │ └── @dashboard │ │ ├── user │ │ └── index.js │ │ └── blog │ │ └── index.js │ ├── .prettierrc │ ├── theme │ └── breakpoints.js │ ├── setupTests.js │ └── App.test.js ├── fmi-2023-01-js-intro-lab ├── routes.json └── test.rest ├── fmi-2023-05-blogs-lab ├── routes.json ├── src │ ├── react-app-env.d.ts │ ├── common-types.ts │ ├── AppFunction.css │ ├── services │ │ └── posts-service.ts │ ├── hooks │ │ └── useEffectOnMount.ts │ └── setupTests.ts └── public │ ├── materialize │ └── js │ │ └── init.js │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── 09-react-todos-lab ├── src │ ├── app │ │ ├── assets │ │ │ ├── main.css │ │ │ ├── img │ │ │ │ └── my-logo.png │ │ │ └── css │ │ │ │ └── postcss.config.js │ │ └── hello.js │ ├── polyfills.js │ ├── index.html │ └── vendor.js ├── webpack.config.js ├── favicon.ico └── config │ └── helpers.js ├── 04-ts-intro ├── dist │ ├── person.js │ ├── model │ │ ├── person.js │ │ ├── id-generator.js │ │ ├── person.js.map │ │ └── id-generator.js.map │ ├── repository.js │ ├── shared-types.js │ ├── person.js.map │ ├── repository.js.map │ └── shared-types.js.map └── src │ └── shared-types.ts ├── 12-blogs-api-express-mongo └── config │ └── secret.js ├── 04-ts-intro-lab ├── dist │ ├── person.js │ ├── model │ │ ├── person.js │ │ └── person.js.map │ ├── common-type.js │ ├── common-types.js │ ├── person.js.map │ ├── common-type.js.map │ ├── common-types.js.map │ ├── indexed-types.js │ └── dao │ │ ├── id-generator.js │ │ └── id-generator.js.map └── src │ ├── common-types.ts │ └── dao │ └── id-generator.ts ├── fmi-2025-07-react-books-ts ├── src │ ├── App.css │ ├── vite-env.d.ts │ └── index.css ├── public │ └── favicon.ico ├── tsconfig.json └── vite.config.ts ├── fmi-2025-09-context ├── src │ └── vite-env.d.ts ├── tsconfig.json └── vite.config.ts ├── 05-nodejs-demo-lab4 └── .vscode │ └── settings.json ├── 07-react-refs-lab ├── src │ ├── react-app-env.d.ts │ ├── components │ │ └── FancyButton.css │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── 09-react-lab-a ├── webpack.config.js ├── src │ ├── polyfills.js │ ├── index.html │ ├── app │ │ ├── hello.js │ │ └── helper.js │ └── vendor.js └── config │ └── helpers.js ├── 09-react-lab-b ├── webpack.config.js ├── src │ ├── polyfills.js │ ├── index.html │ ├── app │ │ ├── hello.js │ │ └── index.js │ └── vendor.js └── config │ └── helpers.js ├── 09-react-todos ├── webpack.config.js ├── src │ ├── app │ │ ├── assets │ │ │ └── images │ │ │ │ └── react-redux.png │ │ └── containers │ │ │ └── hello.js │ ├── polyfills.js │ ├── index.html │ └── vendor.js └── config │ └── helpers.js ├── 12-react-router-demos ├── src │ ├── react-app-env.d.ts │ ├── pages │ │ └── About.tsx │ └── setupTests.js └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── 12-router-modal-lab ├── src │ ├── react-app-env.d.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2023-ts-todos ├── src │ ├── react-app-env.d.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2025-08-react-refs-ts ├── src │ ├── vite-env.d.ts │ └── hooks │ │ └── useEffectOnMount.ts ├── tsconfig.json └── vite.config.ts ├── fmi-2025-10-react-router-declarative ├── src │ ├── App.css │ └── vite-env.d.ts ├── tsconfig.json └── vite.config.ts ├── fmi-2025-13-mongo ├── src │ └── model │ │ └── errors.ts ├── nodemon.json └── tsconfig.json ├── 16-react-todos-redux ├── webpack.config.js ├── tsconfig.json ├── src │ ├── app │ │ ├── assets │ │ │ └── images │ │ │ │ └── react-redux.png │ │ └── reducers │ │ │ ├── index.js │ │ │ └── visibilityFilter.js │ ├── polyfills.js │ └── index.html ├── .babelrc └── config │ └── helpers.js ├── fmi-2022-03-react-todos ├── src │ ├── components │ │ ├── TodoFilter.css │ │ └── TodoList.css │ ├── setupTests.js │ └── App.test.js └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ └── webfonts │ ├── fa-solid-900.ttf │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.ttf │ ├── fa-solid-900.woff2 │ ├── fa-regular-400.woff2 │ ├── fa-v4compatibility.ttf │ └── fa-v4compatibility.woff2 ├── fmi-2023-ruoter-ts-lab ├── src │ ├── react-app-env.d.ts │ ├── AboutUs.tsx │ ├── Home.tsx │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2024-07-react-blogs-ts ├── src │ ├── react-app-env.d.ts │ ├── shared │ │ └── shared-types.ts │ ├── hooks │ │ └── useEffectOnMount.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2024-08-react-refs-lab ├── src │ ├── react-app-env.d.ts │ ├── FancyButton.css │ ├── hooks │ │ └── useEffectOnMount.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2025-12-express-ts ├── src │ └── model │ │ └── errors.ts ├── nodemon.json └── tsconfig.json ├── fmi-2025-react-router-v7-dataload ├── src │ ├── vite-env.d.ts │ ├── routes │ │ ├── Contacts.css │ │ ├── ErrorPage.css │ │ ├── Home.tsx │ │ ├── About.tsx │ │ ├── NoMatch.tsx │ │ └── ContactDetailsForm.css │ ├── components │ │ └── LoadingIndicator.tsx │ └── App.tsx ├── tsconfig.json └── vite.config.ts ├── fmi-2025-react-router-v7 ├── .dockerignore ├── .gitignore ├── public │ └── favicon.ico ├── app │ └── routes.ts └── react-router.config.ts ├── fmi-2024-09-react-context-ts ├── src │ ├── react-app-env.d.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2024-10-react-routing-ts ├── src │ ├── components │ │ ├── Contacts.css │ │ ├── ErrorPage.css │ │ ├── Home.tsx │ │ ├── About.tsx │ │ ├── NoMatch.tsx │ │ ├── LoadingIndicator.tsx │ │ └── ContactDetailsForm.css │ ├── react-app-env.d.ts │ └── setupTests.ts └── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png ├── fmi-2025-07-react-client-face-recog ├── src │ ├── vite-env.d.ts │ └── components │ │ ├── FaceRecognition │ │ └── FaceRecognition.css │ │ └── PostForm │ │ └── PostForm.css ├── tsconfig.json └── vite.config.ts ├── 01-es6-features-lab4 ├── test01.js ├── users.json ├── promises.html ├── test.js └── index.html ├── 08-redux-simple-demo ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── app │ └── store.js │ └── setupTests.js ├── 08-redux-simple-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── app │ └── store.js │ └── setupTests.js ├── fmi-2022-10-blogs-api-express-mongo └── config │ └── secret.js ├── 03-mybooks ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 04-simple ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── App.js │ └── setupTests.js ├── 17-react-todos-redux-es7-decorator ├── webpack.config.js ├── tsconfig.json ├── src │ ├── polyfills.js │ ├── app │ │ ├── assets │ │ │ └── images │ │ │ │ └── react-redux.png │ │ └── reducers │ │ │ └── selected-todo.js │ └── index.html ├── .babelrc └── config │ └── helpers.js ├── demo-app └── package.json ├── fmi-2022-06-basic-redux ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── app │ └── store.js │ ├── features │ └── counter │ │ └── counterAPI.js │ └── setupTests.js ├── todo-app ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── Hello.js │ └── setupTests.js ├── 00-todo-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 03-mybooks-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 04-mybooks-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 07-react-refs ├── public │ ├── robots.txt │ ├── cat.png │ ├── dog.png │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 10-tic-tac-toe ├── src │ ├── index.css │ ├── index.js │ └── App.test.js └── public │ └── favicon.ico ├── 11-react-context ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── user-context.js │ └── setupTests.js ├── 05-react-router-demos ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 06-react-router-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 07-react-context-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── user-context.js │ └── setupTests.js ├── 07-react-refs-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ └── setupTests.js ├── 10-react-blogs ├── src │ ├── articles │ │ └── Article.css │ └── App.css └── public │ └── favicon.ico ├── 18-react-router-redux ├── src │ ├── constants.js │ ├── reducers │ │ └── index.js │ ├── app.css │ ├── components │ │ ├── about.js │ │ └── home.js │ └── app.test.js ├── public │ └── favicon.ico └── tsconfig.json ├── docs ├── React_2020_05.pdf ├── React_2020_07.pdf └── IPT_React_2020_04.pdf ├── 02-js-intro ├── users.json └── js │ ├── function-prototype.js │ ├── async-timeout.js │ ├── temp.js │ ├── functions.js │ └── arrows.js ├── 05-mybooks-router-lab4 ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ └── img │ │ └── reading.png └── src │ ├── App.css │ └── setupTests.js ├── fmi-2022-01-react-intro ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── setupTests.js │ └── App.test.js ├── fmi-2024-01-react-todos ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ └── logo512.png └── src │ ├── todo-model.js │ ├── setupTests.js │ ├── TodoList.js │ └── App.test.js ├── 02-js-events └── images │ ├── rhino.jpg │ └── backdrop.png ├── fmi-2022-02-js-lab ├── users.json └── arrows.js ├── fmi-2024-04-fetch ├── favicon.ico └── users.json ├── 04-es6-simple-demo └── app │ └── assets │ ├── css │ └── main.css │ └── img │ └── my-logo.png ├── fmi-2024-13-express-lab ├── src │ └── model │ │ ├── todo.ts │ │ └── web-error.ts ├── nodemon.json ├── todos.json └── tsconfig.json ├── 01-react-todos ├── public │ └── favicon.ico └── src │ └── HelloFunc.js ├── fmi-2023-02-fech-lab └── api │ └── users ├── 07-formik-example └── public │ └── favicon.ico ├── 15-react-router-v4 ├── public │ └── favicon.ico ├── src │ ├── components │ │ ├── about.js │ │ ├── hocs.js │ │ └── home.js │ ├── app.css │ └── app.test.js └── tsconfig.json ├── 06-nodejs-api-articles ├── public │ └── favicon.ico ├── articles-api │ └── article-model.js └── articles.json ├── fmi-2022-05-react-todos ├── public │ └── favicon.ico └── src │ ├── HelloFunc.js │ ├── About.js │ └── NotFound.js ├── 02-js-design-patterns └── css │ └── canvas.css ├── 09-express-blog-jwt-lab3 └── .gitignore ├── fmi-2023-04-ts-lab ├── src │ └── common.ts └── db.json ├── fmi-2024-12-nodejs ├── src │ ├── 01-dns.ts │ ├── 01-dns-promises.ts │ ├── 08-stream-stdout.ts │ └── 01-dns-async-await.ts ├── nodemon.json ├── tsconfig.json └── dist │ ├── 01-dns.js │ └── 01-dns.js.map ├── fmi-2024-11-node-ts-lab ├── src │ ├── 01-dns.ts │ ├── 01-dns-promises.ts │ └── 01-dns-async-await.ts ├── nodemon.json ├── todos.json └── tsconfig.json ├── 09-node-ts ├── src │ └── 08-stream-stdout.ts ├── nodemon.json └── tsconfig.json ├── 09-nodejs-lab4 └── example01c.js ├── 12-node-ts ├── src │ └── 08-stream-stdout.ts ├── nodemon.json └── tsconfig.json ├── fmi-2025-01-react-todos └── vite.config.js ├── fmi-2025-11-node-ts ├── nodemon.json └── tsconfig.json ├── 16-ts-mongo-lab ├── nodemon.json └── tsconfig.json ├── fmi-2024-15-blogs-api-express-mongo ├── nodemon.json └── tsconfig.json ├── fmi-2023-node-ts-lab └── tsconfig.json └── 17-ts-express-mongo-lab └── tsconfig.json /11-react-demo-sqlite/DB_FILE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-es6-demo/.env: -------------------------------------------------------------------------------- 1 | PORT=3000 2 | -------------------------------------------------------------------------------- /06-react-blogs/src/App.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /fmi-2024-05-ts/src/temp.ts: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /12-blogs-react-client/src/PostForm.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /12-blogs-react-client/src/Register.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/src/App.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06-react-blogs/src/component/PostList.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/DB_FILE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14-express-ts-lab/.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=development -------------------------------------------------------------------------------- /23-loopback-mongo/.eslintignore: -------------------------------------------------------------------------------- 1 | /client/ -------------------------------------------------------------------------------- /03-es6-features/user.json: -------------------------------------------------------------------------------- 1 | {"name":"iproduct"} -------------------------------------------------------------------------------- /11-react-demo-sqlite/.eslintignore: -------------------------------------------------------------------------------- 1 | bundle.js 2 | -------------------------------------------------------------------------------- /fmi-2024-14-express-ts-lab/.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=development -------------------------------------------------------------------------------- /04-es6-demo/output.txt: -------------------------------------------------------------------------------- 1 | My custom data. My custom data. -------------------------------------------------------------------------------- /05-nodejs-demo/output.txt: -------------------------------------------------------------------------------- 1 | My custom data. My custom data. -------------------------------------------------------------------------------- /06-react-blogs/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /11-react-demo-sqlite/app.js: -------------------------------------------------------------------------------- 1 | import './comments-demo'; 2 | -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/dist/model/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/src/component/TodoInput.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-es6-features-lab3/main.css: -------------------------------------------------------------------------------- 1 | img { 2 | width: 200px; 3 | } -------------------------------------------------------------------------------- /05-ts-blogs-rest/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /06-myblogs-rest-ts/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /08-react-blogs-mui/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /11-router-basics-ts/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/.eslintignore: -------------------------------------------------------------------------------- 1 | bundle.js 2 | -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/.eslintignore: -------------------------------------------------------------------------------- 1 | bundle.js 2 | -------------------------------------------------------------------------------- /23-loopback-mongo/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "loopback" 3 | } -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /fmi-2025-02-es6/css/main.css: -------------------------------------------------------------------------------- 1 | img { 2 | height: 150px; 3 | } -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/dist/common/common-types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /03-fetch-api-lab/css/main.css: -------------------------------------------------------------------------------- 1 | h2 { 2 | text-align: center; 3 | } -------------------------------------------------------------------------------- /06-myblogs-rest-ts/src/shared-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number -------------------------------------------------------------------------------- /12-routing-auth-lab/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | margin: 30px 50px; 3 | } -------------------------------------------------------------------------------- /23-loopback-mongo/.yo-rc.json: -------------------------------------------------------------------------------- 1 | { 2 | "generator-loopback": {} 3 | } -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /fmi-2023-01-js-intro-lab/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /05-nodejs-demo/readable0.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | process.stdin.pipe(process.stdout); -------------------------------------------------------------------------------- /09-react-todos-lab/src/app/assets/main.css: -------------------------------------------------------------------------------- 1 | div { 2 | color: green; 3 | } -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/app/index.js: -------------------------------------------------------------------------------- 1 | import './main-router'; 2 | -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/*": "/$1" 3 | } -------------------------------------------------------------------------------- /04-ts-intro/dist/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=person.js.map -------------------------------------------------------------------------------- /06-react-blogs/src/component/About.css: -------------------------------------------------------------------------------- 1 | .About { 2 | height: 75vh; 3 | } -------------------------------------------------------------------------------- /12-blogs-api-express-mongo/config/secret.js: -------------------------------------------------------------------------------- 1 | module.exports.secret='my_secret'; -------------------------------------------------------------------------------- /fmi-2024-05-ts/dist/temp.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=temp.js.map -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=person.js.map -------------------------------------------------------------------------------- /04-ts-intro/dist/model/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=person.js.map -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=person.js.map -------------------------------------------------------------------------------- /fmi-2025-07-react-books-ts/src/App.css: -------------------------------------------------------------------------------- 1 | .name { 2 | padding-top: 100px; 3 | } -------------------------------------------------------------------------------- /fmi-2025-09-context/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/model/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=person.js.map -------------------------------------------------------------------------------- /04-ts-intro/dist/repository.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=repository.js.map -------------------------------------------------------------------------------- /04-ts-intro/dist/shared-types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=shared-types.js.map -------------------------------------------------------------------------------- /05-nodejs-demo-lab4/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true 3 | } -------------------------------------------------------------------------------- /05-nodejs-demo/example01c.js: -------------------------------------------------------------------------------- 1 | process.env.foo = 'bar'; 2 | console.log(process.env.foo); -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/model/person.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=person.js.map -------------------------------------------------------------------------------- /07-react-refs-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /08-react-blogs-mui/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /09-react-lab-a/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /09-react-lab-b/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /09-react-todos-lab/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /09-react-todos/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /11-router-basics-ts/src/pages/PostPage.css: -------------------------------------------------------------------------------- 1 | .PostPage-img { 2 | width: 500px; 3 | } -------------------------------------------------------------------------------- /11-router-basics-ts/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /12-react-router-demos/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /12-router-modal-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /12-routing-auth-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /14-express-ts-lab/src/model/errors.ts: -------------------------------------------------------------------------------- 1 | export class NotFoundError extends Error { 2 | } -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2023-ts-todos/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-07-react-books-ts/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-08-react-refs-ts/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-10-react-router-declarative/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | margin: 30px 50px; 3 | } -------------------------------------------------------------------------------- /fmi-2025-13-mongo/src/model/errors.ts: -------------------------------------------------------------------------------- 1 | export class NotFoundError extends Error { 2 | } -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/common-type.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=common-type.js.map -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/common-types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=common-types.js.map -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/repository.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=repository.js.map -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/shared-types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=shared-types.js.map -------------------------------------------------------------------------------- /12-blogs-react-client/src/Login.css: -------------------------------------------------------------------------------- 1 | form.Login-form { 2 | min-height: 30vmin; 3 | } 4 | -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /16-react-todos-redux/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/src/components/TodoFilter.css: -------------------------------------------------------------------------------- 1 | .TodoFilter{ 2 | width: 960px; 3 | } -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2024-05-ts/dist/shared-types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=shared-types.js.map -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/src/App.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | h1 { 4 | font-size: 1.7em; 5 | } 6 | 7 | -------------------------------------------------------------------------------- /fmi-2025-12-express-ts/src/model/errors.ts: -------------------------------------------------------------------------------- 1 | export class NotFoundError extends Error { 2 | } -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7/.dockerignore: -------------------------------------------------------------------------------- 1 | .react-router 2 | build 3 | node_modules 4 | README.md -------------------------------------------------------------------------------- /04-ts-intro/dist/model/id-generator.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=id-generator.js.map -------------------------------------------------------------------------------- /06-myblogs-rest-ts/dist/shared-types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=shared-types.js.map -------------------------------------------------------------------------------- /11-router-basics-ts/src/pages/ErrorPage.css: -------------------------------------------------------------------------------- 1 | .ErrorPage-container { 2 | padding: 30px; 3 | } -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/public/materialize/js/init.js: -------------------------------------------------------------------------------- 1 | document.getElementById('.sidenav').sidenav(); -------------------------------------------------------------------------------- /fmi-2024-09-react-context-ts/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/Contacts.css: -------------------------------------------------------------------------------- 1 | .buttons { 2 | margin-top: 30px; 3 | } -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2024-14-express-ts-lab/src/model/errors.ts: -------------------------------------------------------------------------------- 1 | export class NotFoundError extends Error { 2 | } -------------------------------------------------------------------------------- /fmi-2025-07-react-client-face-recog/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /fmi-2025-10-react-router-declarative/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /01-es6-features-lab4/test01.js: -------------------------------------------------------------------------------- 1 | function f({a, b = 0} = {a: "hi"}) { console.log(a, b); } 2 | f({}) -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/model/id-generator.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | //# sourceMappingURL=id-generator.js.map -------------------------------------------------------------------------------- /06-react-blogs/src/component/Nav.css: -------------------------------------------------------------------------------- 1 | .Nav-active { 2 | background-color: rgb(255, 189, 6); 3 | } -------------------------------------------------------------------------------- /08-redux-simple-demo/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /08-redux-simple-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /fmi-2022-10-blogs-api-express-mongo/config/secret.js: -------------------------------------------------------------------------------- 1 | module.exports.secret=process.env.BLOG_API_SECRET; -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/routes/Contacts.css: -------------------------------------------------------------------------------- 1 | .buttons { 2 | margin-top: 30px; 3 | } -------------------------------------------------------------------------------- /01-es6-features-lab4/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"username": "iproduct"}, 3 | {"username": "lukehoban"} 4 | ] -------------------------------------------------------------------------------- /03-mybooks/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /04-simple/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./config/webpack.dev.js'); -------------------------------------------------------------------------------- /demo-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-app", 3 | "version": "0.1.0", 4 | "private": true 5 | } 6 | -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/ErrorPage.css: -------------------------------------------------------------------------------- 1 | .ErrorPage-container { 2 | padding: 30px; 3 | } -------------------------------------------------------------------------------- /todo-app/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /00-todo-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /03-mybooks-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /04-mybooks-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /05-nodejs-demo/out.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-nodejs-demo/out.gz -------------------------------------------------------------------------------- /06-react-blogs/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /07-react-refs/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /10-tic-tac-toe/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | } 6 | -------------------------------------------------------------------------------- /11-react-context/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /23-loopback-mongo/README.md: -------------------------------------------------------------------------------- 1 | # My Application 2 | 3 | The project is generated by [LoopBack](http://loopback.io). -------------------------------------------------------------------------------- /23-loopback-mongo/client/README.md: -------------------------------------------------------------------------------- 1 | ## Client 2 | 3 | This is the place for your application front-end files. 4 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/routes/ErrorPage.css: -------------------------------------------------------------------------------- 1 | .ErrorPage-container { 2 | padding: 30px; 3 | } -------------------------------------------------------------------------------- /03-es6-features/custom-prop.js: -------------------------------------------------------------------------------- 1 | const name = 'prop1'; 2 | const o1 = { 3 | [name]: 'val1' 4 | } 5 | console.log(o1); -------------------------------------------------------------------------------- /05-react-router-demos/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /06-react-router-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /07-react-context-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /07-react-refs-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /07-react-refs-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /08-react-blogs-mui/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /10-react-blogs/src/articles/Article.css: -------------------------------------------------------------------------------- 1 | .Article-blog-picture { 2 | width: 100%; 3 | max-height: 100px; 4 | } -------------------------------------------------------------------------------- /11-router-basics-ts/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /12-blogs-react-client/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /12-react-router-demos/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /12-router-modal-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /12-routing-auth-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /18-react-router-redux/src/constants.js: -------------------------------------------------------------------------------- 1 | export const INCREMENT = 'INCREMENT'; 2 | export const DECREMENT = 'DECREMENT'; -------------------------------------------------------------------------------- /18-react-router-redux/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import counter from './counter'; 2 | 3 | export default {counter}; 4 | -------------------------------------------------------------------------------- /23-loopback-mongo/common/models/product.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(Product) { 4 | 5 | }; 6 | -------------------------------------------------------------------------------- /docs/React_2020_05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/docs/React_2020_05.pdf -------------------------------------------------------------------------------- /docs/React_2020_07.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/docs/React_2020_07.pdf -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2023-ts-todos/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /02-js-intro/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"username":"iproduct"}, 3 | {"username":"gaeron"}, 4 | {"username":"ry"} 5 | ] -------------------------------------------------------------------------------- /05-mybooks-router-lab4/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /10-react-blogs/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-link { 6 | color: #61dafb; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /docs/IPT_React_2020_04.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/docs/IPT_React_2020_04.pdf -------------------------------------------------------------------------------- /fmi-2022-01-react-intro/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/components/animate/variants/index.js: -------------------------------------------------------------------------------- 1 | export * from './Wrap'; 2 | export * from './bounce'; 3 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/components/charts/index.js: -------------------------------------------------------------------------------- 1 | export { default as BaseOptionChart } from './BaseOptionChart'; 2 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/sections/authentication/login/index.js: -------------------------------------------------------------------------------- 1 | export { default as LoginForm } from './LoginForm'; 2 | -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2024-05-ts/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-05-ts/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /02-js-events/images/rhino.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/02-js-events/images/rhino.jpg -------------------------------------------------------------------------------- /03-es6-features-lab3/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"name": "iproduct"}, 3 | {"name": "ahmed-shehata"}, 4 | {"name": "AGS-"} 5 | ] -------------------------------------------------------------------------------- /03-es6-features/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-es6-features/favicon.ico -------------------------------------------------------------------------------- /03-fetch-api-lab/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"username": "iproduct"}, 3 | {"username": "gaeron"}, 4 | {"username": "ry"} 5 | ] -------------------------------------------------------------------------------- /03-mybooks/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-mybooks/public/favicon.ico -------------------------------------------------------------------------------- /03-mybooks/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-mybooks/public/logo192.png -------------------------------------------------------------------------------- /03-mybooks/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-mybooks/public/logo512.png -------------------------------------------------------------------------------- /04-simple/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-simple/public/favicon.ico -------------------------------------------------------------------------------- /04-simple/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-simple/public/logo192.png -------------------------------------------------------------------------------- /04-simple/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-simple/public/logo512.png -------------------------------------------------------------------------------- /05-mybooks-router-lab4/src/App.css: -------------------------------------------------------------------------------- 1 | .App-about { 2 | height: 30vmin; 3 | pointer-events: none; 4 | margin: auto; 5 | } 6 | -------------------------------------------------------------------------------- /07-react-refs/public/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs/public/cat.png -------------------------------------------------------------------------------- /07-react-refs/public/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs/public/dog.png -------------------------------------------------------------------------------- /fmi-2022-02-js-lab/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"username":"iproduct"}, 3 | {"username":"gaeron"}, 4 | {"username":"ry"} 5 | ] -------------------------------------------------------------------------------- /fmi-2024-04-fetch/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-04-fetch/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-09-react-context-ts/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /node_modules/ 3 | 4 | # React Router 5 | /.react-router/ 6 | /build/ 7 | -------------------------------------------------------------------------------- /todo-app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/todo-app/public/favicon.ico -------------------------------------------------------------------------------- /todo-app/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/todo-app/public/logo192.png -------------------------------------------------------------------------------- /todo-app/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/todo-app/public/logo512.png -------------------------------------------------------------------------------- /00-todo-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/00-todo-lab4/public/favicon.ico -------------------------------------------------------------------------------- /00-todo-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/00-todo-lab4/public/logo192.png -------------------------------------------------------------------------------- /00-todo-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/00-todo-lab4/public/logo512.png -------------------------------------------------------------------------------- /04-es6-simple-demo/app/assets/css/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #eeeeee; 3 | } 4 | 5 | .display { 6 | font-size: 1.3em; 7 | } -------------------------------------------------------------------------------- /05-ts-blogs-rest/src/shared-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number; 2 | 3 | export interface Identifiable { 4 | id: IdType; 5 | } -------------------------------------------------------------------------------- /09-react-todos-lab/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/09-react-todos-lab/favicon.ico -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/sections/authentication/register/index.js: -------------------------------------------------------------------------------- 1 | export { default as RegisterForm } from './RegisterForm'; 2 | -------------------------------------------------------------------------------- /fmi-2024-05-ts/dist/temp.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"temp.js","sourceRoot":"","sources":["../src/temp.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /fmi-2024-13-express-lab/src/model/todo.ts: -------------------------------------------------------------------------------- 1 | export class Todo { 2 | constructor(public id: string, public text: string ) {} 3 | } -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/dist/greeter.js: -------------------------------------------------------------------------------- 1 | export function greet(name) { 2 | return `Hello ${name}, from TypeScript!!!!!!`; 3 | } 4 | -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/src/greeter.ts: -------------------------------------------------------------------------------- 1 | export function greet(name: string) { 2 | return `Hello ${name}, from TypeScript!!!!!!` 3 | } -------------------------------------------------------------------------------- /01-react-todos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/01-react-todos/public/favicon.ico -------------------------------------------------------------------------------- /02-js-events/images/backdrop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/02-js-events/images/backdrop.png -------------------------------------------------------------------------------- /03-mybooks-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-mybooks-lab4/public/favicon.ico -------------------------------------------------------------------------------- /03-mybooks-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-mybooks-lab4/public/logo192.png -------------------------------------------------------------------------------- /03-mybooks-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/03-mybooks-lab4/public/logo512.png -------------------------------------------------------------------------------- /04-mybooks-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-mybooks-lab4/public/favicon.ico -------------------------------------------------------------------------------- /04-mybooks-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-mybooks-lab4/public/logo192.png -------------------------------------------------------------------------------- /04-mybooks-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-mybooks-lab4/public/logo512.png -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/person.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"person.js","sourceRoot":"","sources":["../src/person.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /04-ts-intro/dist/person.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"person.js","sourceRoot":"","sources":["../src/person.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /04-ts-intro/src/shared-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number | undefined; 2 | 3 | export interface Identifiable { 4 | id: IdType; 5 | } -------------------------------------------------------------------------------- /06-react-blogs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-blogs/public/favicon.ico -------------------------------------------------------------------------------- /06-react-blogs/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-blogs/public/logo192.png -------------------------------------------------------------------------------- /06-react-blogs/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-blogs/public/logo512.png -------------------------------------------------------------------------------- /07-react-refs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs/public/favicon.ico -------------------------------------------------------------------------------- /07-react-refs/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs/public/logo192.png -------------------------------------------------------------------------------- /07-react-refs/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs/public/logo512.png -------------------------------------------------------------------------------- /10-react-blogs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/10-react-blogs/public/favicon.ico -------------------------------------------------------------------------------- /10-tic-tac-toe/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/10-tic-tac-toe/public/favicon.ico -------------------------------------------------------------------------------- /23-loopback-mongo/.vs/VSWorkspaceState.json: -------------------------------------------------------------------------------- 1 | { 2 | "ExpandedNodes": [ 3 | "" 4 | ], 5 | "PreviewInSolutionExplorer": false 6 | } -------------------------------------------------------------------------------- /23-loopback-mongo/.vs/slnx.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/23-loopback-mongo/.vs/slnx.sqlite -------------------------------------------------------------------------------- /23-loopback-mongo/server/component-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "loopback-component-explorer": { 3 | "mountPath": "/explorer" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/components/animate/variants/bounce/index.js: -------------------------------------------------------------------------------- 1 | export * from './BounceIn'; 2 | export * from './BounceOut'; 3 | -------------------------------------------------------------------------------- /fmi-2023-02-fech-lab/api/users: -------------------------------------------------------------------------------- 1 | [ 2 | {"username": "iproduct"}, 3 | {"username": "gaeron"}, 4 | {"username": "ry"} 5 | ] 6 | -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/src/common-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number; 2 | 3 | export interface Identifiable { 4 | id: IdType; 5 | } -------------------------------------------------------------------------------- /02-js-intro/js/function-prototype.js: -------------------------------------------------------------------------------- 1 | 2 | const myFunc = function(x) { 3 | return x * x; 4 | } 5 | 6 | console.log(myFunc.__proto__.bind); -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/person.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"person.js","sourceRoot":"","sources":["../src/person.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /07-formik-example/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-formik-example/public/favicon.ico -------------------------------------------------------------------------------- /07-react-refs-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs-lab/public/favicon.ico -------------------------------------------------------------------------------- /07-react-refs-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs-lab/public/logo192.png -------------------------------------------------------------------------------- /07-react-refs-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs-lab/public/logo512.png -------------------------------------------------------------------------------- /11-react-context/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-react-context/public/favicon.ico -------------------------------------------------------------------------------- /11-react-context/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-react-context/public/logo192.png -------------------------------------------------------------------------------- /11-react-context/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-react-context/public/logo512.png -------------------------------------------------------------------------------- /fmi-2023-ts-todos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-ts-todos/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2023-ts-todos/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-ts-todos/public/logo192.png -------------------------------------------------------------------------------- /fmi-2023-ts-todos/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-ts-todos/public/logo512.png -------------------------------------------------------------------------------- /fmi-2024-05-ts/src/greeter.ts: -------------------------------------------------------------------------------- 1 | export function greeter(person: string) { 2 | return 'Hello, ' + person + ' from Typescript!'; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /fmi-2025-02-es6/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"username": "iproduct"}, 3 | {"username": "$$$$$$$$rrrrrrrrr"}, 4 | {"username": "gaearon"} 5 | ] -------------------------------------------------------------------------------- /04-es6-demo/app/assets/img/my-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-es6-demo/app/assets/img/my-logo.png -------------------------------------------------------------------------------- /04-ts-intro-lab/src/common-types.ts: -------------------------------------------------------------------------------- 1 | 2 | export type IdType = number | undefined; 3 | 4 | export interface Identifiable { 5 | id: IdType; 6 | } -------------------------------------------------------------------------------- /04-ts-intro/dist/repository.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /05-nodejs-demo/readableEvent.js: -------------------------------------------------------------------------------- 1 | process.stdin.on('readable', function () { 2 | var buf = process.stdin.read(); 3 | console.dir(buf); 4 | }); -------------------------------------------------------------------------------- /06-react-blogs/public/images/office.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-blogs/public/images/office.jpg -------------------------------------------------------------------------------- /06-react-router-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-router-lab4/public/favicon.ico -------------------------------------------------------------------------------- /06-react-router-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-router-lab4/public/logo192.png -------------------------------------------------------------------------------- /06-react-router-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-react-router-lab4/public/logo512.png -------------------------------------------------------------------------------- /07-react-refs-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs-lab4/public/favicon.ico -------------------------------------------------------------------------------- /07-react-refs-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs-lab4/public/logo192.png -------------------------------------------------------------------------------- /07-react-refs-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-refs-lab4/public/logo512.png -------------------------------------------------------------------------------- /08-react-blogs-mui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-react-blogs-mui/public/favicon.ico -------------------------------------------------------------------------------- /08-react-blogs-mui/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-react-blogs-mui/public/logo192.png -------------------------------------------------------------------------------- /08-react-blogs-mui/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-react-blogs-mui/public/logo512.png -------------------------------------------------------------------------------- /08-redux-simple-demo/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-redux-simple-demo/public/favicon.ico -------------------------------------------------------------------------------- /08-redux-simple-demo/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-redux-simple-demo/public/logo192.png -------------------------------------------------------------------------------- /08-redux-simple-demo/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-redux-simple-demo/public/logo512.png -------------------------------------------------------------------------------- /08-redux-simple-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-redux-simple-lab4/public/favicon.ico -------------------------------------------------------------------------------- /08-redux-simple-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-redux-simple-lab4/public/logo192.png -------------------------------------------------------------------------------- /08-redux-simple-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-redux-simple-lab4/public/logo512.png -------------------------------------------------------------------------------- /11-router-basics-ts/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-router-basics-ts/public/favicon.ico -------------------------------------------------------------------------------- /11-router-basics-ts/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-router-basics-ts/public/logo192.png -------------------------------------------------------------------------------- /11-router-basics-ts/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-router-basics-ts/public/logo512.png -------------------------------------------------------------------------------- /12-router-modal-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-router-modal-lab/public/favicon.ico -------------------------------------------------------------------------------- /12-router-modal-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-router-modal-lab/public/logo192.png -------------------------------------------------------------------------------- /12-router-modal-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-router-modal-lab/public/logo512.png -------------------------------------------------------------------------------- /12-routing-auth-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-routing-auth-lab/public/favicon.ico -------------------------------------------------------------------------------- /12-routing-auth-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-routing-auth-lab/public/logo192.png -------------------------------------------------------------------------------- /12-routing-auth-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-routing-auth-lab/public/logo512.png -------------------------------------------------------------------------------- /15-react-router-v4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/15-react-router-v4/public/favicon.ico -------------------------------------------------------------------------------- /15-react-router-v4/src/components/about.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const About = () => (
About
); 4 | 5 | export default About; -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-06-todos-ts/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-06-todos-ts/public/logo192.png -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-06-todos-ts/public/logo512.png -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/common-type.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"common-type.js","sourceRoot":"","sources":["../src/common-type.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/model/person.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/model/person.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /04-ts-intro/dist/model/person.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/model/person.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /04-ts-intro/dist/shared-types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"shared-types.js","sourceRoot":"","sources":["../src/shared-types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /05-mybooks-router-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-mybooks-router-lab4/public/favicon.ico -------------------------------------------------------------------------------- /05-mybooks-router-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-mybooks-router-lab4/public/logo192.png -------------------------------------------------------------------------------- /05-mybooks-router-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-mybooks-router-lab4/public/logo512.png -------------------------------------------------------------------------------- /05-react-router-demos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-react-router-demos/public/favicon.ico -------------------------------------------------------------------------------- /05-react-router-demos/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-react-router-demos/public/logo192.png -------------------------------------------------------------------------------- /05-react-router-demos/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-react-router-demos/public/logo512.png -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/repository.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /06-nodejs-api-articles/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/06-nodejs-api-articles/public/favicon.ico -------------------------------------------------------------------------------- /07-react-context-lab4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-context-lab4/public/favicon.ico -------------------------------------------------------------------------------- /07-react-context-lab4/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-context-lab4/public/logo192.png -------------------------------------------------------------------------------- /07-react-context-lab4/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/07-react-context-lab4/public/logo512.png -------------------------------------------------------------------------------- /08-react-blogs-mui/public/img/paella.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/08-react-blogs-mui/public/img/paella.jpg -------------------------------------------------------------------------------- /12-blogs-react-client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-blogs-react-client/public/favicon.ico -------------------------------------------------------------------------------- /12-blogs-react-client/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-blogs-react-client/public/logo192.png -------------------------------------------------------------------------------- /12-blogs-react-client/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-blogs-react-client/public/logo512.png -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/src/app.js: -------------------------------------------------------------------------------- 1 | import './05-comment-form-uncontrolled-async-delete/comment-demo'; 2 | import './assets/css/custom.css'; 3 | -------------------------------------------------------------------------------- /12-react-router-demos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-react-router-demos/public/favicon.ico -------------------------------------------------------------------------------- /12-react-router-demos/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-react-router-demos/public/logo192.png -------------------------------------------------------------------------------- /12-react-router-demos/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-react-router-demos/public/logo512.png -------------------------------------------------------------------------------- /15-react-router-v4/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "allowJs": true 5 | } 6 | } -------------------------------------------------------------------------------- /16-react-todos-redux/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "allowJs": true 5 | } 6 | } -------------------------------------------------------------------------------- /18-react-router-redux/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/18-react-router-redux/public/favicon.ico -------------------------------------------------------------------------------- /18-react-router-redux/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "allowJs": true 5 | } 6 | } -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-05-blogs-lab/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-05-blogs-lab/public/logo192.png -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-05-blogs-lab/public/logo512.png -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-ruoter-ts-lab/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-ruoter-ts-lab/public/logo192.png -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2023-ruoter-ts-lab/public/logo512.png -------------------------------------------------------------------------------- /fmi-2025-07-react-books-ts/src/index.css: -------------------------------------------------------------------------------- 1 | 2 | .icon-block { 3 | padding: 0 15px; 4 | } 5 | .icon-block .material-icons { 6 | font-size: inherit; 7 | } -------------------------------------------------------------------------------- /fmi-2025-07-react-client-face-recog/src/components/FaceRecognition/FaceRecognition.css: -------------------------------------------------------------------------------- 1 | #canvas { 2 | /* display: none; */ 3 | widht: 300px; 4 | } -------------------------------------------------------------------------------- /02-js-intro/js/async-timeout.js: -------------------------------------------------------------------------------- 1 | let x = 5; 2 | setTimeout(() => { 3 | debugger; 4 | console.log('world'); 5 | }, 1000); 6 | console.log('hello', x); -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/common-types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"common-types.js","sourceRoot":"","sources":["../src/common-types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/model/person.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/model/person.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/shared-types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"shared-types.js","sourceRoot":"","sources":["../src/shared-types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /12-blogs-react-client/public/img/reading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-blogs-react-client/public/img/reading.png -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-roter-lazy-loading-lab/public/favicon.ico -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-roter-lazy-loading-lab/public/logo192.png -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-roter-lazy-loading-lab/public/logo512.png -------------------------------------------------------------------------------- /fmi-2022-01-react-intro/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-01-react-intro/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2022-01-react-intro/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-01-react-intro/public/logo192.png -------------------------------------------------------------------------------- /fmi-2022-01-react-intro/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-01-react-intro/public/logo512.png -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/logo192.png -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/logo512.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/logo192.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/logo512.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "tabWidth": 2 6 | } 7 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/components/animate/index.js: -------------------------------------------------------------------------------- 1 | export * from './variants'; 2 | export { default as MotionContainer } from './MotionContainer'; 3 | -------------------------------------------------------------------------------- /fmi-2022-05-react-todos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-05-react-todos/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-06-basic-redux/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-06-basic-redux/public/logo192.png -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-06-basic-redux/public/logo512.png -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-01-react-todos/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-01-react-todos/public/logo192.png -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-01-react-todos/public/logo512.png -------------------------------------------------------------------------------- /fmi-2024-05-ts/dist/shared-types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"shared-types.js","sourceRoot":"","sources":["../src/shared-types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /fmi-2025-react-router-v7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2025-react-router-v7/public/favicon.ico -------------------------------------------------------------------------------- /04-es6-simple-demo/app/assets/img/my-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/04-es6-simple-demo/app/assets/img/my-logo.png -------------------------------------------------------------------------------- /05-mybooks-router-lab4/public/img/reading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/05-mybooks-router-lab4/public/img/reading.png -------------------------------------------------------------------------------- /06-myblogs-rest-ts/dist/shared-types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"shared-types.js","sourceRoot":"","sources":["../src/shared-types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /fmi-2024-04-fetch/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"username": "iproduct"}, 3 | {"username": "ry"}, 4 | {"username": "gaeron"}, 5 | {"username": "mhevery"} 6 | ] -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-07-react-blogs-ts/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-07-react-blogs-ts/public/logo192.png -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-07-react-blogs-ts/public/logo512.png -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-08-react-refs-lab/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-08-react-refs-lab/public/logo192.png -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-08-react-refs-lab/public/logo512.png -------------------------------------------------------------------------------- /fmi-2025-07-react-books-ts/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2025-07-react-books-ts/public/favicon.ico -------------------------------------------------------------------------------- /04-ts-intro/dist/model/id-generator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/model/id-generator.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /06-react-blogs/src/component/PostForm.css: -------------------------------------------------------------------------------- 1 | .PostForm-button-panel{ 2 | padding: 50px; 3 | } 4 | 5 | .PostForm-button-panel button { 6 | margin: 10px 50px; 7 | } -------------------------------------------------------------------------------- /09-react-todos-lab/src/app/assets/img/my-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/09-react-todos-lab/src/app/assets/img/my-logo.png -------------------------------------------------------------------------------- /11-react-demo-sqlite/comments-api/comments.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/11-react-demo-sqlite/comments-api/comments.sqlite -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/14-ipt-knowledge-tester-express/app/favicon.ico -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "allowJs": true 5 | } 6 | } -------------------------------------------------------------------------------- /23-loopback-mongo/.vs/23-loopback-mongo/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/23-loopback-mongo/.vs/23-loopback-mongo/v15/.suo -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/preview.png -------------------------------------------------------------------------------- /fmi-2024-05-ts/dist/greeter.js: -------------------------------------------------------------------------------- 1 | export function greeter(person) { 2 | return 'Hello, ' + person + ' from Typescript!'; 3 | } 4 | //# sourceMappingURL=greeter.js.map -------------------------------------------------------------------------------- /fmi-2024-09-react-context-ts/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-09-react-context-ts/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-09-react-context-ts/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-09-react-context-ts/public/logo192.png -------------------------------------------------------------------------------- /fmi-2024-09-react-context-ts/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-09-react-context-ts/public/logo512.png -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-10-react-routing-ts/public/favicon.ico -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-10-react-routing-ts/public/logo192.png -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2024-10-react-routing-ts/public/logo512.png -------------------------------------------------------------------------------- /02-js-design-patterns/css/canvas.css: -------------------------------------------------------------------------------- 1 | #canvas { 2 | border: 1px dotted blue; 3 | } 4 | #image_container, #image_container img { 5 | display: none; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/model/id-generator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/model/id-generator.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /06-myblogs-rest-ts/dist/state-store.js: -------------------------------------------------------------------------------- 1 | export const AppStateStore = { 2 | editedPost: undefined, 3 | allPosts: [] 4 | }; 5 | //# sourceMappingURL=state-store.js.map -------------------------------------------------------------------------------- /08-react-blogs-mui/src/shared/constants.ts: -------------------------------------------------------------------------------- 1 | export const CARD_CONTENT_HEIGHT = 370; 2 | export const CARD_CONTENT_WIDTH = 350; 3 | export const MAX_SUMMARY_LENGTH = 150; 4 | -------------------------------------------------------------------------------- /11-react-demo-sqlite/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browser": true, 3 | "camelcase": false, 4 | "esnext": true, 5 | "indent": 2, 6 | "latedef": false, 7 | "newcap": true 8 | } -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon/favicon.ico -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/src/model/credentials.ts: -------------------------------------------------------------------------------- 1 | export class Credentials { 2 | constructor( 3 | public email: string, 4 | public password: string){} 5 | } -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/routes/Home.tsx: -------------------------------------------------------------------------------- 1 | 2 | 3 | const Home = () => { 4 | return ( 5 |
Home View
6 | ) 7 | } 8 | 9 | export default Home; -------------------------------------------------------------------------------- /09-express-blog-jwt-lab3/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.env 3 | 4 | # production 5 | /build 6 | 7 | # misc 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* -------------------------------------------------------------------------------- /09-react-lab-a/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill'; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /09-react-lab-b/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill'; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /09-react-todos/src/app/assets/images/react-redux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/09-react-todos/src/app/assets/images/react-redux.png -------------------------------------------------------------------------------- /09-react-todos/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill'; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2023-04-ts-lab/src/common.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number; 2 | 3 | export interface Identifiable { 4 | id: IdType; 5 | } 6 | 7 | export type Optional = T | undefined; -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/src/AppFunction.css: -------------------------------------------------------------------------------- 1 | .App-root { 2 | display: flex; 3 | flex-flow: column nowrap; 4 | justify-content: center; 5 | align-items: center; 6 | } -------------------------------------------------------------------------------- /fmi-2024-05-ts/src/shared-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number; 2 | 3 | export interface Identifiable { 4 | id: K; 5 | } 6 | 7 | export type Optional = V | undefined; -------------------------------------------------------------------------------- /09-react-todos-lab/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill'; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/app/assets/img/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/14-ipt-knowledge-tester-express/app/assets/img/test.png -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/src/shared-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number; 2 | 3 | export interface Identifiable { 4 | id: K; 5 | } 6 | 7 | export type Optional = V | undefined; -------------------------------------------------------------------------------- /fmi-2025-02-es6/js/github-async.js: -------------------------------------------------------------------------------- 1 | import { fetchGitAsync } from "./fetch-git-async.js"; 2 | 3 | const resultsDiv = document.getElementById("results"); 4 | fetchGitAsync(resultsDiv) -------------------------------------------------------------------------------- /fmi-2025-09-context/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /01-react-todos/src/HelloFunc.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default (props) => 4 | (
5 |

Hello, {props.name}

6 |
); -------------------------------------------------------------------------------- /09-react-todos/src/app/containers/hello.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default () => ( 4 |
Hello from React Hot Loader for Webpack!
5 | ); 6 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browser": true, 3 | "camelcase": false, 4 | "esnext": true, 5 | "indent": 2, 6 | "latedef": false, 7 | "newcap": true 8 | } -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/app/assets/img/ipt-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/14-ipt-knowledge-tester-express/app/assets/img/ipt-logo.png -------------------------------------------------------------------------------- /16-react-todos-redux/src/app/assets/images/react-redux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/16-react-todos-redux/src/app/assets/images/react-redux.png -------------------------------------------------------------------------------- /16-react-todos-redux/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill'; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/src/components/TodoList.css: -------------------------------------------------------------------------------- 1 | .TodoList-items { 2 | display: flex; 3 | flex-direction: column; 4 | align-self: center; 5 | list-style-type: none; 6 | } -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/src/todo-api-client.ts: -------------------------------------------------------------------------------- 1 | import { ApiClient } from "./api-client"; 2 | 3 | const API = new ApiClient("http://localhost:9000"); // Singleton 4 | 5 | export default API; -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/src/01-dns.ts: -------------------------------------------------------------------------------- 1 | import * as dns from 'dns'; 2 | 3 | const domain = 'yahoo.com'; 4 | 5 | dns.resolve(domain, (err, addresses) => { 6 | console.log(addresses); 7 | }) -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2025-07-react-books-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2025-07-react-client-face-recog/src/components/PostForm/PostForm.css: -------------------------------------------------------------------------------- 1 | .PostForm-butons { 2 | padding: 10px; 3 | } 4 | 5 | .PostForm-butons button { 6 | margin-right: 10px; 7 | } -------------------------------------------------------------------------------- /fmi-2025-08-react-refs-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7/app/routes.ts: -------------------------------------------------------------------------------- 1 | import { type RouteConfig, index } from "@react-router/dev/routes"; 2 | 3 | export default [index("routes/home.tsx")] satisfies RouteConfig; 4 | -------------------------------------------------------------------------------- /05-ts-blogs-rest/src/index.ts: -------------------------------------------------------------------------------- 1 | import { BlogsController } from './controller/blogs-controller.js'; 2 | 3 | const blogsController = new BlogsController(); 4 | blogsController.init(); 5 | 6 | -------------------------------------------------------------------------------- /07-react-context-lab4/src/user-context.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // Signed-in user context 4 | export const UserContext = React.createContext({ 5 | name: 'Guest', 6 | }); 7 | -------------------------------------------------------------------------------- /09-react-lab-a/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React TODOs Demo 5 | 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /09-react-lab-b/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React TODOs Demo 5 | 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /09-react-todos-lab/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | React TODOs Demo 5 | 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/comments-api/comments.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/12-react-demo-sqlite-custom-form/comments-api/comments.sqlite -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /fmi-2022-05-react-todos/src/HelloFunc.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default (props) => 4 | (
5 |

Hello, {props.name}

6 |
); -------------------------------------------------------------------------------- /fmi-2024-11-node-ts-lab/src/01-dns.ts: -------------------------------------------------------------------------------- 1 | import * as dns from 'dns'; 2 | 3 | const domain = 'yaho0.com'; 4 | 5 | dns.resolve(domain, (err, addresses) => { 6 | console.log(addresses); 7 | }) -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/src/common/common-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number 2 | 3 | export interface Identifiable { 4 | id: IdType 5 | } 6 | 7 | export type Optional = T | undefined -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import "babel-polyfill"; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /15-react-router-v4/src/app.css: -------------------------------------------------------------------------------- 1 | .navbar-form, .navbar-form button { 2 | display: inline-block; 3 | } 4 | 5 | .navbar-right { 6 | float: right; 7 | padding-right: 20px 8 | } 9 | 10 | -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/src/polyfills.js: -------------------------------------------------------------------------------- 1 | import 'babel-polyfill'; 2 | 3 | if (process.env.ENV === 'production') { 4 | // Production 5 | } else { 6 | // Development and test 7 | } 8 | -------------------------------------------------------------------------------- /23-loopback-mongo/server/boot/authentication.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function enableAuthentication(server) { 4 | // enable authentication 5 | server.enableAuth(); 6 | }; 7 | -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/public/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-03-react-todos/public/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/src/shared/shared-types.ts: -------------------------------------------------------------------------------- 1 | export type IdType = number; 2 | 3 | export interface Identifiable { 4 | id: K; 5 | } 6 | 7 | export type Optional = V | undefined; -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/src/component/TodoItem.css: -------------------------------------------------------------------------------- 1 | .TodoItem-card { 2 | display: flex; 3 | flex-flow: row wrap; 4 | justify-content: space-between; 5 | padding: 10px 5px; 6 | } -------------------------------------------------------------------------------- /fmi-2025-07-react-client-face-recog/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2025-10-react-router-declarative/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /06-nodejs-api-articles/articles-api/article-model.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = class Article { 4 | constructor(id, text) { 5 | this.id = id; 6 | this.text = text; 7 | } 8 | } -------------------------------------------------------------------------------- /11-router-basics-ts/src/pages/RootPage.css: -------------------------------------------------------------------------------- 1 | .RootPage-container { 2 | padding: 30px; 3 | } 4 | 5 | .RootPage-container .active { 6 | color: white; 7 | background-color: cornflowerblue; 8 | } -------------------------------------------------------------------------------- /16-react-todos-redux/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "react", "stage-0"], 3 | "plugins": [ 4 | "babel-plugin-transform-decorators-legacy", 5 | "babel-plugin-transform-decorators"] 6 | } -------------------------------------------------------------------------------- /18-react-router-redux/src/app.css: -------------------------------------------------------------------------------- 1 | .navbar-form, .navbar-form button { 2 | display: inline-block; 3 | } 4 | 5 | .navbar-right { 6 | float: right; 7 | padding-right: 20px 8 | } 9 | 10 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /fmi-2022-05-react-todos/src/About.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export const About = ({application}) => { 4 | return ( 5 |

About the {application} application ...

6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2022-05-react-todos/src/NotFound.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export const NotFound = () => { 4 | return ( 5 |

We do not have what you are looking for ...

6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/src/01-dns-promises.ts: -------------------------------------------------------------------------------- 1 | import * as dns from 'dns/promises'; 2 | 3 | const domain = 'yahoo.com'; 4 | 5 | dns.resolve(domain).then(addresses => { 6 | console.log(addresses); 7 | }) -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/dist/model/credentials.js: -------------------------------------------------------------------------------- 1 | export class Credentials { 2 | constructor(email, password) { 3 | this.email = email; 4 | this.password = password; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /06-react-blogs/src/component/Post.css: -------------------------------------------------------------------------------- 1 | .row .col.Post-card-wrapper { 2 | padding: 0px; 3 | } 4 | .Post-card { 5 | margin: 5px; 6 | } 7 | .card .card-image img.Post-image { 8 | height: 300px; 9 | } -------------------------------------------------------------------------------- /06-react-blogs/src/component/PostDetail.css: -------------------------------------------------------------------------------- 1 | .PostDetail-card { 2 | margin: 5px; 3 | } 4 | .card .card-image img.PostDetail-image { 5 | height: 500px; 6 | max-width: 100%; 7 | width: auto; 8 | } -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browser": true, 3 | "node": true, 4 | "camelcase": false, 5 | "esnext": true, 6 | "indent": 2, 7 | "latedef": false, 8 | "newcap": true 9 | } -------------------------------------------------------------------------------- /15-react-router-v4/src/components/hocs.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | export const withParams = (Component, properties) => { 3 | return props => (); 4 | } 5 | -------------------------------------------------------------------------------- /18-react-router-redux/src/components/about.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { connect } from 'react-redux'; 3 | 4 | const About = () => (
About
); 5 | 6 | export default connect()(About); -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_1.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_10.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_11.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_12.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_13.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_14.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_15.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_16.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_17.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_18.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_19.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_2.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_20.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_21.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_22.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_23.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_24.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_3.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_4.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_5.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_6.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_7.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_8.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/covers/cover_9.jpg -------------------------------------------------------------------------------- /fmi-2024-11-node-ts-lab/src/01-dns-promises.ts: -------------------------------------------------------------------------------- 1 | import * as dns from 'dns/promises'; 2 | 3 | const domain = 'yahoo.com'; 4 | 5 | dns.resolve(domain).then(addresses => { 6 | console.log(addresses); 7 | }) -------------------------------------------------------------------------------- /09-node-ts/src/08-stream-stdout.ts: -------------------------------------------------------------------------------- 1 | import { Readable } from 'node:stream'; 2 | 3 | var rs = new Readable(); 4 | rs.pipe(process.stdout); 5 | rs.push('beep '); 6 | rs.push('boop\n'); 7 | rs.push(null); 8 | 9 | -------------------------------------------------------------------------------- /09-nodejs-lab4/example01c.js: -------------------------------------------------------------------------------- 1 | // process.env.foo = 'bar'; 2 | console.log(process.env.foo); 3 | 4 | // print process.argv 5 | process.argv.forEach((val, index) => { 6 | console.log(`${index}: ${val}`); 7 | }); -------------------------------------------------------------------------------- /12-node-ts/src/08-stream-stdout.ts: -------------------------------------------------------------------------------- 1 | import { Readable } from 'node:stream'; 2 | 3 | var rs = new Readable(); 4 | rs.pipe(process.stdout); 5 | rs.push('beep '); 6 | rs.push('boop\n'); 7 | rs.push(null); 8 | 9 | -------------------------------------------------------------------------------- /14-ipt-knowledge-tester-express/app/components/views/main/no-match.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default React.createClass({ 4 | render() { 5 | return
NoMatch
6 | } 7 | }) 8 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_1.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_10.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_11.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_12.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_13.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_14.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_15.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_16.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_17.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_18.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_19.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_2.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_20.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_21.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_22.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_23.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_24.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_3.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_4.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_5.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_6.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_7.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_8.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_9.jpg -------------------------------------------------------------------------------- /fmi-2024-13-express-lab/src/model/web-error.ts: -------------------------------------------------------------------------------- 1 | export class WebError extends Error { 2 | constructor(public status: number, public message: string, public error?: string) { 3 | super(); 4 | } 5 | } -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/components/LoadingIndicator.tsx: -------------------------------------------------------------------------------- 1 | 2 | const LoadingIndicator = () => { 3 | return ( 4 |
Loading data ...
5 | ) 6 | } 7 | 8 | export default LoadingIndicator -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/index.js: -------------------------------------------------------------------------------- 1 | import { BlogsController } from './controller/blogs-controller.js'; 2 | const blogsController = new BlogsController(); 3 | blogsController.init(); 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /11-router-basics-ts/src/model/contact.ts: -------------------------------------------------------------------------------- 1 | export interface Contact { 2 | first: string; 3 | last: string; 4 | avatar: string; 5 | twitter: string; 6 | notes: string; 7 | favorite: boolean; 8 | }; -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "react", "stage-0"], 3 | "plugins": [ 4 | "babel-plugin-transform-decorators-legacy", 5 | "babel-plugin-transform-decorators"] 6 | } -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/src/app/assets/images/react-redux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/17-react-todos-redux-es7-decorator/src/app/assets/images/react-redux.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/illustrations/illustration_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/illustrations/illustration_login.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_1.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_10.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_11.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_12.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_13.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_14.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_15.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_16.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_17.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_18.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_19.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_2.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_20.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_21.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_22.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_23.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_24.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_3.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_4.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_5.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_6.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_7.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_8.jpg -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/products/product_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/products/product_9.jpg -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/src/08-stream-stdout.ts: -------------------------------------------------------------------------------- 1 | import { Readable } from 'node:stream'; 2 | 3 | var rs = new Readable(); 4 | rs.pipe(process.stdout); 5 | rs.push('beep '); 6 | rs.push('boop\n'); 7 | rs.push(null); 8 | 9 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/routes/About.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | 4 | const About = () => { 5 | return ( 6 |
About View
7 | ) 8 | } 9 | 10 | export default About; -------------------------------------------------------------------------------- /05-nodejs-demo/example01.js: -------------------------------------------------------------------------------- 1 | var dns = require('dns'); 2 | 3 | dns.resolve4('yahoo.com', function (err, addresses) { 4 | if (err) throw err; 5 | 6 | console.log('addresses: ' + JSON.stringify(addresses)); 7 | }); 8 | 9 | -------------------------------------------------------------------------------- /06-react-blogs/src/component/TabPanel.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export const TabPanel = ({id, title, children}) => { 4 | return ( 5 |
{children}
6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/illustrations/illustration_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/illustrations/illustration_avatar.png -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/mock-images/avatars/avatar_default.jpg -------------------------------------------------------------------------------- /fmi-2024-05-ts/dist/greeter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"greeter.js","sourceRoot":"","sources":["../src/greeter.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,MAAc;IAClC,OAAO,SAAS,GAAG,MAAM,GAAG,mBAAmB,CAAC;AACpD,CAAC"} -------------------------------------------------------------------------------- /fmi-2025-09-context/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /02-js-intro/js/temp.js: -------------------------------------------------------------------------------- 1 | function getComments(arr) { 2 | return arr.filter((str) => { str.match("^[[:space:]]*#[[:space:]]*") }).join("
"); 3 | 4 | } 5 | 6 | console.log(getComments([' #aaaa', ' bbbbb', ' cccc#'])) -------------------------------------------------------------------------------- /05-nodejs-demo/fs1.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | 3 | fs.readFile('fs1.js', function (err, data) { 4 | if (err) return console.error(err); 5 | console.log(data.toString()); 6 | }); 7 | 8 | console.log("Program Ended"); -------------------------------------------------------------------------------- /05-nodejs-demo/readable1.js: -------------------------------------------------------------------------------- 1 | const Readable = require('stream').Readable; 2 | 3 | var rs = new Readable(); 4 | rs.push('one\n'); 5 | rs.push('two\n'); 6 | rs.push('three\n'); 7 | rs.push(null); 8 | 9 | rs.pipe(process.stdout); -------------------------------------------------------------------------------- /07-react-refs-lab/src/components/FancyButton.css: -------------------------------------------------------------------------------- 1 | .FancyButton { 2 | background-color:cornflowerblue; 3 | color: white; 4 | border: 1px solid rgb(13, 83, 214); 5 | border-radius: 10px; 6 | padding: 15px; 7 | } -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/public/static/illustrations/illustration_register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iproduct/course-node-express-react/HEAD/fmi-2022-04-react-blogs/public/static/illustrations/illustration_register.png -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/src/FancyButton.css: -------------------------------------------------------------------------------- 1 | .FancyButton { 2 | background-color:cornflowerblue; 3 | color: white; 4 | border: 1px solid rgb(13, 83, 214); 5 | border-radius: 10px; 6 | padding: 15px; 7 | } -------------------------------------------------------------------------------- /fmi-2025-01-react-todos/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/dist/util/idgen.js: -------------------------------------------------------------------------------- 1 | export class NumberIdGenrator { 2 | constructor(nextId = 0) { 3 | this.nextId = nextId; 4 | } 5 | getNextId() { 6 | return ++this.nextId; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fmi-2025-13-mongo/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/server03.ts" 10 | } -------------------------------------------------------------------------------- /04-simple/src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './App.css'; 3 | import {Counter} from './Counter' 4 | 5 | function App() { 6 | return ( 7 | 8 | ); 9 | } 10 | 11 | export default App; 12 | -------------------------------------------------------------------------------- /09-react-todos-lab/src/app/assets/css/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: 'postcss-scss', 3 | plugins: { 4 | 'postcss-import': {}, 5 | 'postcss-cssnext': {}, 6 | 'cssnano': {} 7 | } 8 | } -------------------------------------------------------------------------------- /11-react-context/src/user-context.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // Signed-in user context 4 | export const UserContext = React.createContext({ 5 | name: 'Guest', 6 | }); 7 | UserContext.displayName = 'UserContext'; 8 | -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/src/AboutUs.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type Props = {} 4 | 5 | const AboutUs = (props: Props) => { 6 | return ( 7 |

About Us

8 | ) 9 | } 10 | 11 | export default AboutUs; -------------------------------------------------------------------------------- /fmi-2024-13-express-lab/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/server02.ts" 10 | } -------------------------------------------------------------------------------- /fmi-2025-06-react-todos-ts/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /fmi-2025-07-react-books-ts/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /fmi-2025-08-react-refs-ts/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /fmi-2025-12-express-ts/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/server03.ts" 10 | } -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/App.tsx: -------------------------------------------------------------------------------- 1 | import './App.css' 2 | import { Outlet } from 'react-router' 3 | 4 | function App() { 5 | 6 | return ( 7 | 8 | ) 9 | } 10 | 11 | export default App 12 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/routes/NoMatch.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | 4 | const NoMatch = () => { 5 | return ( 6 |
Page does not exist.
7 | ) 8 | } 9 | 10 | export default NoMatch; -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/dao/id-generator.js: -------------------------------------------------------------------------------- 1 | export class NumberIdGenerator { 2 | getNextId() { 3 | return ++NumberIdGenerator.nextId; 4 | } 5 | } 6 | NumberIdGenerator.nextId = 0; 7 | //# sourceMappingURL=id-generator.js.map -------------------------------------------------------------------------------- /06-myblogs-rest-ts/dist/state-store.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"state-store.js","sourceRoot":"","sources":["../src/state-store.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,aAAa,GAAa;IACnC,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,EAAE;CACf,CAAA"} -------------------------------------------------------------------------------- /09-node-ts/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/10-stream-letters-async.ts" 10 | } -------------------------------------------------------------------------------- /12-node-ts/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/10-stream-letters-async.ts" 10 | } -------------------------------------------------------------------------------- /23-loopback-mongo/server/middleware.development.json: -------------------------------------------------------------------------------- 1 | { 2 | "final:after": { 3 | "strong-error-handler": { 4 | "params": { 5 | "debug": true, 6 | "log": true 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/theme/breakpoints.js: -------------------------------------------------------------------------------- 1 | const breakpoints = { 2 | values: { 3 | xs: 0, 4 | sm: 600, 5 | md: 900, 6 | lg: 1200, 7 | xl: 1536 8 | } 9 | }; 10 | 11 | export default breakpoints; 12 | -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/src/01-dns-async-await.ts: -------------------------------------------------------------------------------- 1 | import * as dns from 'dns/promises'; 2 | 3 | const domain = 'yahoo.com'; 4 | 5 | (async () => { 6 | const addresses = await dns.resolve(domain) 7 | console.log(addresses); 8 | })(); -------------------------------------------------------------------------------- /fmi-2025-11-node-ts/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/06-http-rest-api.ts" 10 | } -------------------------------------------------------------------------------- /todo-app/src/Hello.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | class Hello extends React.Component { 4 | render() { 5 | return
Hello {this.props.name}, from React.js!
; 6 | } 7 | } 8 | 9 | export default Hello; 10 | -------------------------------------------------------------------------------- /02-js-intro/js/functions.js: -------------------------------------------------------------------------------- 1 | function f(a, b) { 2 | a = a || 5; 3 | b = b || 10; 4 | return a + b; 5 | } 6 | 7 | function f2(a = 5, b = 10) { 8 | return a + b; 9 | } 10 | 11 | console.log(f()) 12 | console.log(f2()) -------------------------------------------------------------------------------- /09-react-lab-a/src/app/hello.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default class Hello extends React.Component { 4 | render() { 5 | return ( 6 |

Hello, {this.props.name}

7 | ); 8 | } 9 | } -------------------------------------------------------------------------------- /09-react-lab-b/src/app/hello.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default class Hello extends React.Component { 4 | render() { 5 | return ( 6 |

Hello, {this.props.name}

7 | ); 8 | } 9 | } -------------------------------------------------------------------------------- /14-express-ts-lab/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/04-server-express-router.ts" 10 | } -------------------------------------------------------------------------------- /16-ts-mongo-lab/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/01-mongo-connect-insert.ts" 10 | } -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/Home.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type Props = {} 4 | 5 | const Home = (props: Props) => { 6 | return ( 7 |
Home View
8 | ) 9 | } 10 | 11 | export default Home; -------------------------------------------------------------------------------- /fmi-2024-11-node-ts-lab/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/05-http-rest-api.ts" 10 | } -------------------------------------------------------------------------------- /fmi-2024-11-node-ts-lab/src/01-dns-async-await.ts: -------------------------------------------------------------------------------- 1 | import * as dns from 'dns/promises'; 2 | 3 | const domain = 'yahoo.com'; 4 | 5 | (async () => { 6 | const addresses = await dns.resolve(domain) 7 | console.log(addresses); 8 | })(); -------------------------------------------------------------------------------- /fmi-2024-15-blogs-api-express-mongo/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/server.ts" 10 | } -------------------------------------------------------------------------------- /fmi-2025-07-react-client-face-recog/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /fmi-2025-10-react-router-declarative/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/indexed-types.js: -------------------------------------------------------------------------------- 1 | // Type inference 2 | export const MyArray = [ 3 | { name: "Alice", age: 15 }, 4 | { name: "Bob", age: 23 }, 5 | { name: "Eve", age: 38 }, 6 | ]; 7 | // 8 | //# sourceMappingURL=indexed-types.js.map -------------------------------------------------------------------------------- /10-tic-tac-toe/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | import './index.css'; 5 | 6 | ReactDOM.render( 7 | , 8 | document.getElementById('root') 9 | ); 10 | -------------------------------------------------------------------------------- /12-react-router-demos/src/pages/About.tsx: -------------------------------------------------------------------------------- 1 | 2 | import * as React from "react"; 3 | 4 | function AboutPage() { 5 | return ( 6 |
7 |

About

8 |
9 | ); 10 | } 11 | 12 | export default AboutPage; 13 | -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/src/Home.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type Props = {} 4 | 5 | const Home = (props: Props) => { 6 | return ( 7 |

Welcome to React Router 6.4+!

8 | ) 9 | } 10 | 11 | export default Home; -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/About.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type Props = {} 4 | 5 | const About = (props: Props) => { 6 | return ( 7 |
About View
8 | ) 9 | } 10 | 11 | export default About; -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/07-http-server-files-streams.ts" 10 | } -------------------------------------------------------------------------------- /01-es6-features-lab4/promises.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GitHub Promise Demo 4 | 5 | 6 | 7 |

GitHub Promise Demos

8 | 9 | -------------------------------------------------------------------------------- /01-es6-features-lab4/test.js: -------------------------------------------------------------------------------- 1 | function f({a, b = 0} = {a: "!"}) { return [a, b] } 2 | 3 | console.log([f({a: "ok"}), f(), f({})]); 4 | 5 | let [, a, , b, ...c] = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 6 | 7 | const r = `${a},${b},${c}`; 8 | console.log(r) 9 | -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/dao/id-generator.js: -------------------------------------------------------------------------------- 1 | export class NumberIdGenerator { 2 | constructor() { 3 | this.nextId = 0; 4 | } 5 | getNextId() { 6 | return ++this.nextId; 7 | } 8 | } 9 | //# sourceMappingURL=id-generator.js.map -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,eAAe,CAAC,IAAI,EAAE,CAAC"} -------------------------------------------------------------------------------- /09-react-lab-a/src/app/helper.js: -------------------------------------------------------------------------------- 1 | import Remarkable from 'remarkable'; 2 | 3 | const markdown = new Remarkable(); 4 | 5 | export function getMarkdown(markdownMarkup) { 6 | return {__html: markdown.render(markdownMarkup.toString())}; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /11-router-basics-ts/src/components/PostList.css: -------------------------------------------------------------------------------- 1 | .PostList { 2 | display: flex; 3 | flex-flow: row wrap; 4 | gap: 20px 20px; 5 | } 6 | 7 | 8 | .PostList .active { 9 | color: white; 10 | background-color: cornflowerblue; 11 | } -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/src/pages/About.tsx: -------------------------------------------------------------------------------- 1 | 2 | import * as React from "react"; 3 | 4 | function AboutPage() { 5 | return ( 6 |
7 |

About

8 |
9 | ); 10 | } 11 | 12 | export default AboutPage; 13 | -------------------------------------------------------------------------------- /15-react-router-v4/src/components/home.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | class Home extends Component { 4 | render() { 5 | return ( 6 |

Home

7 | ); 8 | } 9 | } 10 | 11 | export default Home; 12 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/sections/@dashboard/user/index.js: -------------------------------------------------------------------------------- 1 | export { default as UserListHead } from './UserListHead'; 2 | export { default as UserListToolbar } from './UserListToolbar'; 3 | export { default as UserMoreMenu } from './UserMoreMenu'; 4 | -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/src/todo-model.js: -------------------------------------------------------------------------------- 1 | export class Todo { 2 | static nextId = 0; 3 | constructor(text, status='active') { 4 | this.id = ++Todo.nextId; 5 | this.text = text; 6 | this.status = status; 7 | } 8 | } -------------------------------------------------------------------------------- /fmi-2024-14-express-ts-lab/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": [ 3 | "src" 4 | ], 5 | "ext": "ts,json", 6 | "ignore": [ 7 | "src/**/*.spec.ts" 8 | ], 9 | "exec": "ts-node ./src/04-server-express-router.ts" 10 | } -------------------------------------------------------------------------------- /06-nodejs-api-articles/articles.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Is REST easy for you?", 4 | "id": 1494236279135 5 | }, 6 | { 7 | "text": "May be better we use ExpressJS.", 8 | "id": 1495037050651 9 | } 10 | ] -------------------------------------------------------------------------------- /06-react-blogs/src/component/PostsMain.css: -------------------------------------------------------------------------------- 1 | .PostMain { 2 | display: flex; 3 | } 4 | .PostMain-btn { 5 | width: 100%; 6 | } 7 | .PostMain-left-column { 8 | width: 30%; 9 | } 10 | .PostMain-right-column { 11 | width: 70%; 12 | 13 | } -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/sections/@dashboard/blog/index.js: -------------------------------------------------------------------------------- 1 | export { default as BlogPostCard } from './BlogPostCard'; 2 | export { default as BlogPostsSearch } from './BlogPostsSearch'; 3 | export { default as BlogPostsSort } from './BlogPostsSort'; 4 | -------------------------------------------------------------------------------- /01-es6-features-lab4/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GitHub Promise Demo 4 | 5 | 6 | 7 |

GitHub Promise Demos

8 | 9 | -------------------------------------------------------------------------------- /09-react-todos/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React TODOs 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/NoMatch.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type Props = {} 4 | 5 | const NoMatch = (props: Props) => { 6 | return ( 7 |
Page does not exist.
8 | ) 9 | } 10 | 11 | export default NoMatch; -------------------------------------------------------------------------------- /fmi-2024-11-node-ts-lab/todos.json: -------------------------------------------------------------------------------- 1 | [{"id":1,"text":"Implement REST server"},{"id":2,"text":"Implement GET all TODOs"},{"id":3,"text":"Implement POST new TODO"},{"id":4,"text":"Implement error handling"},{"text":"Use Postman","id":5},{"text":"Use Postman","id":6}] -------------------------------------------------------------------------------- /fmi-2024-13-express-lab/todos.json: -------------------------------------------------------------------------------- 1 | [{"id":1,"text":"Implement REST server"},{"id":2,"text":"Implement GET all TODOs"},{"id":3,"text":"Implement POST new TODO"},{"id":4,"text":"Implement error handling"},{"text":"Use Postman","id":5},{"text":"Use Postman","id":6}] -------------------------------------------------------------------------------- /08-redux-simple-demo/src/app/store.js: -------------------------------------------------------------------------------- 1 | import { configureStore } from '@reduxjs/toolkit'; 2 | import counterReducer from '../features/counter/counterSlice'; 3 | 4 | export default configureStore({ 5 | reducer: { 6 | counter: counterReducer, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /08-redux-simple-lab4/src/app/store.js: -------------------------------------------------------------------------------- 1 | import { configureStore } from '@reduxjs/toolkit'; 2 | import counterReducer from '../features/counter/counterSlice'; 3 | 4 | export default configureStore({ 5 | reducer: { 6 | counter: counterReducer, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /16-react-todos-redux/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React TODOs 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /09-react-lab-b/src/app/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from 'react-dom'; 3 | import TodoApp from './todo-app'; 4 | import { hot } from 'react-hot-loader'; 5 | 6 | const root = document.getElementById('root'); 7 | render(, root); 8 | -------------------------------------------------------------------------------- /10-tic-tac-toe/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | }); 9 | -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/src/services/posts-service.ts: -------------------------------------------------------------------------------- 1 | import { Post } from "../model/posts"; 2 | import { Api, ApiClient } from "./api-client"; 3 | 4 | export interface PostsService extends Api {} 5 | 6 | export const PostsClientService = new ApiClient('posts'); -------------------------------------------------------------------------------- /02-js-intro/js/arrows.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const bob = { 4 | name: 'Bob', 5 | firiends:['Alice', 'Jane'], 6 | printFiends() { 7 | this.firiends.forEach((f => console.log(`${this.name} knows ${f}`))); 8 | } 9 | } 10 | 11 | bob.printFiends() -------------------------------------------------------------------------------- /05-ts-blogs-rest/dist/dao/id-generator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/dao/id-generator.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,iBAAiB;IAE1B,SAAS;QACL,OAAO,EAAG,iBAAiB,CAAC,MAAM,CAAC;IACvC,CAAC;;AAHc,wBAAM,GAAG,CAAC,CAAC"} -------------------------------------------------------------------------------- /11-router-basics-ts/src/pages/HomePage.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export const HomePage = () => { 4 | return ( 5 | <> 6 |

HomePage

7 |

Welcome to React Routing Demo!

8 | 9 | ) 10 | } 11 | -------------------------------------------------------------------------------- /15-react-router-v4/src/app.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './app'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | }); 9 | -------------------------------------------------------------------------------- /18-react-router-redux/src/app.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './app'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | }); 9 | -------------------------------------------------------------------------------- /23-loopback-mongo/.gitignore: -------------------------------------------------------------------------------- 1 | *.csv 2 | *.dat 3 | *.iml 4 | *.log 5 | *.out 6 | *.pid 7 | *.seed 8 | *.sublime-* 9 | *.swo 10 | *.swp 11 | *.tgz 12 | *.xml 13 | .DS_Store 14 | .idea 15 | .project 16 | .strong-pm 17 | coverage 18 | node_modules 19 | npm-debug.log 20 | -------------------------------------------------------------------------------- /fmi-2022-02-js-lab/arrows.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const bob = { 4 | name: 'Bob', 5 | firiends:['Alice', 'Jane'], 6 | printFiends() { 7 | this.firiends.forEach(f => console.log(`${this.name} knows ${f}`)); 8 | } 9 | } 10 | 11 | bob.printFiends() -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/src/app/store.js: -------------------------------------------------------------------------------- 1 | import { configureStore } from '@reduxjs/toolkit'; 2 | import counterReducer from '../features/counter/counterSlice'; 3 | 4 | export const store = configureStore({ 5 | reducer: { 6 | counter: counterReducer, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /fmi-2023-01-js-intro-lab/test.rest: -------------------------------------------------------------------------------- 1 | GET http://localhost:9000/api/posts HTTP/1.1 2 | 3 | ### 4 | 5 | POST http://localhost:9000/api/posts HTTP/1.1 6 | Content-Type:application/json 7 | 8 | { 9 | "title": "New in ECMAScript!!!", 10 | "author": "Trayan" 11 | } -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/src/hooks/useEffectOnMount.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable react-hooks/exhaustive-deps */ 2 | import { EffectCallback, useEffect } from 'react'; 3 | export default function useEffectOnMount(effectCallback: EffectCallback) { 4 | useEffect(effectCallback, []); 5 | } -------------------------------------------------------------------------------- /09-react-lab-a/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /09-react-lab-b/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /09-react-todos/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React TODOs 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React TODOs 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /23-loopback-mongo/server/boot/root.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(server) { 4 | // Install a `/` route that returns server status 5 | var router = server.loopback.Router(); 6 | router.get('/', server.loopback.status()); 7 | server.use(router); 8 | }; 9 | -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/src/features/counter/counterAPI.js: -------------------------------------------------------------------------------- 1 | // A mock function to mimic making an async request for data 2 | export function fetchCount(amount = 1) { 3 | return new Promise((resolve) => 4 | setTimeout(() => resolve({ data: amount }), 1000) 5 | ); 6 | } 7 | -------------------------------------------------------------------------------- /fmi-2025-react-router-v7/react-router.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "@react-router/dev/config"; 2 | 3 | export default { 4 | // Config options... 5 | // Server-side render by default, to enable SPA mode set this to `false` 6 | ssr: true, 7 | } satisfies Config; 8 | -------------------------------------------------------------------------------- /05-nodejs-demo/rx1.js: -------------------------------------------------------------------------------- 1 | const Rx = require('rxjs'); 2 | let s1 = Rx.Observable.from(["one", "two", "three"]); 3 | Rx.Observable.from(["Reactive", "Extensions", "JavaScript"]) 4 | .zip(s1) 5 | .take(2) 6 | // .map(s => s + " : on " + new Date()) 7 | .subscribe(s => console.log(s)); -------------------------------------------------------------------------------- /09-node-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /09-react-lab-a/src/vendor.js: -------------------------------------------------------------------------------- 1 | // Import vendor libraries 2 | // import 'jquery'; 3 | import 'react'; 4 | import 'react-dom'; 5 | import 'bootstrap/dist/css/bootstrap.min.css'; 6 | 7 | // Other vendors for example jQuery, Lodash or Bootstrap 8 | // You can import js, ts, css, sass, ... -------------------------------------------------------------------------------- /09-react-lab-b/src/vendor.js: -------------------------------------------------------------------------------- 1 | // Import vendor libraries 2 | // import 'jquery'; 3 | import 'react'; 4 | import 'react-dom'; 5 | import 'bootstrap/dist/css/bootstrap.min.css'; 6 | 7 | // Other vendors for example jQuery, Lodash or Bootstrap 8 | // You can import js, ts, css, sass, ... -------------------------------------------------------------------------------- /09-react-todos-lab/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /09-react-todos-lab/src/vendor.js: -------------------------------------------------------------------------------- 1 | // Import vendor libraries 2 | // import 'jquery'; 3 | import 'react'; 4 | import 'react-dom'; 5 | import 'bootstrap/dist/css/bootstrap.min.css'; 6 | 7 | // Other vendors for example jQuery, Lodash or Bootstrap 8 | // You can import js, ts, css, sass, ... -------------------------------------------------------------------------------- /09-react-todos/src/vendor.js: -------------------------------------------------------------------------------- 1 | // Import vendor libraries 2 | // import 'jquery'; 3 | import 'react'; 4 | import 'react-dom'; 5 | import 'bootstrap/dist/css/bootstrap.min.css'; 6 | 7 | // Other vendors for example jQuery, Lodash or Bootstrap 8 | // You can import js, ts, css, sass, ... -------------------------------------------------------------------------------- /12-node-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /16-react-todos-redux/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/LoadingIndicator.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type Props = {} 4 | 5 | const LoadingIndicator = (props: Props) => { 6 | return ( 7 |
Loading data ...
8 | ) 9 | } 10 | 11 | export default LoadingIndicator -------------------------------------------------------------------------------- /04-ts-intro-lab/dist/dao/id-generator.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/dao/id-generator.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iBAAiB;IAA9B;QACY,WAAM,GAAG,CAAC,CAAC;IAIvB,CAAC;IAHG,SAAS;QACL,OAAO,EAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;CACJ"} -------------------------------------------------------------------------------- /06-react-blogs/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /16-ts-mongo-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/src/hooks/useEffectOnMount.ts: -------------------------------------------------------------------------------- 1 | import { EffectCallback, useEffect } from 'react' 2 | 3 | 4 | export default function useEffectOnMount(effect: EffectCallback) { 5 | // eslint-disable-next-line react-hooks/exhaustive-deps 6 | useEffect(() => effect(), []) 7 | } -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/src/hooks/useEffectOnMount.ts: -------------------------------------------------------------------------------- 1 | import { EffectCallback, useEffect } from 'react' 2 | 3 | 4 | export default function useEffectOnMount(effect: EffectCallback) { 5 | // eslint-disable-next-line react-hooks/exhaustive-deps 6 | useEffect(() => effect(), []) 7 | } -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/dist/dao/user-repository.js: -------------------------------------------------------------------------------- 1 | import { RepositoryInMemory } from "./repository.js"; 2 | export class UserRepositoryInMemory extends RepositoryInMemory { 3 | findByEmail(email) { 4 | return this.findAll().find(user => user.email === email); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /fmi-2025-08-react-refs-ts/src/hooks/useEffectOnMount.ts: -------------------------------------------------------------------------------- 1 | import { EffectCallback, useEffect } from 'react' 2 | 3 | 4 | export default function useEffectOnMount(effect: EffectCallback) { 5 | // eslint-disable-next-line react-hooks/exhaustive-deps 6 | useEffect(() => effect(), []) 7 | } -------------------------------------------------------------------------------- /04-ts-intro-lab/src/dao/id-generator.ts: -------------------------------------------------------------------------------- 1 | export interface IdGenerator { 2 | getNextId(): K; 3 | } 4 | 5 | export class NumberIdGenerator implements IdGenerator { 6 | private nextId = 0; 7 | getNextId(): number { 8 | return ++ this.nextId; 9 | } 10 | } -------------------------------------------------------------------------------- /06-myblogs-rest-ts/src/state-store.ts: -------------------------------------------------------------------------------- 1 | import { Post } from "./posts.js"; 2 | 3 | export interface AppState { 4 | editedPost: Post | undefined; 5 | allPosts: Post[] 6 | } 7 | 8 | export const AppStateStore: AppState = { 9 | editedPost: undefined, 10 | allPosts: [] 11 | } -------------------------------------------------------------------------------- /07-react-refs-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /08-react-blogs-mui/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /11-router-basics-ts/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /12-router-modal-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /12-routing-auth-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /14-express-ts-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/src/app/reducers/selected-todo.js: -------------------------------------------------------------------------------- 1 | const selectedTodo = (state=null, action) => { 2 | switch (action.type) { 3 | case 'SELECT_TODO': 4 | return action.todo; 5 | default: 6 | return state; 7 | } 8 | }; 9 | 10 | export default selectedTodo; -------------------------------------------------------------------------------- /fmi-2023-node-ts-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2023-ts-todos/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2025-11-node-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2025-13-mongo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /03-mybooks/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /04-simple/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /17-react-todos-redux-es7-decorator/config/helpers.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var _root = path.resolve(__dirname, '..'); 3 | function root(args) { 4 | args = Array.prototype.slice.call(arguments, 0); 5 | return path.join.apply(path, [_root].concat(args)); 6 | } 7 | exports.root = root; 8 | -------------------------------------------------------------------------------- /17-ts-express-mongo-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /18-react-router-redux/src/components/home.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { connect } from 'react-redux'; 3 | 4 | @connect() 5 | export default class Home extends Component { 6 | render() { 7 | return ( 8 |

Home

9 | ); 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /fmi-2022-01-react-intro/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2023-05-blogs-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2023-ruoter-ts-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-06-todos-ts/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-11-node-ts-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/dist/01-dns.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const dns = require("dns"); 4 | const domain = 'yahoo.com'; 5 | dns.resolve(domain, (err, addresses) => { 6 | console.log(addresses); 7 | }); 8 | //# sourceMappingURL=01-dns.js.map -------------------------------------------------------------------------------- /fmi-2024-13-express-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2024-14-express-ts-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2025-12-express-ts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | import tailwindcss from '@tailwindcss/vite' 4 | 5 | // https://vite.dev/config/ 6 | export default defineConfig({ 7 | plugins: [react(), tailwindcss()], 8 | }) 9 | -------------------------------------------------------------------------------- /todo-app/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /00-todo-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /03-mybooks-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /04-mybooks-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /06-react-blogs/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /07-react-refs/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /09-react-todos-lab/src/app/hello.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default class Hello extends React.Component { 4 | render() { 5 | return ( 6 |
7 |

Hello, {this.props.name}!

8 |
9 | ); 10 | } 11 | } -------------------------------------------------------------------------------- /12-roter-lazy-loading-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-07-react-blogs-ts/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-08-react-refs-lab/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-09-react-context-ts/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /06-react-router-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /07-react-refs-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /08-redux-simple-demo/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /08-redux-simple-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /11-react-context/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /12-react-demo-sqlite-custom-form/src/vendor.js: -------------------------------------------------------------------------------- 1 | // Import vendor libraries 2 | // import 'jquery'; 3 | // import 'react'; 4 | // import 'react-dom'; 5 | // import 'bootstrap/dist/css/bootstrap.min.css'; 6 | 7 | // Other vendors for example jQuery, Lodash or Bootstrap 8 | // You can import js, ts, css, sass, ... -------------------------------------------------------------------------------- /16-react-todos-redux/src/app/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import todos from './todos'; 3 | import visibilityFilter from './visibilityFilter'; 4 | 5 | const rootReducer = combineReducers({ 6 | todos, 7 | visibilityFilter 8 | }); 9 | 10 | export default rootReducer; -------------------------------------------------------------------------------- /16-react-todos-redux/src/app/reducers/visibilityFilter.js: -------------------------------------------------------------------------------- 1 | const visibilityFilter = (state = 'all', action) => { 2 | switch (action.type) { 3 | case 'SET_VISIBILITY_FILTER': 4 | return action.filter; 5 | default: 6 | return state; 7 | } 8 | }; 9 | 10 | export default visibilityFilter; -------------------------------------------------------------------------------- /23-loopback-mongo/server/datasources.json: -------------------------------------------------------------------------------- 1 | { 2 | "db": { 3 | "name": "db", 4 | "connector": "memory" 5 | }, 6 | "mongodb": { 7 | "host": "localhost", 8 | "port": 27017, 9 | "database": "loopback", 10 | "name": "mongodb", 11 | "connector": "mongodb" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /fmi-2023-04-ts-lab/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "posts": [ 3 | { "id": 1, "title": "json-server", "author": "typicode" } 4 | ], 5 | "comments": [ 6 | { "id": 1, "body": "some comment", "postId": 1 } 7 | ], 8 | "users": [ 9 | { "id": 1, "name": "typicode" } 10 | ] 11 | } -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/src/TodoList.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Todo } from './Todo' 3 | 4 | 5 | export const TodoList = ({todos, ...rest}) => { 6 | return todos.map(todo => 7 | () 8 | ) 9 | } 10 | 11 | 12 | -------------------------------------------------------------------------------- /fmi-2024-10-react-routing-ts/src/components/ContactDetailsForm.css: -------------------------------------------------------------------------------- 1 | .contact-form { 2 | display: flex; 3 | flex-flow: column; 4 | } 5 | .contact-form input, .contact-form button { 6 | margin: 5px 30px; 7 | } 8 | .contact-form .error { 9 | margin: 0 30px 5px; 10 | color: red; 11 | } -------------------------------------------------------------------------------- /fmi-2024-12-nodejs/dist/01-dns.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"01-dns.js","sourceRoot":"","sources":["../src/01-dns.ts"],"names":[],"mappings":";;AAAA,2BAA2B;AAE3B,MAAM,MAAM,GAAI,WAAW,CAAC;AAE5B,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;IACnC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAA"} -------------------------------------------------------------------------------- /fmi-2024-15-blogs-api-express-mongo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "CommonJS", 5 | "outDir": "dist", 6 | "sourceMap": true 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["node_modules", ".vscode"] 10 | } -------------------------------------------------------------------------------- /fmi-2025-03-ts-intro/src/util/idgen.ts: -------------------------------------------------------------------------------- 1 | export interface IdGenerator { 2 | getNextId(): K; 3 | } 4 | 5 | export class NumberIdGenrator implements IdGenerator{ 6 | constructor(private nextId: number = 0){} 7 | getNextId(): number { 8 | return ++this.nextId; 9 | } 10 | } -------------------------------------------------------------------------------- /fmi-2025-react-router-v7-dataload/src/routes/ContactDetailsForm.css: -------------------------------------------------------------------------------- 1 | .contact-form { 2 | display: flex; 3 | flex-flow: column; 4 | } 5 | .contact-form input, .contact-form button { 6 | margin: 5px 30px; 7 | } 8 | .contact-form .error { 9 | margin: 0 30px 5px; 10 | color: red; 11 | } -------------------------------------------------------------------------------- /05-mybooks-router-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /05-react-router-demos/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /07-react-context-lab4/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /12-blogs-react-client/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /12-react-router-demos/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /fmi-2022-01-react-intro/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /fmi-2022-03-react-todos/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /fmi-2022-04-react-blogs/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /fmi-2022-06-basic-redux/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /fmi-2024-01-react-todos/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | --------------------------------------------------------------------------------