diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0185687c..f26f8a60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: npm - name: Build @@ -47,7 +47,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: npm - name: Install Dependencies run: npm ci @@ -67,7 +67,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: npm - name: Install Dependencies run: npm ci diff --git a/.nvmrc b/.nvmrc index 853c0e12..0a47c855 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -lts/Hydrogen +lts/iron \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 12280a79..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,191 +0,0 @@ -# Changelog - -## v0.0.5 (June 7, 2023) - -## Features - -- Updated UI for UserList and ManageUser with ClientList and AddClientModal (#209) -- Generate PASS specific inbox and publics container if it doesn't exist upon login (#201) -- Render sent message in outbox (#191) -- Include pagination for messages in inbox/outbox (#191) -- Generate user outbox on log in if outbox does not exist in user's Solid Pod (#186) -- Using webIds instead of username as primary identifier (#169) -- Allow users to choose different Solid Identity Providers when using PASS (#167) -- Updated/Enhanced UI for Footer, Inactivity Notification, Client List, Form components, etc. (#166, #172, #178, #180, #187, #193, #206, #209, #210, #236) -- Render user messages from their Solid inbox on PASS (#148) - -## Fixes - -- Fixing URL to local Solid Pod Server at http://localhost:3000/ (#234) -- Refactored src/model-helpers/User.js to update user activity correctly (#191, #214) -- Corrected type in CrossPodWriteForm to use Upload instead of Search (#183) -- Included corrections to JSDoc comments (#148, #179, #183, #184, #201) - -## Dev Changes - -- Refactored all PASS related contexts to UserDataContext (#214) -- Refactored React Contexts for messages to MessageContext (#214) -- Include SignInUserContext for storing podUrl to be used in PASS (#214) -- Refactored fetchData and App.jsx (#214) -- Include top level mock directory to simplify module mocks in unit tests (#211) -- Refactoring custom hooks into individual files (#204) -- Replaced UPLOAD_TYPES with INTERACTION_TYPES (#202) -- Refactored PASS routing with AppRoutes and ProtectedRoutes (#198) -- Created function to generate an outbox container for users if it doesn't exist in their Solid Pod (#186) -- Optimized session-helper functions (#184) -- Refactored set permission forms to pass in Access Object as a parameter to setDocAclPermission function (#183) -- Updated all relevant components/functions using createDocAclForUser with new setDocAclForUser function (#183) -- Optimized session-core functions (#183) -- Included new JSDoc for new barcode scanner functions (#179) -- Updated clearDoc.js and .gitignore to accommodate for new ZXing_barcode.md (#179) -- Organized utils directory into 4 subdirectories and rerouted import paths (#171) -- Refactored contexts for userList from session-core to src/modal-helpers (#169) -- Replaced removeKeys function with localStorage.clear (#167) -- Replaced previous Login component with OidcLoginComponent (#167) -- Created new test directory to store unit tests (#167) -- Generate loading text for when user messages are being loaded from Solid (#148) -- Removed types.d.ts in favor of better written JSDoc comments (#148) -- Created new React Context and components for rendering inbox messages (#148) -- Created new getInboxMessageTTL function to pull messages from Solid as JSON from TTLs (#148) - -## Others - -- Updated package-lock.json to fix high-security vulnerabilities (#224) -- Updated GitHub Actions to have lints and unit tests separate from building (#181) -- Updated GitHub Actions to run newer GitHub Actions workflows and correct node version (#181) -- Included new technical documentation for barcode scanner (#179) - ---- - -## v0.0.4 (May 19, 2023) - -## Features - -- Upload Driver's License into Solid through a barcode scanner (#139) -- Included cryptographically secure signatures to documents (#137) -- Included new Inbox for PASS to allow users to send messages as TTL files (#128) -- Included checksum for uploaded files on Solid Pods via PASS (#123) -- Major UI updates with Material UI, including NavBar, Footer, Login, LogoutModal, etc. (#107, #111, #116, #118, #141, #154, #166) -- Created new Footer component for PASS (#118) -- Included inactivity notification popup that appears after 3 minutes of inactivity (#101) -- Included ability to perform cross-pod uploading/updating of files in another user's Documents container if given access (#97) -- Included permissions setting to a dedicated Documents container on user's Solid Pod (#97) - -## Fixes - -- Fixed routing to /Documents/Drivers%20License/ for user's Pod by removing apostrophe from string during upload (#157) -- Minor bug fix for state.verifyFile (#157) -- Fixed pathing for Prettier and ESLint in scripts (#114, #122) -- Fixed typings for userListObject in JSDoc (#100) -- Created caching for npm dependencies (#97) -- Updating corrupted package-lock file from repo (#96) - -## Dev Changes - -- Refactored handleLogout and eventlisteners for inactivity notification (#166) -- Refactored Navbar with MUI components (#156) -- Refactored form submission for file uploads (#145) -- Updating configuration for ESLint (#127) -- Included linter as part of GitHub Actions (#123) -- Created dedicated directory for constants and schemas called constants (#123) -- Replacing BrowserRouter with HashRouter for compatibility issues with GitHub Pages (#103) -- Begin incorporating Material UI libraries to existing build with inactivity popup (#101) - -## Others - -- Included new GitHub Actions workflow to add PASS project to issue on creation (#156) -- Created local dev server, node scripts, and local .env for Community Solid Server (#106) - ---- - -## v0.0.3 (April 25, 2023) - -## Features - -- Included basic dialog modal for logout confirmation (#85) -- Allow users to log back into PASS when browser is accidentally refreshed when users have not explicitly logged out (#81) - -## Fixes - -## Dev Changes - -- Functions and components for users list is refactored to loaded asynchronously from one another (#84) -- Moved Router from App.jsx to index.jsx (#81) -- Created useEffect for "session restore" with PASS, current solution involves a workaround that logs users into a new Solid session when browser refreshes (#81) -- Refactored UserSection, Login, and Forms component to include AppHeader (#81) -- Replaced routerContext with custom useRedirectUrl hook (#81) -- Streamlined and simplified routing with React Router (#81) - -## Others - -- Included dependencies for rollup-plugin-visualizer to check on production build bundle size locally -- Removed the following unused dependencies from package.json: @inrupt/solid-client-authn-browser, buffer, eslint-config-node, eslint-plugin-node, jsdoc-tsimport-plugin, string_decoder - ---- - -## v0.0.2 (April 7, 2023) - -## Features - -- Developed a basic navbar for navigating between user list (i.e. home screen) and handle document forms when logged in (#74) -- Created login tracker to keep track of user's last active date from PASS (#74) -- Added ability for users to select other users from the user list (#74) -- Created a user list and the ability for users to add/remove users from said list and save this information on their Pod (#74) -- Added ability to update user's ttl file on their Pod if they're updating a document (#71) -- Added ability to update user's file on their Pod (#70) -- Added confirmation window for updating user file on their Pod (#70) - -## Fixes - -- Fixed typo for input elements in Form component relating to file upload (#65) - -## Dev Changes - -- Introduced routing to PASS in preparation for dedicated pages different functionalities in the application (#74) -- Created React Contexts for user list, selected user, and browser routing (#74) -- Reorganized session-core with multiline comments separating major functional sections (#74) -- New components has been created for user list and its functionalities (#74) -- uploadDocument function also renames ttl file to 'document.ttl' (#70) -- Refactored UploadDocumentForm to perform both uploadDocument and updateDocument functions (#70) -- Added updateDocument function in session-core.js for updating documents on user's Pod (#70) -- Included typedefs.js to define type definitions for JSDoc (#70) -- Refactored FormSection to include section title instead of inside its children component (#66) -- Reformatted JSDoc to follow recommended linting rules from ESLint plugin for JSDoc (#66) - -## Others - -- Correcting typos and typing for JSDoc (#70, #74) -- Deployed PASS to GitHub Pages with the link [https://codeforpdx.github.io/PASS/](https://codeforpdx.github.io/PASS/) (domain name will change in future updates) (#59) - ---- - -## v0.0.1 (March 18, 2023) - -## Features - -- Added guard rails that prevent users from removing access to their own containers on Solid (#56) -- Added button disabling when processing upload/search/delete features to Solid Pod (#54) -- Added linting and formatting through ESLint and Prettier (#48) -- Added permission setting via Access Control List (or ACL) file by users (#38) -- Added cross-pod searching from one user to another (#38) -- Migrated PASS from vanilla JS to React.js (#19) -- Added upload/search/delete features to Solid Pod using Inrupt's JS/React libraries (#6, #19) -- Added login/logout features to PASS (#6, #19) - -## Fixes - -- Corrected HTML id property in JSX for Logout.jsx (#52) -- Corrected typo for GitHub Actions configuration file (#42) - -## Dev Changes - -- Refactored Form components with new FormSection component (#56) -- Included CHANGELOG for PASS project to root directory (#56) -- Refactored SessionProvider to index.jsx instead of App.jsx (#40) - -## Others - -- Automated GitHub build process using GitHub Actions (#31, #41) -- Reorganized project file structure with README, CONTRIBUTING, and /docs/README (#26) -- Included PASS' React Documentation to /docs (#24, #32, #33, #45) -- Included README and CONTRIBUTING for PASS project to root directory (#18) diff --git a/Dockerfile.react b/Dockerfile.react index 0e86a2f9..36e374d2 100644 --- a/Dockerfile.react +++ b/Dockerfile.react @@ -1,5 +1,5 @@ # Stage 1: Build the React app -FROM node:18 AS build +FROM node:20 AS build WORKDIR /app diff --git a/README.md b/README.md index c297dfbf..1c7163cd 100644 --- a/README.md +++ b/README.md @@ -31,36 +31,37 @@ PASS is currently in development working towards MVP release by generous efforts ## 1. Quick Setup Instructions - **Note**: All commands in this document are for bash. If you are using an incompatible shell like CMD or powershell, you may need to use different commands. +**Note**: All commands in this document are for bash. If you are using an incompatible shell like CMD or powershell, you may need to use different commands. -- ### Getting the Code +- ### Getting the Code 1. Clone the git repository: ```bash git clone https://github.com/codeforpdx/PASS.git ``` + 2. Enter the project folder: - ```bash - cd PASS - ``` + ```bash + cd PASS + ``` - ### Setting up Node -_If you already have node 18 installed on your system, you may skip this section._ +_If you already have node 20 installed on your system, you may skip this section._ -Currently, we require Node version 18.19.x and NPM for our package manager. We recommend using Node Version Manager (NVM) to install Node and npm. To proceed using NVM, perform the following: +Currently, we require Node version 20.xx.x and NPM for our package manager. We recommend using Node Version Manager (NVM) to install Node and npm. To proceed using NVM, perform the following: 1. Download NVM for your system. - For Mac, Linux, and other POSIX users: [https://github.com/nvm-sh/nvm](https://github.com/nvm-sh/nvm) - For Windows users: [https://github.com/coreybutler/nvm-windows](https://github.com/coreybutler/nvm-windows) -2. If you don't have node version 18, install node version 18 by running: +2. If you don't have node version 20, install node version 20 by running: ```bash nvm install 18 ``` - This will download node 18 and set it up for use + This will download node 20 and set it up for use 3. Check that node and npm are set up: ```bash @@ -70,11 +71,12 @@ Currently, we require Node version 18.19.x and NPM for our package manager. We r ```bash npm -v ``` -The node version should be 18.19 (and maybe third decimal) and the npm version should be 10.2 (and maybe a third decimal). If they are not these versions, or if either of those commands cause an error, node has not been installed correctly. -4. We include a `.nvmrc` in the root folder of the project, which contains our target node version. We update this version periodically. If you're ever not sure of what node version you should be using, run + The node version should be 20.xx (and maybe third decimal) and the npm version should be 10.2 (and maybe a third decimal). If they are not these versions, or if either of those commands cause an error, node has not been installed correctly. + +4. We include a `.nvmrc` in the root folder of the project, which contains our target node version. We update this version periodically. If you're ever not sure of what node version you should be using, run ```bash - nvm use + nvm use ``` to be synced with the project. You may receive warning messages in the terminal if the verion is not installed. Follow the messages to resolve the issues. @@ -87,19 +89,22 @@ The node version should be 18.19 (and maybe third decimal) and the npm version s ``` 2. Configure the project environment: - ```bash - cp env.template .env - ``` + + ```bash + cp env.template .env + ``` 3. Run the following command: - ```bash - npm start - ``` - To start up everything needed to run PASS. + + ```bash + npm start + ``` + + To start up everything needed to run PASS. 4. Navigate to PASS and set up an account. - By default, PASS launches at [http://localhost:5173](http://localhost:5173) on your local machine. Navigate to that screen, then click the signup button to create a pod and web ID for yourself. Then return to the homepage and log in. Follow all prompts that appear, and you will be up and running with PASS! + By default, PASS launches at [http://localhost:5173](http://localhost:5173) on your local machine. Navigate to that screen, then click the signup button to create a pod and web ID for yourself. Then return to the homepage and log in. Follow all prompts that appear, and you will be up and running with PASS! - ### Setting up Git Hooks for development @@ -126,6 +131,7 @@ In Portland, housing-insecure individuals struggle to maintain documents often r - [CODEPDX code of conduct](https://github.com/codeforpdx/codeofconduct/blob/master/README.md) ## 5. PASS Wiki + [Visit the wiki for more information on every aspect of the project. Feature set, architecture, tooling, etc](https://github.com/codeforpdx/PASS/wiki) **[⬆️ Back to Top](#pass---personal-access-system-for-services)** diff --git a/package-lock.json b/package-lock.json index 953c28d1..a3beefb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pass", - "version": "1.3.0", + "version": "1.3.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "pass", - "version": "1.3.0", + "version": "1.3.1", "license": "MIT", "dependencies": { "@emotion/react": "^11.10.8", diff --git a/package.json b/package.json index 3c1d2e6d..d5ef8c2a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pass", "homepage": ".", - "version": "1.3.0", + "version": "1.3.1", "description": "", "scripts": { "start": "concurrently --kill-others \"npm run podserver\" \"npm run dev\"",