Integrate single page application with Spring Boot (SBA301)
Vietnamese title: Tích hợp ứng dụng trang đơn với Spring Boot
Credits: 6
Prerequisites: HSF302

Description:
Upon completion of this course students shoud:
1. Understand the followings:
• ReactJS concepts for building Front-End application
• RESTful API concepts
• RESTful API using Spring Boot's built-in features and frameworks
• Security features (authentication and authorization) with RESTful API
• Handling HTTP requests and responses using Spring Boot's framework
• Error handling and exception management in Spring Boot RESTful APIs
2. Be able to:
• Build RESTful APIs using Spring Boot's built-in features and frameworks
• Implement security features with authentication and authorization
• Handle HTTP requests and responses using Spring Boot's framework
• Build Front-End application using ReactJS components
• Integrate Spring Boot with other technologies and frameworks SQL Server, MongoDB, and ReactJS
3. Be able to work in team and present group's results

Learning outcomes:
Understand of the ReactJS library, services, and dependency injection.
Apply fetch and catching data in Client-Server Communication
Describe RESTful APIs using Spring Boot's built-in features and frameworks
Describe the connecting RESTful Web Service with JPA
Apply security features such as authentication and authorization
Create application with Hibernate and Spring Framework.
Apply Spring Data with MongoDB to build an application.
Develop teamwork skills, communication skills (including presentation skills)

Student tasks:
- Students must attend at least 80% of contact sessions in order to be accepted to the final examination.
- Student is responsible to do all assigned exercises given by instructor in class or at home and submit on time
- Use laptop in class only for learning purpose
- Promptly access to the FU CMS at http://flm.fpt.edu.vn for up-to-date course information

Tools:
- Internet
- IntelliJ IDEA
- JDK 21
- Platform: SpringBoot 3, Node 21

Materials:
description: Spring REST
publisher: Spring Academy
note: https://docs.spring.io/spring-restdocs/docs/current/reference/htmlsingle/ https://spring.io/guides/tutorials/rest/ https://spring.io/guides/gs/rest-service/
description: React
note: https://react.dev/reference/react-dom/components https://react.dev/reference/react/components
description: Master Java Web Services and REST API with Spring Boot
publisher: Udemy
note: https://www.udemy.com/course/spring-web-services-tutorial/
description: React - The Complete Guide 2023
publisher: Udemy
note: https://www.udemy.com/course/react-the-complete-guide-incl-redux/
description: Spring REST: Building Java Microservices and Cloud Applications
publisher: Apress
published_date: 2022
edition: 2nd Edition
isbn: 978-1484274767
description: Beginning Spring Data: Data Access and Persistence for Spring Framework 6
and Boot 3
publisher: Apress
published_date: 2022
edition: 1st Edition
isbn: 978-1484287637

Assessments:
category: Assignment
type: on-going
weight: 10.0
duration: 30 slots
question_type: CLO1, CLO2, CLO3, CLO4, CLO5
grading_guide: Subjects in syllabus
category: Group Project
type: on-going
weight: 25.0
duration: 38 slots
question_type: All CLOs
grading_guide: Subjects in syllabus
category: Progress test
type: on-going
weight: 10.0
duration: 40'
question_type: CLO1, CLO2, CLO3, CLO4, CLO5
no_question: Multiple choices
Marked by Computer or a suitable format
knowledge_and_skill: 30/each
grading_guide: Subjects in syllabus
category: Final exam
type: Final exam
weight: 55.0
duration: 145 minutes
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7,CLO8
grading_guide: All subjects in syllabus
note: By exam board
Manual evaluating
category: Practical Exam
type: Final exam
weight: 25.0
duration: 85'
question_type: CLO2, CLO3, CLO4, CLO5
grading_guide: Subjects in syllabus
note: By exam board
Manual evaluating
category: Theory Exam
type: Final exam
weight: 30.0
duration: 60'
question_type: CLO1, CLO2, CLO3, CLO4, CLO5, CLO6, CLO7
knowledge_and_skill: 50
grading_guide: All subjects in syllabus
note: By exam board

