The basic framework for web applications in CMPSC 156 from F20 forward is a particular way of combining:
- A Spring Boot backend
- A React frontend
The code bases that serve as the base for legacy code apps in CMPSC 156 provide many affordances, and examples:
- Users can login with Google OAuth
- Roles can be defined including generic roles such as User, Admin, and custom roles such as Driver and Rider
- Data can be stored in either SQL based Postgres relational database tables, or MongoDB no-SQL collections
- There are many examples of frontend forms and tables for CRUD operations
- Asynchronous batch processing (background jobs) can be performed on demand or on a fixed schedule (with cron syntax)
- There is support for Swagger for documenting and testing Restful API endpoints (so that backend endpoints can be tested independently of the frontend)
- There is a CI/CD pipeline for Storybook for documenting React components (so that they can be tested independently of the backend)
- There is a CI/CD pipeline for unit testing (with code coverage and mutation test coverage) of both frontend Javascript and backend Java code in all pull requests and for the main branch
- There is a CI/CD pipeline for publishing Javadoc to document all classes and methods for backend Java code for the main branch, and each pull request
- Linting of Javascript code is integrated into the CI/CD pipeline via eslint
The pages below describe this architecture in more detail.
Table of contents
- Spring/React: Basic CRUD operations
- Spring/React: Directory Structure
- Spring/React: Future Work
- Spring/React: Github Actions
- Spring/React: Migrating to Spring 3
- Spring/React: Practices
- Spring/React: Testing Pyramid
- Spring/React: package-lock.json Merge Conflicts