diff --git a/.github/workflows/gradle-build-feature.yml b/.github/workflows/gradle-build-feature.yml
index 127ca38dc9..bdcb909e9b 100644
--- a/.github/workflows/gradle-build-feature.yml
+++ b/.github/workflows/gradle-build-feature.yml
@@ -8,6 +8,8 @@ on:
- 'doc-**/*'
- 'hotfix-**/*'
- 'dependabot/**/*'
+env:
+ HUSKY: 0
jobs:
build:
runs-on: ubuntu-latest
diff --git a/.github/workflows/gradle-build-native-feature.yml b/.github/workflows/gradle-build-native-feature.yml
index 8f074129cb..464acf6882 100644
--- a/.github/workflows/gradle-build-native-feature.yml
+++ b/.github/workflows/gradle-build-native-feature.yml
@@ -8,6 +8,8 @@ on:
- 'doc-**/*'
- 'hotfix-**/*'
- 'dependabot/**/*'
+env:
+ HUSKY: 0
jobs:
build:
runs-on: ubuntu-latest
diff --git a/.github/workflows/gradle-build-production.yml b/.github/workflows/gradle-build-production.yml
index e69a0babcb..096478d4bc 100644
--- a/.github/workflows/gradle-build-production.yml
+++ b/.github/workflows/gradle-build-production.yml
@@ -4,6 +4,7 @@ on:
branches:
- "master"
env:
+ HUSKY: 0
PROJECT_ID: ${{ secrets.RUN_PROJECT }}
RUN_REGION: us-central1
SERVICE_NAME: checkins-master
diff --git a/.github/workflows/gradle-build-publish.yml b/.github/workflows/gradle-build-publish.yml
index 9e8fed23d5..0f7cec56ef 100644
--- a/.github/workflows/gradle-build-publish.yml
+++ b/.github/workflows/gradle-build-publish.yml
@@ -2,6 +2,8 @@ name: Gradle Publish to GitHub Packages
on:
release:
types: [created]
+env:
+ HUSKY: 0
jobs:
build:
runs-on: ubuntu-latest
diff --git a/.github/workflows/gradle-dependency-submission.yml b/.github/workflows/gradle-dependency-submission.yml
index 3aa1f9b734..959013aeaf 100644
--- a/.github/workflows/gradle-dependency-submission.yml
+++ b/.github/workflows/gradle-dependency-submission.yml
@@ -3,7 +3,8 @@ name: Gradle Dependency Submission
on:
push:
branches: [ 'develop', 'master', 'feature-2532/graal' ]
-
+env:
+ HUSKY: 0
permissions:
contents: write
diff --git a/.github/workflows/gradle-deploy-develop.yml b/.github/workflows/gradle-deploy-develop.yml
index a30f87d573..2d8679e81b 100644
--- a/.github/workflows/gradle-deploy-develop.yml
+++ b/.github/workflows/gradle-deploy-develop.yml
@@ -4,6 +4,7 @@ on:
branches:
- 'develop'
env:
+ HUSKY: 0
PROJECT_ID: ${{ secrets.RUN_PROJECT }}
RUN_REGION: us-central1
SERVICE_NAME: checkins-develop
diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml
index 98105aaa74..5ef9eee305 100644
--- a/.github/workflows/gradle-deploy-native-develop.yml
+++ b/.github/workflows/gradle-deploy-native-develop.yml
@@ -4,6 +4,7 @@ on:
branches:
- 'develop'
env:
+ HUSKY: 0
PROJECT_ID: ${{ secrets.RUN_PROJECT }}
RUN_REGION: us-central1
SERVICE_NAME: checkins-develop-native
diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml
index 300f52c479..a78e80609b 100644
--- a/.github/workflows/jekyll.yml
+++ b/.github/workflows/jekyll.yml
@@ -10,6 +10,8 @@ on:
# Runs on pushes targeting the default branch
push:
branches: [develop]
+env:
+ HUSKY: 0
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
diff --git a/README.md b/README.md
index 0bf3e4b6db..7f85950d10 100644
--- a/README.md
+++ b/README.md
@@ -1,38 +1,77 @@
-[](https://github.com/objectcomputing/check-ins/actions/workflows/gradle-build-develop.yml)
+# Check-Ins
+
+Check-Ins is a team engagement platform with [many HRIS and engagement capabilities](#features) built on
+[Micronaut](https://micronaut.io/) and [React](https://react.dev/) and available for deployment on premises or on
+[Google Cloud Platform](https://cloud.google.com/).
+
+[](https://github.com/objectcomputing/check-ins/actions/workflows/gradle-deploy-develop.yml)
[](CODE_OF_CONDUCT.md)
+[](https://opensource.org/licenses/Apache-2.0)
+## Table of Contents
-- [Check-ins](#check-ins)
-- [Project Links](#project-links)
-- [Setup](#setup)
- - [directory.json](#directoryjson)
- - [credentials.json](#credentialsjson)
- - [Running the application](#running-the-application)
+- [About](#about)
+- [Features](#features)
+- [Documentation](#documentation)
+- [Getting Started](#getting-started)
+ - [Environment Setup](#environment-setup)
+ - [Running the Application](#running-the-application)
+ - [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
-
+- [License](#license)
+- [Contact](#contact)
-# Check-ins
+## About
+
+Check-Ins is a comprehensive web application designed to streamline team management and personal development. It offers
+tools for understanding team members and their capabilities, facilitating growth and engagement, and managing many of
+the processes that can get dropped or weigh down an organization. Built with Micronaut, Check-Ins is designed for
+efficient cost of operation and ease of use. Many of the workflows were originally designed and built by former interns
+at [Object Computing](https://objectcomputing.com), and we use it actively there today.
+
+## Features
-This web application is written in [Micronaut](https://micronaut.io) for uploading files and tracking skill set of team members. This application will also be used for PDL checkins and to auto-generate resumes from the skill set.
+- **User/Employee Management** - Simple onboarding and offboarding of new users, with Google SSO integration
+- **Employee Profiles** - Team members can manage their own profiles, including skills, certifications, and organizations they support
+- **Mentor Program Management** - A key feature of the Check-Ins application is the support and management of employee touch points with a dedicated mentor
+- **Pulse Surveys** - Find out how your team is feeling about work, or life in general
+- **Feedback Management** - Give your employees access to feedback so that they can grow their skills and contribute up to their potential
+- **Employee, Team, and Community Directories** - These provide an easy way to see who is involved with what
+- **Performance Reviews and Reporting** - Evaluate your team's performance as frequently as you would like
+- **Public Kudos** - Celebrate those wins publicly! Our Kudos feature can post your team's wins to Slack and celebrate them within the application.
+- **Birthday and Anniversary Celebrations** - Encourage the celebration of your team's milestones
+- **Skill and Certification Tracking and Reporting** - Know where your team is strong, where it needs to develop, and plan for growth
+- **Volunteer Time Tracking and Reporting** - Encourage a culture of giving back to your community by recognizing the good work already being done by your team
-# Project Links
+## Documentation
-**Project Document:** \*TBA\*
+Detailed documentation, including installation guides, usage instructions, and API references, can be found on our [GitHub Pages site](https://objectcomputing.github.io/check-ins/).
-**Project Board:** [Board](https://github.com/objectcomputing/check-ins/projects)
+## Getting Started
-**Environments:** \*TBA\*
+### Environment setup
-# Environment setup
+See [our GitHub pages site](https://objectcomputing.github.io/check-ins/getting-started/setup/) for instructions on setting up your development environment.
-See [Setting up your environment](https://objectcomputing.github.io/check-ins/getting-started/setup/) for instructions on setting up your development environment.
+### Running the application
-## Running the application
+See [our GitHub pages site](https://objectcomputing.github.io/check-ins/getting-started/running/) for instructions on running the application locally.
-See [Running the Application](https://objectcomputing.github.io/check-ins/getting-started/running/) for instructions on running the application locally.
+### Troubleshooting
-# Contributing
+See [our GitHub pages site](https://objectcomputing.github.io/check-ins/getting-started/troubleshooting/) for common challenges and their solutions.
+
+## Contributing
Please see [Contributing](./CONTRIBUTING.md) for details on how to contribute to this project.
+
+## License
+
+This project is licensed under the [Apache 2.0 License and Commons Clause](LICENSE).
+
+## Contact
+
+For questions or issues, please [join the discussion](https://github.com/objectcomputing/check-ins/discussions) or
+[open an issue](https://github.com/objectcomputing/check-ins/issues) on GitHub.
diff --git a/docs/project-roadmap/index.md b/docs/project-roadmap/index.md
index 7c590d08fe..626b268ac6 100644
--- a/docs/project-roadmap/index.md
+++ b/docs/project-roadmap/index.md
@@ -6,70 +6,64 @@ title: Project Roadmap
***This roadmap is subject to change and should not be construed as a commitment to build these features.***
-This roadmap prioritizes features focused on enhancing the team member review process, integrating the shelved onboarding process, and incorporating generative AI for mentor support.
+This roadmap prioritizes features focused on enhancing team member and mentor support, white labeling the application,
+and preparing it for deployment into multiple environment types.
-## Streamlined and Repeatable Reviews (0.8.0)
+## Release Clean Up (v0.8.x)
-1. **Review Planning & Validation:**
- * Implement a dedicated review planning phase.
- * Automatically assign reviewers and validate assignments with managers.
- * Enable multi-layered team review structures:
- * Managers review planned assignments for subordinate managers.
- * Subordinate managers incorporate suggestions before final approval.
- * Integrate timeline creation and review launch functionalities for administrators.
-2. **Review Implementation:**
- * Streamline self-reviews and manager reviews.
- * Introduce automated reminders to both managers and team members.
- * Provide automated status overview emails to administrators.
- * Provide relevant contextual information during reviews, including:
- * Current title and job description
- * Skills listed in user profiles
- * Feedback received previously
-3. **Reporting:**
- * Develop review process reports detailing completion rates (breakdowns by department, etc.).
- * Create manager reports that detail individual and aggregate review outcomes.
+- [x] Documentation Updates
+- [x] Other Dependency Upgrades and Security Alert Remediation
+- [ ] Bug Smooshing and Tech Debt Remediation
-### Success Metrics:
+## Configuration UI and Infrastructure Codification (v0.9.0)
-* Increased on-time completion rates for employee reviews
-* Increased on-time review period start rates
-* Improved user satisfaction with the review process
+1. **Introduce Infrastructure as Code**
+ - Create Terraform code for
+ - [ ] Local Deployment
+ - [ ] GCP Deployment
+ - [ ] AWS Deployment (stretch-goal)
+ - [ ] Migrate to cloud-based secret management
+2. **Configuration Management UI**
+ - [ ] Implement feature switches
+ - [ ] Move most configuration into the UI and store in the database
-## Onboarding and Modernization (0.9.0)
+### Goals (v0.9.0)
-1. **Modularize Deployment:**
- * Upgrade to Micronaut 4.x.
- * Introduce infrastructure as code.
- * Codify GCP environments with Terraform.
- * Migrate to cloud-based secret management.
- * Segment service deployments.
-2. **Revive Onboarding Application:**
- * Rebase and refresh the onboarding application.
-3. **Configuration Management UI:**
- * Integrate configuration into the UI to allow for dynamic configuration.
+* Simple and repeatable local environment setup
+* Simple and repeatable cloud environment setup
+* Increased application flexibility
+* Ability to right-size features for different organizations
-### Success Metrics:
+## Professional Development Support (v0.10.0)
-* Increased completion of onboarding tasks before the new employees’ start dates
-* Increased user satisfaction with the onboarding process
-* Increased application flexibility
+1. **Role Library & Assignment**
+ - [ ] Add the ability to create and maintain job roles
+ - [ ] Create a versioning mechanism for roles in order to provide "moment in time" information
+ - [ ] Add the ability to assign and track roles over time
+2. **Generative AI Integration**
+ - [ ] Develop GenAI integration module
+ - [ ] Construct prompts and workflows that analyze notes, feedback, job descriptions, and skills data to provide summarized and actionable growth and performance insights
+ - **Construct prompts and workflows to provide personalized suggestions for mentors**
+ - [ ] Recommend development goals based on mentee information
+ - [ ] Suggest relevant learning resources or training opportunities
+ - [ ] Generate actionable development suggestions for increasing desired capabilities
+ - [ ] Incorporate generated suggestions into the check-in planning process
+3. **Career Timeline**
+ - **Create a timeline component to show important events in an employee's journey, including:**
+ - [ ] Role changes
+ - [ ] Title changes
+ - [ ] Joining/leaving a team
+ - [ ] Getting awarded a certification
+ - [ ] Joining/leaving a guild or community
+ - [ ] Completing a training event (stretch goal)
-## Professional Development Support (0.10.0)
+### Goals (v0.10.0)
-1. **Job Library & Assignment:**
- * Build a comprehensive job library within the platform.
- * Enable defining and assigning specific job roles.
-2. **Generative AI Integration:**
- * Develop Google Gemini integration module.
- * Construct prompts that analyze notes, feedback, job descriptions, and skills
- data.
- * Construct prompts to provide personalized suggestions for mentors:
- * Recommend development goals based on mentee information.
- * Suggest relevant learning resources or training opportunities.
- * Generate actionable development suggestions for increasing desired capabilities.
- * Incorporation of generated suggestions into the check-in planning process.
+* Higher engagement with the Check-Ins planning workflows
+* Improved employee development and career planning outcomes
+* Provide a view of an employee's career and development journey
-### Success Metrics:
+## Some day...
-* Higher engagement with the Check-Ins workflows
-* Enhanced employee development and career planning outcomes
+1. **Revive Onboarding Application:**
+ * Reintroduce and refresh the onboarding application
\ No newline at end of file
diff --git a/server/build.gradle b/server/build.gradle
index b98fc730da..5da3a6765d 100755
--- a/server/build.gradle
+++ b/server/build.gradle
@@ -2,12 +2,12 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
plugins {
id 'maven-publish'
- id("com.gradleup.shadow") version "8.3.2"
- id("io.micronaut.application") version "4.4.3"
+ id("com.gradleup.shadow") version "8.3.6"
+ id("io.micronaut.application") version "4.5.0"
id "jacoco"
}
-version "0.8.16"
+version "0.8.17"
group "com.objectcomputing.checkins"
repositories {
diff --git a/server/gradle.properties b/server/gradle.properties
index 96a4e8b1d0..87a21df3dd 100644
--- a/server/gradle.properties
+++ b/server/gradle.properties
@@ -1,2 +1,2 @@
-micronautVersion=4.6.3
+micronautVersion=4.7.6
seleniumVersion=4.24.0
diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml
index 23ea93a927..f6ba1a2099 100755
--- a/server/src/main/resources/application.yml
+++ b/server/src/main/resources/application.yml
@@ -37,7 +37,7 @@ micronaut:
security:
enabled: true
- authentication: cookie
+ authentication: idtoken
token:
jwt:
enabled: true
diff --git a/web-ui/.husky/pre-push b/web-ui/.husky/pre-push
new file mode 100755
index 0000000000..a64ea70f31
--- /dev/null
+++ b/web-ui/.husky/pre-push
@@ -0,0 +1 @@
+./gradlew check
diff --git a/web-ui/package.json b/web-ui/package.json
index 9478e75642..d0e92cb0ea 100644
--- a/web-ui/package.json
+++ b/web-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "web-ui",
- "version": "0.8.16",
+ "version": "0.8.17",
"private": true,
"type": "module",
"dependencies": {
@@ -13,12 +13,12 @@
"@fortawesome/free-regular-svg-icons": "^6.0.0",
"@fortawesome/free-solid-svg-icons": "^6.0.0",
"@fortawesome/react-fontawesome": "^0.1.17",
- "@mui/icons-material": "^5.15.14",
- "@mui/lab": "^5.0.0-alpha.169",
- "@mui/material": "^5.15.14",
- "@mui/styled-engine-sc": "^6.0.0-alpha.18",
- "@mui/styles": "^5.15.14",
- "@mui/x-date-pickers": "^7.3.1",
+ "@mui/icons-material": "^6.4.7",
+ "@mui/lab": "^6.0.0-beta.30",
+ "@mui/material": "^6.4.7",
+ "@mui/styled-engine-sc": "^6.4.6",
+ "@mui/styles": "^6.4.7",
+ "@mui/x-date-pickers": "^7.27.3",
"@tinymce/tinymce-react": "^5.0.0",
"axios": "^1.8.2",
"canvas-confetti": "^1.6.0",
@@ -31,20 +31,18 @@
"js-cookie": "^3.0.5",
"js-file-download": "^0.4.12",
"lodash": "^4.17.21",
- "markdown-builder": "^0.9.0",
"mjml": "^5.0.0-alpha.4",
"mjml-browser": "^5.0.0-alpha.4",
"qs": "^6.13.0",
"query-string": "^7.0.1",
"raf": "^3.4.1",
- "react": "^18.2.0",
+ "react": "^18.3.1",
"react-beautiful-dnd": "^13.1.0",
- "react-dom": "^18.2.0",
+ "react-dom": "^18.3.1",
"react-error-boundary": "^3.1.3",
"react-jss": "^10.4.0",
"react-modal": "^3.14.3",
"react-router-dom": "^5.3.0",
- "react-swipeable-views": "^0.14.0",
"recharts": "^2.12.4",
"reselect": "^4.0.0",
"styled-components": "^6.1.8"
@@ -59,7 +57,8 @@
"serve": "vite preview",
"start": "vite",
"test": "vitest",
- "update-test": "vitest -u"
+ "update-test": "vitest -u",
+ "prepare": "cd .. && husky web-ui/.husky"
},
"eslintConfig": {
"extends": "react-app"
@@ -77,31 +76,30 @@
]
},
"devDependencies": {
- "@ladle/react": "^4.1.2",
- "@testing-library/jest-dom": "^6.4.5",
- "@testing-library/react": "^14.2.2",
- "@testing-library/react-hooks": "^8.0.1",
- "@testing-library/user-event": "^14.5.2",
- "@types/react-router-dom": "^5.3.0",
- "@vitejs/plugin-react-swc": "^3.6.0",
- "@vitest/coverage-v8": "^1.4.0",
- "eslint": "^9.1.1",
- "eslint-plugin-react": "^7.34.1",
- "eslint-plugin-react-hooks": "^4.6.0",
+ "@ladle/react": "^5.0.1",
+ "@testing-library/dom": "^10.4.0",
+ "@testing-library/jest-dom": "^6.6.3",
+ "@testing-library/react": "^16.2.0",
+ "@testing-library/user-event": "^14.6.1",
+ "@types/react-router-dom": "^5.3.3",
+ "@vitejs/plugin-react-swc": "^3.8.0",
+ "@vitest/coverage-v8": "^3.0.8",
+ "eslint": "^9.22.0",
+ "eslint-plugin-react": "^7.37.4",
+ "eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-vitest": "^0.5.4",
- "globals": "^15.0.0",
- "happy-dom": "^15.10.2",
- "jest-fetch-mock": "^3.0.3",
- "jsdom": "^24.0.0",
- "msw": "^2.6.4",
- "prettier": "3.2.5",
+ "globals": "^16.0.0",
+ "husky": "^9.1.7",
+ "jsdom": "^26.0.0",
+ "msw": "^2.7.3",
+ "prettier": "3.5.3",
"prop-types": "^15.8.1",
- "react-test-renderer": "^18.2.0",
- "typescript": "^5.4.5",
- "typescript-eslint": "^7.7.1",
- "vite": "^5.4.12",
- "vite-tsconfig-paths": "^4.3.2",
- "vitest": "^1.6.1",
- "vitest-fetch-mock": "^0.2.2"
+ "react-test-renderer": "^18.3.1",
+ "typescript": "^5.8.2",
+ "typescript-eslint": "^8.26.1",
+ "vite": "^6.2.1",
+ "vite-tsconfig-paths": "^5.1.4",
+ "vitest": "^3.0.8",
+ "vitest-fetch-mock": "^0.4.5"
}
}
diff --git a/web-ui/src/App.css b/web-ui/src/App.css
index 105572155a..4cef25497d 100644
--- a/web-ui/src/App.css
+++ b/web-ui/src/App.css
@@ -7,11 +7,11 @@
a,
a:visited {
- color: var(--checkins-palette-primary-link);
+ color: var(--mui-palette-primary-link);
}
a:hover {
- color: var(--checkins-palette-primary-link-hover);
+ color: var(--mui-palette-primary-link-hover);
}
}
diff --git a/web-ui/src/App.jsx b/web-ui/src/App.jsx
index 870391c129..95554aa2b5 100644
--- a/web-ui/src/App.jsx
+++ b/web-ui/src/App.jsx
@@ -14,8 +14,8 @@ import { DarkMode, LightMode } from '@mui/icons-material';
import {
useColorScheme,
- experimental_extendTheme as extendTheme,
- Experimental_CssVarsProvider as CssVarsProvider
+ createTheme,
+ ThemeProvider
} from '@mui/material/styles';
import './App.css';
@@ -44,8 +44,10 @@ function SchemeToggle() {
);
}
-const theme = extendTheme({
- cssVarPrefix: 'checkins',
+const theme = createTheme({
+ cssVariables: {
+ colorSchemeSelector: 'data',
+ },
colorSchemes: {
light: {
palette: {
@@ -65,8 +67,9 @@ const theme = extendTheme({
components: {
MuiButtonBase: {
defaultProps: {
- disableRipple: typeof process !== 'undefined' && !!process.env.VITEST_WORKER_ID, // No more ripple...only when testing.
- },
+ disableRipple:
+ typeof process !== 'undefined' && !!process.env.VITEST_WORKER_ID // No more ripple...only when testing.
+ }
},
MuiCssBaseline: {
styleOverrides: {
@@ -89,7 +92,7 @@ getUserColorScheme();
function App() {
return (
-
Permissions | Admin | PDL | Team Lead | @@ -53,33 +54,33 @@ exports[`DesktopTable > renders correctly 1`] = ` |
---|---|---|---|---|
View Action Items | - | - | - | - |
Edit Action Items | - | - | - | - |
Create Action Items | - | - | - | - |
Add Team Members | - | - | - | - |
Delete Team Members | - | - | - | - |
renders correctly 1`] = `
aria-invalid="false"
autocapitalize="none"
autocomplete="off"
- class="MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall MuiInputBase-inputAdornedEnd MuiAutocomplete-input MuiAutocomplete-inputFocused css-19qh8xo-MuiInputBase-input-MuiOutlinedInput-input"
+ class="MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall MuiInputBase-inputAdornedEnd MuiAutocomplete-input MuiAutocomplete-inputFocused css-13meb6w-MuiInputBase-input-MuiOutlinedInput-input"
id="permissions-autocomplete"
role="combobox"
spellcheck="false"
@@ -51,18 +52,18 @@ exports[`MobileTable > renders correctly 1`] = `
value=""
/>
|
|
---|---|
Permissions | @@ -162,33 +157,33 @@ exports[`MobileTable > renders correctly 1`] = ` |
View Action Items | - |
Edit Action Items | - |
Create Action Items | - |
Add Team Members | - |
Delete Team Members | - |