Skip to content

mattstanbrell/GPR

Repository files navigation

AWS Impact Accelerator

Sponsor & Project

Sponsor: Hounslow Council
Project: Financial Expenditure for Children's Safeguarding Service

Team Critical Channel (Group 8)

  • Dominic Child (K21051491)
  • Pratap Guha (K21007823)
  • Riazwaan Mir (K21002871)
  • Matthew Stanbrell (K21044080)
  • Dean Whitbread (K21014289)
  • Levi Yeo (K21009934)

Key Information

Live Link

Audily

Test Accounts

Name Email Password Role
Susan Stanley susan@mattstanbrellgmail.onmicrosoft.com Audily2025! Social Worker
Greg Green greg@mattstanbrellgmail.onmicrosoft.com Audily2025! Social Worker
Joy Johnson joy@mattstanbrellgmail.onmicrosoft.com Audily2025! Authorisation Manager
William Wonka will@mattstanbrellgmail.onmicrosoft.com Audily2025! Application Administrator

Known Issues

1. Sign In Redirection Issue

  • Issue: Sign in doesn't always redirect to home page
  • Cause: Amplify Cognito authentication issue
  • Solution: Refresh the page after logging in

2. Session Persistence Issue

  • Issue: After signing out, clicking 'sign in' again will automatically sign you in with the same account
  • Cause: Known Amplify authentication issue (Issue #4044, Issue #12991)
  • Solution: Use incognito/private browsing windows, and it may sometimes also be necessary to completely quit the browser application before signing in with a different account

Application Features

1. Norm

Summary

Norm is our friendly AI model that assists social worker completes expenditure forms.

Access Requirements

  • You must be logged in with a social worker account.

How to access

  • Login
  • Click 'New Form'
  • On desktop:
    • Norm is located on the right side. Type in the prompt to start a conversation with Norm!
  • On mobile:
    • Initial screen is Norm! To access the form, start a conversation with Norm and tap 'View Form'.

2. Formboard

Access Requirements

  • You must be logged in with a social worker or manager account.

How to access

  • Login
  • Select 'Formboard' from dashboard

3. Threads

Access Requirements

  • You must be logged in with a social worker or manager account.
  • A form must be submitted.

How to access

  • Social Worker User:
    • Method 1:
      • From the homepage, select the 'Threads' option.
      • Click on the thread messages.
    • Method 2:
      • Access formboard
      • Click on the form in the submitted board.
      • Click 'Contact Manager' button.
  • Manager User:
    • From the homepage, select the 'Threads' option.
    • Click on the thread messages.

4. Receipt Scanner

Access Requirements

  • You must be logged in with a social worker.
  • A submitted form must be authorised by a manager.

How to access

  • Login
  • Access Formboard and choose the form in the authorised board.
  • Click 'Attachments'
  • Select 'Upload' button, browse, choose the image to upload, and click OK
  • You will see a form populated with the receipt data.

5. Audit Log

Access Requirements

  • You must be logged in with the application administrator.

How to access

  • From the homepage, click the 'Audit Log' option to view the logs.

6. Accessibility Settings

Access Requirements

  • You must be logged in with any user.

How to access

  • On Desktop:
    • Click the 'Settings' option from the homepage.
  • On Mobile:
    • Click the menu icon in the top right corner (three lines)
    • Click 'Settings' option

File Information

File Tree

amplify (AWS Amplify Gen 2 resources)
├── auth (authentication configuration)
│   ├── post-authentication (post-login user processing)
│   │   ├── _helpers.ts
│   │   ├── constants.ts (permission group constants)
│   │   ├── handler.ts (user object creation/update after login)
│   │   └── resource.ts (function definition)
│   └── resource.ts (Microsoft Entra ID setup)
├── data (database configuration)
│   └── resource.ts (DynamoDB schema)
├── functions (Amplify functions)
│   ├── financeCode (generates suggested finance code for a form)
│   │   ├── handler.ts
│   │   └── resource.ts
│   ├── norm (generates Norm responses)
│   │   ├── handler.ts
│   │   └── resource.ts
│   └── receipt-reader (extracts information from receipt images)
│       ├── handler.ts
│       └── resource.ts
├── shared
│   └── types.ts (shared type definitions)
├── storage
│   └── resource.ts (S3 storage config for receipt images)
├── backend.ts (Amplify backend config)
├── package.json
└── tsconfig.json
public (publicly accessible static assets)
├── action-log.svg
├── ...
src (core application code and UI components)
├── app (Next.js App Router directory containing all pages)
│   ├── admin (administrator route, accessible only to admins)
│   │   ├── child (page for creating new children)
│   │   │   └── page.tsx
│   │   ├── team (page for creating new teams)
│   │   │   └── page.tsx
│   │   ├── user (page for editing a user's team and address)
│   │   │   └── page.tsx
│   │   └── page.tsx (admin page with users, children, and teams)
│   ├── all-forms (page for viewing all submitted forms)
│   │   ├── DeleteButton.tsx
│   │   └── page.tsx
│   ├── audit-logs 
│   │   ├── [id]
│   │   │   └── page.tsx (page for viewing individual audit log)
│   │   └── page.tsx (page for viewing list of all audit logs)
│   ├── components (reusabe UI components)
│   │   ├── admin (admin related components - client requested on 17/02/2025)
│   │   │   ├── AdminPanel.tsx
│   │   │   ├── ButtonContainer.tsx
│   │   │   ├── Buttons.tsx
│   │   │   ├── Form.tsx
│   │   │   ├── FormElements.tsx
│   │   │   ├── FormHandlers.tsx
│   │   │   ├── Table.tsx
│   │   │   ├── TableComponents.tsx
│   │   │   └── Views.tsx
│   │   ├── auditLog (audit log related components)
│   │   │   ├── AuditLogEntry.tsx
│   │   │   ├── AuditLogsClient.tsx
│   │   │   ├── AuditLogsFilters.tsx
│   │   │   ├── AuditLogsPagination.tsx
│   │   │   ├── FilterByActionSelector.tsx
│   │   │   ├── FilterByDateSelector.tsx
│   │   │   └── LogsPerPageSelector.tsx
│   │   ├── dashboard (dashboard related components)
│   │   │   ├── AdminButtons.tsx
│   │   │   ├── Buttons.tsx
│   │   │   ├── ButtonsContainer.tsx
│   │   │   ├── ManagerButtons.tsx
│   │   │   └── SocialWorkerButtons.tsx
│   │   ├── form (form related components - client requested on 19/11/2024)
│   │   │   ├── attachments
│   │   │   │   ├── AttachmentTable.tsx
│   │   │   │   ├── Icons.tsx
│   │   │   │   └── TableComponents.tsx
│   │   │   ├── feedback
│   │   │   │   ├── FeedbackContainer.tsx
│   │   │   │   └── Messages.tsx
│   │   │   ├── _helpers.tsx
│   │   │   ├── Buttons.tsx
│   │   │   ├── ButtonsContainer.tsx
│   │   │   ├── FormContent.tsx
│   │   │   ├── FormErrorSummary.tsx
│   │   │   ├── FormLayout.tsx
│   │   │   ├── Icons.tsx
│   │   │   ├── NormLayout.tsx
│   │   │   ├── RecurringPaymentSection.tsx
│   │   │   └── types.ts
│   │   ├── formboard (formboard related components)
│   │   │   ├── _helpers.tsx
│   │   │   ├── Formboard.tsx
│   │   │   ├── FormboardTable.tsx
│   │   │   ├── ManagerFormboard.tsx
│   │   │   └── SocialWorkerFormboard.tsx
│   │   ├── navigation (navigation related components)
│   │   │   ├── _helpers.tsx
│   │   │   ├── Buttons.tsx
│   │   │   ├── FullscreenMenu.tsx
│   │   │   └── Menu.tsx
│   │   ├── receipts (receipt related components)
│   │   │   ├── form
│   │   │   │   ├── Buttons.tsx
│   │   │   │   ├── Form.tsx
│   │   │   │   ├── FormComponents.tsx
│   │   │   │   └── Table.tsx
│   │   │   └── receipt-page.tsx
│   │   ├── settings (settings related components - client suggested on 19/11/2024)
│   │   │   ├── ColourRadioSet.tsx
│   │   │   ├── FontSelector.tsx
│   │   │   ├── FontSizeSelector.tsx
│   │   │   ├── Preview.tsx
│   │   │   ├── Seperator.tsx
│   │   │   └── SpacingSelector.tsx
│   │   ├── threads (threads related components - client requested on 12/12/2024)
│   │   │   ├── Message.tsx
│   │   │   ├── MessageInput.tsx
│   │   │   ├── MessagesContainer.tsx
│   │   │   ├── Thread.tsx
│   │   │   ├── ThreadRow.tsx
│   │   │   ├── ThreadsContainer.tsx
│   │   │   ├── ThreadsSidebar.tsx
│   │   │   └── Toggle.tsx
│   │   ├── types
│   │   │   └── receipt.ts
│   │   ├── util
│   │   │   ├── Avatar.tsx
│   │   │   ├── Button.tsx
│   │   │   ├── NotificationBadge.tsx
│   │   │   └── Tooltip.tsx
│   │   ├── ConfigureAmplify.tsx (Amplify client-side setup for SSR)
│   │   ├── GovUKInitialiser.tsx (GOV.UK frontend intialiser)
│   │   ├── Header.tsx
│   │   ├── HomeSignInButton.tsx
│   │   └── SignInButton.tsx
│   ├── constants (shared application constants)
│   │   ├── global.tsx (global constants like file limits)
│   │   ├── models.tsx (constants related to data models)
│   │   └── urls.tsx (application-wide URL path constants)
│   ├── form
│   │   ├── [slug] (slug is the id of a particular form)
│   │   │   ├── attachments
│   │   │   │   └── page.tsx (lists attachments for that form)
│   │   │   ├── receipt
│   │   │   │   └── page.tsx (choose a receipt image to upload)
│   │   │   └── upload
│   │   │       └── page.tsx (review/edit data extracted from uploaded receipt)
│   │   └── page.tsx (page for creating a new form)
│   ├── formboard (for social worker to view status of all their forms)
│   │   └── page.tsx
│   ├── home (home page)
│   │   └── page.tsx
│   ├── settings (user accessibility settings page)
│   │   ├── page.tsx
│   │   └── SettingsClient.tsx
│   ├── styles (custom application styling)
│   │   ├── _app-styles.scss
│   │   ├── _colours.scss
│   │   └── _govuk-overrides.scss
│   ├── test
│   │   └── page.tsx
│   ├── threads 
│   │   ├── [id]
│   │   │   └── page.tsx (view a specific thread)
│   │   ├── layout.tsx
│   │   └── page.tsx (view all threads the user is a part of)
│   ├── types (TypeScript type definitions)
│   │   ├── feedback.ts
│   │   ├── input.ts
│   │   ├── models.ts
│   │   ├── receipts.ts
│   │   ├── recurrence.ts
│   │   └── threads.ts
│   ├── favicon.ico
│   ├── globals.scss (global application styles)
│   ├── layout.tsx (root layout structure for all pages)
│   ├── metadata.ts (website title and description)
│   ├── page.tsx (main landing page content, requesting user to sign in)
│   └── theme.ts (primary theme colour definitions)
├── utils (shared helper functions and utilities)
│   ├── amplifyServerUtils.ts
│   ├── apis.ts
│   ├── authenticationUtils.ts
│   ├── image-utils.ts
│   ├── responsivenessHelpers.ts
│   └── timeUtils.ts
└── middleware.ts
__fixtures__ (test fixture data for unit tests)
└── user.tsx
__helpers__ (testing utility functions and components)
└── render.tsx
__tests__ (test suites)
└── pages
    ├── __snapshots__
    │   ├── AuditLog.test.tsx.snap
    │   └── Home.test.tsx.snap
    ├── AuditLog.test.tsx
    └── Home.test.tsx
.gitignore
eslint.config.mjs
finance-codes.json (finance codes and descriptions)
next.config.ts
package.json (project dependencies and scripts)
postcss.config.mjs
README.md (you are here)
tailwind.config.js
tsconfig.json

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6