gitextract_cqg26ger/ ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── auth0-security/ │ ├── README.md │ └── fullstack-library-app-auth0/ │ ├── 01-starter-files/ │ │ ├── App.css/ │ │ │ └── App.css │ │ ├── Scripts/ │ │ │ ├── Payment Script/ │ │ │ │ └── Payment Script.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-2.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-3.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-4.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-5.sql │ │ │ └── React-Springboot-Add-Tables-Script-1.sql │ │ └── application.properties │ ├── 02-backend/ │ │ └── spring-boot-library/ │ │ ├── .gitignore │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── luv2code/ │ │ │ │ └── springbootlibrary/ │ │ │ │ ├── SpringBootLibraryApplication.java │ │ │ │ ├── config/ │ │ │ │ │ ├── MyDataRestConfig.java │ │ │ │ │ └── SecurityConfiguration.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── AdminController.java │ │ │ │ │ ├── BookController.java │ │ │ │ │ ├── MessagesController.java │ │ │ │ │ └── ReviewController.java │ │ │ │ ├── dao/ │ │ │ │ │ ├── BookRepository.java │ │ │ │ │ ├── CheckoutRepository.java │ │ │ │ │ ├── HistoryRepository.java │ │ │ │ │ ├── MessageRepository.java │ │ │ │ │ └── ReviewRepository.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Book.java │ │ │ │ │ ├── Checkout.java │ │ │ │ │ ├── History.java │ │ │ │ │ ├── Message.java │ │ │ │ │ └── Review.java │ │ │ │ ├── requestmodels/ │ │ │ │ │ ├── AddBookRequest.java │ │ │ │ │ ├── AdminQuestionRequest.java │ │ │ │ │ └── ReviewRequest.java │ │ │ │ ├── responsemodels/ │ │ │ │ │ └── ShelfCurrentLoansResponse.java │ │ │ │ └── service/ │ │ │ │ ├── AdminService.java │ │ │ │ ├── BookService.java │ │ │ │ ├── MessagesService.java │ │ │ │ └── ReviewService.java │ │ │ └── resources/ │ │ │ └── application.properties │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── luv2code/ │ │ └── springbootlibrary/ │ │ └── SpringBootLibraryApplicationTests.java │ ├── 03-frontend/ │ │ └── react-library/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Auth/ │ │ │ │ └── LoginPage.jsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── layouts/ │ │ │ │ ├── BookCheckoutPage/ │ │ │ │ │ ├── BookCheckoutPage.tsx │ │ │ │ │ ├── CheckoutAndReviewBox.tsx │ │ │ │ │ ├── LatestReviews.tsx │ │ │ │ │ └── ReviewListPage/ │ │ │ │ │ └── ReviewListPage.tsx │ │ │ │ ├── HomePage/ │ │ │ │ │ ├── HomePage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── Carousel.tsx │ │ │ │ │ ├── ExploreTopBooks.tsx │ │ │ │ │ ├── Heros.tsx │ │ │ │ │ ├── LibraryServices.tsx │ │ │ │ │ └── ReturnBook.tsx │ │ │ │ ├── ManageLibraryPage/ │ │ │ │ │ ├── ManageLibraryPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── AddNewBook.tsx │ │ │ │ │ ├── AdminMessage.tsx │ │ │ │ │ ├── AdminMessages.tsx │ │ │ │ │ ├── ChangeQuantityOfBook.tsx │ │ │ │ │ └── ChangeQuantityOfBooks.tsx │ │ │ │ ├── MessagesPage/ │ │ │ │ │ ├── MessagesPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── Messages.tsx │ │ │ │ │ └── PostNewMessage.tsx │ │ │ │ ├── NavbarAndFooter/ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ └── Navbar.tsx │ │ │ │ ├── SearchBooksPage/ │ │ │ │ │ ├── SearchBooksPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ └── SearchBook.tsx │ │ │ │ ├── ShelfPage/ │ │ │ │ │ ├── ShelfPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── HistoryPage.tsx │ │ │ │ │ ├── Loans.tsx │ │ │ │ │ └── LoansModal.tsx │ │ │ │ └── Utils/ │ │ │ │ ├── LeaveAReview.tsx │ │ │ │ ├── Pagination.tsx │ │ │ │ ├── Review.tsx │ │ │ │ ├── SpinnerLoading.tsx │ │ │ │ └── StarsReview.tsx │ │ │ ├── lib/ │ │ │ │ └── auth0Config.ts │ │ │ ├── models/ │ │ │ │ ├── AddBookRequest.ts │ │ │ │ ├── AdminMessageRequest.ts │ │ │ │ ├── BookModel.ts │ │ │ │ ├── HistoryModel.ts │ │ │ │ ├── MessageModel.ts │ │ │ │ ├── ReviewModel.ts │ │ │ │ ├── ReviewRequestModel.ts │ │ │ │ └── ShelfCurrentLoans.ts │ │ │ └── react-app-env.d.ts │ │ └── tsconfig.json │ └── static-html-css-files/ │ ├── Section 10. Home Page Static Files/ │ │ ├── Carousel.tsx │ │ ├── ExploreTopBooks.tsx │ │ ├── Footer.tsx │ │ ├── Heros.tsx │ │ ├── LibraryServices.tsx │ │ ├── Navbar.tsx │ │ └── ReturnBook.tsx │ ├── Section 13. Search Books Page Static Files/ │ │ ├── Pagination.tsx │ │ ├── SearchBook.tsx │ │ └── SearchBooksPage.tsx │ ├── Section 15. Book Checkout Static Files/ │ │ ├── BookCheckoutPage.tsx │ │ ├── CheckoutAndReviewBox.tsx │ │ └── StarsReview.tsx │ ├── Section 16. Reviews Static Files/ │ │ ├── LatestReviews.tsx │ │ └── Review.tsx │ ├── Section 23. Leave a Review Static Files/ │ │ └── LeaveAReview.tsx │ ├── Section 24. Review List Page Static Files/ │ │ └── ReviewListPage.tsx │ ├── Section 25. Shelf Page Static Files/ │ │ ├── Loans.tsx │ │ ├── LoansModal.tsx │ │ └── ShelfPage.tsx │ ├── Section 26. History Page Static Files/ │ │ └── HistoryPage.tsx │ ├── Section 27. Library Services Static Files/ │ │ ├── Messages.tsx │ │ ├── MessagesPage.tsx │ │ └── PostNewMessage.tsx │ ├── Section 28. Manage Library Services Static Files/ │ │ ├── AdminMessage.tsx │ │ ├── AdminMessages.tsx │ │ └── ManageLibraryPage.tsx │ ├── Section 29. Add new book Static Files/ │ │ └── AddNewBook.tsx │ └── Section 30. Change Quantity Static Files/ │ ├── ChangeQuantityOfBook.tsx │ └── ChangeQuantityOfBooks.tsx ├── bonus-content/ │ ├── keytool-steps.md │ └── openssl-setup.md ├── install-react-tools/ │ ├── linux/ │ │ └── install-linux.md │ ├── mac/ │ │ └── install-mac.md │ └── ms-windows/ │ └── install-ms-windows.md └── source-code/ ├── bootstrap-training/ │ ├── 1. Containers/ │ │ └── home.html │ ├── 10 accordions/ │ │ └── home.html │ ├── 11. Columns in rows/ │ │ └── home.html │ ├── 12. Rows and columns/ │ │ └── home.html │ ├── 13. Tables/ │ │ └── home.html │ ├── 14. Forms Basic/ │ │ └── home.html │ ├── 15. Forms/ │ │ └── home.html │ ├── 16. Modals/ │ │ └── home.html │ ├── 17. Hide/ │ │ └── home.html │ ├── 2. Buttons/ │ │ └── home.html │ ├── 3. Dropdowns/ │ │ └── home.html │ ├── 4. Cards/ │ │ └── home.html │ ├── 5. Alerts/ │ │ └── home.html │ ├── 6. Spinners/ │ │ └── home.html │ ├── 7. Progress/ │ │ └── home.html │ ├── 8. Collapse/ │ │ └── home.html │ └── 9. Navbar/ │ └── home.html ├── fullstack-library-app/ │ ├── 01-starter-files/ │ │ ├── App.css/ │ │ │ └── App.css │ │ ├── Scripts/ │ │ │ ├── Payment Script/ │ │ │ │ └── Payment Script.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-2.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-3.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-4.sql │ │ │ ├── React-SpringBoot-Add-Books-Script-5.sql │ │ │ └── React-Springboot-Add-Tables-Script-1.sql │ │ └── application.properties │ ├── 02-backend/ │ │ └── spring-boot-library/ │ │ └── spring-boot-library/ │ │ ├── .gitignore │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── luv2code/ │ │ │ │ └── springbootlibrary/ │ │ │ │ ├── SpringBootLibraryApplication.java │ │ │ │ ├── config/ │ │ │ │ │ ├── MyDataRestConfig.java │ │ │ │ │ └── SecurityConfiguration.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── AdminController.java │ │ │ │ │ ├── BookController.java │ │ │ │ │ ├── MessagesController.java │ │ │ │ │ └── ReviewController.java │ │ │ │ ├── dao/ │ │ │ │ │ ├── BookRepository.java │ │ │ │ │ ├── CheckoutRepository.java │ │ │ │ │ ├── HistoryRepository.java │ │ │ │ │ ├── MessageRepository.java │ │ │ │ │ └── ReviewRepository.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Book.java │ │ │ │ │ ├── Checkout.java │ │ │ │ │ ├── History.java │ │ │ │ │ ├── Message.java │ │ │ │ │ └── Review.java │ │ │ │ ├── requestmodels/ │ │ │ │ │ ├── AddBookRequest.java │ │ │ │ │ ├── AdminQuestionRequest.java │ │ │ │ │ └── ReviewRequest.java │ │ │ │ ├── responsemodels/ │ │ │ │ │ └── ShelfCurrentLoansResponse.java │ │ │ │ ├── service/ │ │ │ │ │ ├── AdminService.java │ │ │ │ │ ├── BookService.java │ │ │ │ │ ├── MessagesService.java │ │ │ │ │ └── ReviewService.java │ │ │ │ └── utils/ │ │ │ │ └── ExtractJWT.java │ │ │ └── resources/ │ │ │ └── application.properties │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── luv2code/ │ │ └── springbootlibrary/ │ │ └── SpringBootLibraryApplicationTests.java │ ├── 03-frontend/ │ │ └── react-library/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── Auth/ │ │ │ │ ├── LoginWidget.jsx │ │ │ │ └── OktaSignInWidget.jsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── layouts/ │ │ │ │ ├── BookCheckoutPage/ │ │ │ │ │ ├── BookCheckoutPage.tsx │ │ │ │ │ ├── CheckoutAndReviewBox.tsx │ │ │ │ │ ├── LatestReviews.tsx │ │ │ │ │ └── ReviewListPage/ │ │ │ │ │ └── ReviewListPage.tsx │ │ │ │ ├── HomePage/ │ │ │ │ │ ├── HomePage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── Carousel.tsx │ │ │ │ │ ├── ExploreTopBooks.tsx │ │ │ │ │ ├── Heros.tsx │ │ │ │ │ ├── LibraryServices.tsx │ │ │ │ │ └── ReturnBook.tsx │ │ │ │ ├── ManageLibraryPage/ │ │ │ │ │ ├── ManageLibraryPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── AddNewBook.tsx │ │ │ │ │ ├── AdminMessage.tsx │ │ │ │ │ ├── AdminMessages.tsx │ │ │ │ │ ├── ChangeQuantityOfBook.tsx │ │ │ │ │ └── ChangeQuantityOfBooks.tsx │ │ │ │ ├── MessagesPage/ │ │ │ │ │ ├── MessagesPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── Messages.tsx │ │ │ │ │ └── PostNewMessage.tsx │ │ │ │ ├── NavbarAndFooter/ │ │ │ │ │ ├── Footer.tsx │ │ │ │ │ └── Navbar.tsx │ │ │ │ ├── SearchBooksPage/ │ │ │ │ │ ├── SearchBooksPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ └── SearchBook.tsx │ │ │ │ ├── ShelfPage/ │ │ │ │ │ ├── ShelfPage.tsx │ │ │ │ │ └── components/ │ │ │ │ │ ├── HistoryPage.tsx │ │ │ │ │ ├── Loans.tsx │ │ │ │ │ └── LoansModal.tsx │ │ │ │ └── Utils/ │ │ │ │ ├── LeaveAReview.tsx │ │ │ │ ├── Pagination.tsx │ │ │ │ ├── Review.tsx │ │ │ │ ├── SpinnerLoading.tsx │ │ │ │ └── StarsReview.tsx │ │ │ ├── lib/ │ │ │ │ └── oktaConfig.ts │ │ │ ├── models/ │ │ │ │ ├── AddBookRequest.ts │ │ │ │ ├── AdminMessageRequest.ts │ │ │ │ ├── BookModel.ts │ │ │ │ ├── HistoryModel.ts │ │ │ │ ├── MessageModel.ts │ │ │ │ ├── ReviewModel.ts │ │ │ │ ├── ReviewRequestModel.ts │ │ │ │ └── ShelfCurrentLoans.ts │ │ │ └── react-app-env.d.ts │ │ └── tsconfig.json │ └── static-html-css-files/ │ ├── Section 10. Home Page Static Files/ │ │ ├── Carousel.tsx │ │ ├── ExploreTopBooks.tsx │ │ ├── Footer.tsx │ │ ├── Heros.tsx │ │ ├── LibraryServices.tsx │ │ ├── Navbar.tsx │ │ └── ReturnBook.tsx │ ├── Section 13. Search Books Page Static Files/ │ │ ├── Pagination.tsx │ │ ├── SearchBook.tsx │ │ └── SearchBooksPage.tsx │ ├── Section 15. Book Checkout Static Files/ │ │ ├── BookCheckoutPage.tsx │ │ ├── CheckoutAndReviewBox.tsx │ │ └── StarsReview.tsx │ ├── Section 16. Reviews Static Files/ │ │ ├── LatestReviews.tsx │ │ └── Review.tsx │ ├── Section 23. Leave a Review Static Files/ │ │ └── LeaveAReview.tsx │ ├── Section 24. Review List Page Static Files/ │ │ └── ReviewListPage.tsx │ ├── Section 25. Shelf Page Static Files/ │ │ ├── Loans.tsx │ │ ├── LoansModal.tsx │ │ └── ShelfPage.tsx │ ├── Section 26. History Page Static Files/ │ │ └── HistoryPage.tsx │ ├── Section 27. Library Services Static Files/ │ │ ├── Messages.tsx │ │ ├── MessagesPage.tsx │ │ └── PostNewMessage.tsx │ ├── Section 28. Manage Library Services Static Files/ │ │ ├── AdminMessage.tsx │ │ ├── AdminMessages.tsx │ │ └── ManageLibraryPage.tsx │ ├── Section 29. Add new book Static Files/ │ │ └── AddNewBook.tsx │ └── Section 30. Change Quantity Static Files/ │ ├── ChangeQuantityOfBook.tsx │ └── ChangeQuantityOfBooks.tsx ├── fullstack-library-app-https/ │ ├── 02-backend/ │ │ └── spring-boot-library/ │ │ └── spring-boot-library/ │ │ ├── .gitignore │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── luv2code/ │ │ │ │ └── springbootlibrary/ │ │ │ │ ├── SpringBootLibraryApplication.java │ │ │ │ ├── config/ │ │ │ │ │ ├── MyDataRestConfig.java │ │ │ │ │ └── SecurityConfiguration.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── AdminController.java │ │ │ │ │ ├── BookController.java │ │ │ │ │ ├── MessagesController.java │ │ │ │ │ ├── PaymentController.java │ │ │ │ │ └── ReviewController.java │ │ │ │ ├── dao/ │ │ │ │ │ ├── BookRepository.java │ │ │ │ │ ├── CheckoutRepository.java │ │ │ │ │ ├── HistoryRepository.java │ │ │ │ │ ├── MessageRepository.java │ │ │ │ │ ├── PaymentRepository.java │ │ │ │ │ └── ReviewRepository.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Book.java │ │ │ │ │ ├── Checkout.java │ │ │ │ │ ├── History.java │ │ │ │ │ ├── Message.java │ │ │ │ │ ├── Payment.java │ │ │ │ │ └── Review.java │ │ │ │ ├── requestmodels/ │ │ │ │ │ ├── AddBookRequest.java │ │ │ │ │ ├── AdminQuestionRequest.java │ │ │ │ │ ├── PaymentInfoRequest.java │ │ │ │ │ └── ReviewRequest.java │ │ │ │ ├── responsemodels/ │ │ │ │ │ └── ShelfCurrentLoansResponse.java │ │ │ │ ├── service/ │ │ │ │ │ ├── AdminService.java │ │ │ │ │ ├── BookService.java │ │ │ │ │ ├── MessagesService.java │ │ │ │ │ ├── PaymentService.java │ │ │ │ │ └── ReviewService.java │ │ │ │ └── utils/ │ │ │ │ └── ExtractJWT.java │ │ │ └── resources/ │ │ │ ├── application.properties │ │ │ └── luv2code-keystore.p12 │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── luv2code/ │ │ └── springbootlibrary/ │ │ └── SpringBootLibraryApplicationTests.java │ └── 03-frontend/ │ └── react-library/ │ ├── .gitignore │ ├── README.md │ ├── localhost.conf │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── Auth/ │ │ │ ├── LoginWidget.jsx │ │ │ └── OktaSignInWidget.jsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── layouts/ │ │ │ ├── BookCheckoutPage/ │ │ │ │ ├── BookCheckoutPage.tsx │ │ │ │ ├── CheckoutAndReviewBox.tsx │ │ │ │ ├── LatestReviews.tsx │ │ │ │ └── ReviewListPage/ │ │ │ │ └── ReviewListPage.tsx │ │ │ ├── HomePage/ │ │ │ │ ├── HomePage.tsx │ │ │ │ └── components/ │ │ │ │ ├── Carousel.tsx │ │ │ │ ├── ExploreTopBooks.tsx │ │ │ │ ├── Heros.tsx │ │ │ │ ├── LibraryServices.tsx │ │ │ │ └── ReturnBook.tsx │ │ │ ├── ManageLibraryPage/ │ │ │ │ ├── ManageLibraryPage.tsx │ │ │ │ └── components/ │ │ │ │ ├── AddNewBook.tsx │ │ │ │ ├── AdminMessage.tsx │ │ │ │ ├── AdminMessages.tsx │ │ │ │ ├── ChangeQuantityOfBook.tsx │ │ │ │ └── ChangeQuantityOfBooks.tsx │ │ │ ├── MessagesPage/ │ │ │ │ ├── MessagesPage.tsx │ │ │ │ └── components/ │ │ │ │ ├── Messages.tsx │ │ │ │ └── PostNewMessage.tsx │ │ │ ├── NavbarAndFooter/ │ │ │ │ ├── Footer.tsx │ │ │ │ └── Navbar.tsx │ │ │ ├── PaymentPage/ │ │ │ │ └── PaymentPage.tsx │ │ │ ├── SearchBooksPage/ │ │ │ │ ├── SearchBooksPage.tsx │ │ │ │ └── components/ │ │ │ │ └── SearchBook.tsx │ │ │ ├── ShelfPage/ │ │ │ │ ├── ShelfPage.tsx │ │ │ │ └── components/ │ │ │ │ ├── HistoryPage.tsx │ │ │ │ ├── Loans.tsx │ │ │ │ └── LoansModal.tsx │ │ │ └── Utils/ │ │ │ ├── LeaveAReview.tsx │ │ │ ├── Pagination.tsx │ │ │ ├── Review.tsx │ │ │ ├── SpinnerLoading.tsx │ │ │ └── StarsReview.tsx │ │ ├── lib/ │ │ │ └── oktaConfig.ts │ │ ├── models/ │ │ │ ├── AddBookRequest.ts │ │ │ ├── AdminMessageRequest.ts │ │ │ ├── BookModel.ts │ │ │ ├── HistoryModel.ts │ │ │ ├── MessageModel.ts │ │ │ ├── PaymentInfoRequest.ts │ │ │ ├── ReviewModel.ts │ │ │ ├── ReviewRequestModel.ts │ │ │ └── ShelfCurrentLoans.ts │ │ └── react-app-env.d.ts │ ├── ssl-localhost/ │ │ ├── localhost.crt │ │ └── localhost.key │ └── tsconfig.json ├── react-overview-todo-project/ │ ├── ReactJS/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ └── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── components/ │ │ │ ├── NewTodoForm.js │ │ │ ├── TodoRowItem.js │ │ │ └── TodoTable.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── ReactTS/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── NewTodoForm.tsx │ │ │ ├── TodoRowItem.tsx │ │ │ └── TodoTable.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ └── models/ │ │ └── TodoModel.ts │ └── tsconfig.json └── typescript-training/ ├── 01-helloworld/ │ └── myhelloworld.ts ├── 02-variables/ │ └── sample-types.ts ├── 03-loops-and-arrays/ │ ├── growable-arrays.ts │ ├── loops.ts │ ├── reviews.ts │ └── sports.ts ├── 04-classes/ │ ├── 01-class-definition/ │ │ └── Customer.ts │ ├── 02-access-modifiers/ │ │ └── Customer.ts │ ├── 03-tsconfig/ │ │ ├── Customer.ts │ │ └── tsconfig.json │ ├── 04-parameter-properties/ │ │ ├── Customer.ts │ │ └── tsconfig.json │ └── 05-modules/ │ ├── Customer.ts │ ├── Driver.ts │ └── tsconfig.json ├── 05-inheritance/ │ ├── ArrayDriver.ts │ ├── Circle.ts │ ├── Driver.ts │ ├── Rectangle.ts │ ├── Shape.ts │ └── tsconfig.json ├── 06-abstract-classes/ │ ├── ArrayDriver.ts │ ├── Circle.ts │ ├── Rectangle.ts │ ├── Shape.ts │ └── tsconfig.json └── 07-interfaces/ ├── Coach.ts ├── CricketCoach.ts ├── Driver.ts ├── GolfCoach.ts └── tsconfig.json