Schedule:
session: Course Introduction
learning_outcomes: IT
materials: SBA301
session: Working Environment (JDK, Spring Boot, SQL Server, MongoDB, ReactJS)
session: Group Project Introduction
session: Chapter 01. Introduction to ReactJS
learning_outcomes: ITU
session: Chapter 01. Introduction to ReactJS (contd.)
learning_outcomes: TU
session: Chapter 01. Introduction to ReactJS (contd.)
learning_outcomes: TU
session: Chapter 02. React Component
learning_outcomes: ITU
session: Chapter 02. React Component (contd.)
learning_outcomes: TU
session: Chapter 02. React Component (contd.)
learning_outcomes: TU
session: Chapter 03. Introduction to React-Bootstrap
learning_outcomes: TU
session: Chapter 03. Introduction to React-Bootstrap (contd.)
learning_outcomes: TU
session: Chapter 03. Introduction to React-Bootstrap (contd.)
learning_outcomes: TU
session: Chapter 04. Props, State and Context
learning_outcomes: TU
session: Chapter 04. Props, State and Context (contd.)
learning_outcomes: TU
session: Chapter 05. React Hook
learning_outcomes: TU
session: Chapter 05. React Hook (contd.)
learning_outcomes: TU
session: Lab 01. Working with ReactJS application
session: Lab 01. Working with ReactJS application (contd.)
session: Chapter 06. Handling Navigation with Routes
learning_outcomes: ITU
session: Chapter 06. Handling Navigation with Routes (contd.)
learning_outcomes: TU
session: Chapter 07. Client-Server Communication
learning_outcomes: TU
session: Chapter 07. Client-Server Communication (contd.)
learning_outcomes: TU
session: Chapter 07. Client-Server Communication (contd.)
learning_outcomes: TU
session: Chapter 08. Fetching and Caching Data
learning_outcomes: TU
session: Chapter 08. Fetching and Caching Data (contd.)
learning_outcomes: TU
session: Chapter 08. Fetching and Caching Data (contd.)
learning_outcomes: TU
session: Chapter 09. React Router and Single Page Application (SPA)
learning_outcomes: TU
session: Chapter 09. React Router and Single Page Application (SPA) (contd.)
learning_outcomes: TU
session: Chapter 09. React Router and Single Page Application (SPA) (contd.)
learning_outcomes: TU
session: Lab 02. Create Single Page Application with ReactJS
session: Lab 02. Create Single Page Application with ReactJS (contd.)
session: Assignment 01 Guide - Create Single Page Application with ReactJS
session: Project Assistant - 01
learning_outcomes: TU
session: Progress Test 01
learning_outcomes: TU
session: Chapter 10. RESTful Web Services with Spring Boot
learning_outcomes: ITU
session: Chapter 10. RESTful Web Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 10. RESTful Web Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 10. RESTful Web Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 10. RESTful Web Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 11. Documenting REST Services
learning_outcomes: ITU
session: Chapter 11. Documenting REST Services (contd.)
learning_outcomes: ITU
session: Chapter 11. Documenting REST Services (contd.)
learning_outcomes: ITU
session: Chapter 12. Versioning, Paging, Sorting and Testing
learning_outcomes: ITU
session: Chapter 12. Versioning, Paging, Sorting and Testing (contd.)
learning_outcomes: ITU
session: Lab 03. RESTful Web Services with Spring Boot
learning_outcomes: TU
session: Lab 03. RESTful Web Services with Spring Boot (contd.)
learning_outcomes: TU
session: Project Assistant - 02
learning_outcomes: TU
session: Chapter 13. Connecting RESTful Web Service to JPA
learning_outcomes: ITU
session: Chapter 13. Connecting RESTful Web Service to JPA (contd.)
learning_outcomes: TU
session: Chapter 13. Connecting RESTful Web Service to JPA (contd.)
learning_outcomes: TU
session: Chapter 13. Connecting RESTful Web Service to JPA (contd.)
learning_outcomes: TU
session: Chapter 13. Connecting RESTful Web Service to JPA (contd.)
learning_outcomes: TU
session: Chapter 13. Connecting RESTful Web Service to JPA (contd.)
learning_outcomes: TU
session: Lab 04. Spring Boot RESTful Web Service and JPA
learning_outcomes: TU
session: Lab 04. Spring Boot RESTful Web Service and JPA (contd.)
learning_outcomes: TU
session: Progress Test 02
learning_outcomes: TU
session: Project Assistant 03
learning_outcomes: TU
session: Chapter 14. Create Single Page Application
learning_outcomes: TU
session: Chapter 14. Create Single Page Application (contd.)
learning_outcomes: TU
session: Chapter 14. Create Single Page Application (contd.)
learning_outcomes: TU
session: Chapter 14. Create Single Page Application (contd.)
learning_outcomes: TU
session: Chapter 14. Create Single Page Application (contd.)
learning_outcomes: TU
session: Lab 05. Create Single Page Application with Spring Boot RESTful API
learning_outcomes: TU
session: Lab 05. Create Single Page Application with Spring Boot RESTful API (contd.)
learning_outcomes: TU
session: Chapter 15. Implement CRUD Application with RESTful Web Service and ReactJS
learning_outcomes: TU
session: Chapter 15. Implement CRUD Application with RESTful Web Service and ReactJS (contd.)
learning_outcomes: TU
session: Chapter 15. Implement CRUD Application with RESTful Web Service and ReactJS (contd.)
learning_outcomes: TU
session: Chapter 15. Implement CRUD Application with RESTful Web Service and ReactJS (contd.)
learning_outcomes: TU
session: Chapter 15. Implement CRUD Application with RESTful Web Service and ReactJS (contd.)
learning_outcomes: TU
session: Chapter 15. Implement CRUD Application with RESTful Web Service and ReactJS (contd.)
learning_outcomes: TU
session: Assignment 02 Guide
session: Chapter 16. Securing REST Services with Spring Boot
learning_outcomes: ITU
session: Chapter 16. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 16. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 16. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 16. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 16. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Chapter 16. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Lab 06. Securing REST Services with Spring Boot
learning_outcomes: TU
session: Lab 06. Securing REST Services with Spring Boot (contd.)
learning_outcomes: TU
session: Assignment 03 Guide
learning_outcomes: TU
session: Chapter 17: Hibernate Architecture, Configuration, Mapping
learning_outcomes: TU
session: Chapter 17: Hibernate Architecture, Configuration, Mapping (contd.)
learning_outcomes: TU
session: Chapter 17: Hibernate Architecture, Configuration, Mapping (contd.)
learning_outcomes: TU
session: Chapter 17: Hibernate Architecture, Configuration, Mapping (contd.)
learning_outcomes: TU
session: Chapter 17: Hibernate Architecture, Configuration, Mapping (contd.)
learning_outcomes: TU
session: Chapter 18: Hibernate Application Development & CRUD Operations
learning_outcomes: TU
session: Chapter 18: Hibernate Application Development & CRUD Operations (contd.)
learning_outcomes: TU
session: Chapter 18: Hibernate Application Development & CRUD Operations (contd.)
learning_outcomes: TU
session: Chapter 18: Hibernate Application Development & CRUD Operations (contd.)
learning_outcomes: TU
session: Chapter 18: Hibernate Application Development & CRUD Operations (contd.)
learning_outcomes: TU
session: Chapter 18: Hibernate Application Development & CRUD Operations (contd.)
learning_outcomes: TU
session: Lab 7 - Hibernate Application Development & CRUD Operations
learning_outcomes: TU
session: Lab 7 - Hibernate Application Development & CRUD Operations (contd.)
learning_outcomes: TU
session: Progress Test 03
Assignment 03
learning_outcomes: TU
session: Project Assistant - 04
learning_outcomes: TU
session: Chapter 19. Data Management with MongoDB
learning_outcomes: TU
session: Chapter 19. Data Management with MongoDB (contd.)
learning_outcomes: TU
session: Chapter 19. Data Management with MongoDB (contd.)
learning_outcomes: TU
session: Chapter 20. Spring Data with MongoDB
learning_outcomes: TU
session: Chapter 20. Spring Data with MongoDB (contd.)
learning_outcomes: TU
session: Chapter 20. Spring Data with MongoDB (contd.)
learning_outcomes: TU
session: Chapter 21. Build Application with Spring Boot and Spring Data (NoSQL)
learning_outcomes: TU
session: Chapter 21. Build Application with Spring Boot and Spring Data (NoSQL) (contd.)
learning_outcomes: TU
session: Chapter 21. Build Application with Spring Boot and Spring Data (NoSQL) (contd.)
learning_outcomes: TU
session: Lab 08 - Build Application with Spring Boot and Spring Data (NoSQL)
learning_outcomes: TU
session: Lab 08 - Build Application with Spring Boot and Spring Data (NoSQL) (contd.)
learning_outcomes: TU
session: Project Assistant 05
learning_outcomes: TU
session: Chapter 22. Spring Boot - DevOps Tools
learning_outcomes: IT
session: Chapter 22. Spring Boot - DevOps Tools (contd.)
learning_outcomes: TU
session: Chapter 22. Spring Boot - DevOps Tools (contd.)
learning_outcomes: TU
session: Chapter 22. Spring Boot - DevOps Tools (contd.)
learning_outcomes: TU
session: Chapter 22. Spring Boot - DevOps Tools (contd.)
learning_outcomes: TU
session: Chapter 22. Spring Boot - DevOps Tools (contd.)
learning_outcomes: TU
session: Project Evaluation
learning_outcomes: TU
session: Project Evaluation (contd.)
learning_outcomes: TU
session: Project Evaluation (contd.)
learning_outcomes: TU
session: Project Evaluation (contd.)
learning_outcomes: TU
session: Project Evaluation (contd.)
learning_outcomes: TU
session: Project Evaluation (contd.)
learning_outcomes: TU