-
Notifications
You must be signed in to change notification settings - Fork 27
Architecture
Jared Krajewski edited this page Oct 2, 2023
·
19 revisions
Background: Applying for social care requires a significant amount of personal documentation. For those experiencing housing insecurity it is impractical to maintain these documents and facilitate a means of transferring them to case workers. The design of PASS aims lower this barrier to aide. PASS is built as a decentralized platform using SOLID to offer full user control, data portability, and interoperability.
Solid is composed of the following key components:
- Pod: A Pod is a personal data store that is owned and controlled by the user. It can be hosted by the user themselves, or by a Pod provider of choice.
- Pod Provider: A Pod Provider is an entity that provides the infrastructure and services needed to host Pods.
- Resource Server: The Resource Server is the component that stores and manages the data in a Pod. It is responsible for providing access to the data to authorized users and applications.
- Identity Provider: The Identity Provider is the component that authenticates users and provides them with access to their Pods.
- Linked Data: Solid Pods use linked data to represent and store data. Linked data is a way of representing data on the web such that it can be easily linked to other data.
Interacting with a solid pod includes the following steps:
- The user authenticates with an Identity Provider and receives a WebID, which is a unique identifier for the user.
- The user selects a Pod Provider and creates a Pod.
- The user's WebID is associated with the Pod, and the user is granted access to the Pod.
- The user can then store and manage data in the Pod.
- Applications can request access to the data in the Pod with the user's consent.
- The Identity Provider authorizes or denies the access request.
- If the access request is authorized, the application is granted access to the data in the Pod.
- Access Control: The platform boasts fine-grained access control mechanisms that enable users to specify precisely who can view and modify their data, ensuring privacy and security.
- Organization Pod: The Organization Pod serves as the central hub for nonprofit organizations. It enables them to interact with clients, access and manage client data, upload important documents, and verify the authenticity of documents for various purposes such as eligibility verification.
- Organization Profile: The Organization Profile allows nonprofit organizations to store essential information about themselves, including their mission, contact details, and services offered. This profile data helps build trust and transparency with clients.
- Create Pod Organization: Creating an Organization Pod involves setting up a dedicated data storage space for the nonprofit organization within the PASS platform. It includes specifying the organization's name, contact information, and other relevant details.
- Add Case Manager: Case Managers act as intermediaries between the organization and clients. They have access to the Organization Pod, allowing them to coordinate and manage client services effectively.
- Case Manager: Organizations can appoint case managers to oversee client interactions and maintain seamless communication. They can request specific access permissions from clients, ensuring they can provide the necessary support. Additionally, Case Managers are responsible for document verification and maintaining detailed notes on client interactions.
- Create Pod Client: Creating a Client Pod involves individuals who are experiencing housing insecurity. It includes setting up their personal data storage space within the PASS platform, where they can manage their documents and interact with organizations.
- Client Pod: The Client Pod is the secure space where clients can upload and manage their documents, communicate with organizations, and control access to their data. It serves as a digital safe for clients.
- Client Profile: The Client Profile allows individuals to maintain a record of their personal information, contact details, and other relevant data. It empowers clients to take ownership of their information.
- Connect Client Pod with Organization Pod: This feature enables the establishment of a secure connection between a client and an organization, allowing for the provision of personalized services and document sharing while maintaining data privacy.
- Client List: The Client List serves as a comprehensive directory of all clients an organization has assisted. It includes essential client information and references to the client's data within the organization's Pod.
- Client Profile on Organization: When an organization connects with a client, it maintains a record of the client's data within its own Pod. This data includes information provided by the client and additional details collected during interactions with Case Workers.
- Read Access to Client Pod: Read access is essential for organizations to retrieve information from the client's Pod. Clients control and grant this access to ensure the privacy of their data.
- Write Access to Client Pod: Write access allows organizations to upload and update documents within the client's Pod, facilitating document management and support services.
- Remove Read Access to Client Pod: This feature enables both clients and organizations to revoke read access when necessary, ensuring data privacy and security.
- Remove Write Access to Client Pod: Removing write access allows clients and organizations to control who can make changes to the data within the client's Pod, enhancing data security.
- Upload Document: Document upload is a crucial feature for both clients and organizations. It allows for the secure storage and sharing of important documents of various types, aiding in the housing assistance process.
- Document Metadata: Document metadata includes details such as document type, upload date, and document owner. It helps in document organization and retrieval.
- Document Types: Certain document types, recognized as supported, can undergo verification through Case Workers. Other document types are accepted but may have limited metadata. Clients are subject to upload limits to ensure efficient document management.
- Verify Document: Verification ensures the authenticity of documents. Case Managers use public and private keys to perform this verification process.
- Write Document in Client Pod: This feature ensures that uploaded documents are securely stored within the client's Pod. Organizations must comply with this requirement when adding documents.
- Write Document in Organization Pod: Certain document types may be stored within the Organization Pod for specific purposes, such as archiving important documents relevant to the organization's operations.
- Send Message: Messaging functionality enables real-time communication between clients and organizations, fostering collaboration and support.
- Create Note: Note-taking is essential for organizations to document client interactions, track progress, and ensure a smooth transition when Case Managers change.
- Re-assign Case: Permits organizations to re-assign a case to allow continuance of service during things like illness, vacation or change of employment.
- Assign additional Case Manager: Similar to re-assign case, it may be beneficial to add an additional case worker instead of completely re-assigning.
-
React.js 18
- Used for JavaScript front-end library/framework
-
React Paginate
- Used for pagination
-
React Router
- Used for routing to pages not built within React
-
React Testing Library
- Used for unit testing
-
Material UI
- Used for CSS framework
-
Community Solid Server
- Used for the server
-
SOLID
- Used for the decentralized database
- Getting started as a Solid Developer
-
Inrupt
- Used for APIs to interact with SOLID data
-
DayJS
- Used for JavaScript date library
-
JSDoc
- Used for documenting codebase
-
Prettier
- Used for code formatting
-
ESLint
- Used for code analysis
-
Vite
- Used for project scaffolding
-
Vitest
- Used for unit testing
-
JavaScript | MDN
- Used as the primary coding language
-
Node.js
- Used for the server
-
NPM
- Used for package management
-
crypto-js
- Used for cryptographic algorithms
-
zxing-js/browser
- Used for barcode image processing
-
GitHub
- Used for development and version control
- PASS GitHub repository
-
Google Meet
- Used for meetings
-
Discord
- Used for text and voice communication
- Join our Discord link
-
Figma
- Used for design collaboration
- PASS Figma board
PASS is being developed by volunteers through CODE PDX, a Portland, OR civic coding organization with the support of Technology Association of Oregon, OpenCommons, and Oregon Digital Safety Net.