Skip to content
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
2ab5cf3
Added project structure
jgozner May 13, 2026
4e5c9bc
Added project files
jgozner May 13, 2026
31ea571
Update README.md
jgozner May 13, 2026
1a8d100
Update README.md
jgozner May 13, 2026
2a928a8
Initial plan
Copilot May 13, 2026
c5e80d3
fix(clm): resolve TypeScript reliability issues in CLM sample
Copilot May 13, 2026
eab4bf7
fix(clm): harden null checks and type handling in CLM flows
Copilot May 13, 2026
2a6950f
fix: replace hardcoded license keys with YOUR_LICENSE_KEY and rename …
Copilot May 15, 2026
1d4180c
fix: correct typo in lerna.json (webivewer-clm -> webviewer-clm)
Copilot May 15, 2026
b06c767
fix(security): update react-router to ^7.12.0 and vite to ^6.4.2 to f…
Copilot May 15, 2026
49a423d
fix(security): remove unused npm runtime dependency (unpatched LPE CV…
Copilot May 15, 2026
6d7b54d
Merge pull request #95 from ApryseSDK/copilot/sub-pr-94
DavidEGutierrez May 15, 2026
6205042
fix(sonarqube): remove dead code, unused imports, console.logs, var d…
Copilot May 15, 2026
1cd43ea
Revert "fix(sonarqube): remove dead code, unused imports, console.log…
Copilot May 15, 2026
32c17dd
fix: add public/webviewer/lib/ to .gitignore to prevent build artifac…
Copilot May 15, 2026
fd5822e
Initial plan
Copilot May 15, 2026
dd861e8
fix(clm): address review feedback for duplication and safety checks
Copilot May 15, 2026
6553a26
fix(clm): replace var with const in agreement signature rectangle cre…
Copilot May 15, 2026
986bbb0
style(clm): remove extra spacing in PDFNet.Rect construction
Copilot May 15, 2026
2f94f17
Merge pull request #96 from ApryseSDK/copilot/sub-pr-94-again
DavidEGutierrez Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,5 @@ Samples showing how to integrate WebViewer with Artificial Intelligence.
- [webviewer-ask-ai](./webviewer-ask-ai) - Enable chat-based Q&A, document and selected-text summarization, keyword extraction, and contextual prompts that lets users ask questions about their PDFs
- [webviewer-redaction-ai](./webviewer-redaction-ai) - Identify and apply redaction of the personal information in the provided PDF

### WebViewer Complete Applications
- [webviewer-clm](./webviewer-clm) - Complete CLM workflow that leverages multiple webviewer capabilities
1 change: 1 addition & 0 deletions lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"webviewer-barcode",
"webviewer-blazor",
"webviewer-blazor-wasm",
"webviewer-clm",
"webviewer-cors/webviewer-app",
"webviewer-cors/webviewer-lib",
"webviewer-custom-ui",
Expand Down
2 changes: 2 additions & 0 deletions webviewer-clm/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto
26 changes: 26 additions & 0 deletions webviewer-clm/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Logs

logs
_.log
npm-debug.log_
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
\*.local

# Editor directories and files

.vscode/_
!.vscode/extensions.json
.idea
.DS_Store
_.suo
_.ntvs_
_.njsproj
_.sln
\*.sw?
40 changes: 40 additions & 0 deletions webviewer-clm/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# WebViewer - CLM Sample

## Get Started

A license key is required to run WebViewer. You can obtain a trial key in our [get started guides](https://docs.apryse.com/web/guides/get-started), or by signing-up on our [developer portal](https://dev.apryse.com/).

## Initial Setup

Before you begin, make sure the development environment includes [Node.js](https://nodejs.org/en/).

## Install

```
git clone --depth=1 https://github.com/ApryseSDK/webviewer-samples.git
cd webviewer-samples/webviewer-clm
npm install
```

## Run

```
npm start
```

### Supabase

Update supabaseClient.ts with your Supabase project information.

```bash
SUPABASE_URL=https://YOUR_PROJECT_REF.supabase.co
SUPABASE_KEY=your_supabase_key
```

For database setup, the project includes the schema files needed for your database.

```bash
./database/users.sql
./database/templates.sql
./database/agreements.sql
```
11 changes: 11 additions & 0 deletions webviewer-clm/database/agreements.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
create table public.agreements (
id uuid not null default gen_random_uuid (),
created_at timestamp with time zone not null default now(),
status text null default 'Awaiting Signature'::text,
user_id uuid null,
template_id uuid null,
file_data text not null,
constraint agreements_pkey primary key (id),
constraint agreements_template_id_fkey foreign KEY (template_id) references templates (id),
constraint agreements_user_id_fkey foreign KEY (user_id) references users (id)
) TABLESPACE pg_default;
8 changes: 8 additions & 0 deletions webviewer-clm/database/templates.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
create table public.templates (
id uuid not null default gen_random_uuid (),
created_at timestamp with time zone not null default now(),
title text null,
file_extension text null,
file_data text null,
constraint templates_pkey primary key (id)
) TABLESPACE pg_default;
10 changes: 10 additions & 0 deletions webviewer-clm/database/users.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
create table public.users (
id uuid not null default gen_random_uuid (),
created_at timestamp with time zone not null default now(),
email_address text null,
first_name text null,
last_name text null,
address text null,
constraint users_pkey primary key (id),
constraint users_id_fkey foreign KEY (id) references auth.users (id)
) TABLESPACE pg_default;
28 changes: 28 additions & 0 deletions webviewer-clm/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import js from "@eslint/js";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
import globals from "globals";
import tseslint from "typescript-eslint";

export default tseslint.config(
{ ignores: ["dist"] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ["**/*.{ts,tsx}"],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
"react-hooks": reactHooks,
"react-refresh": reactRefresh,
},
rules: {
...reactHooks.configs.recommended.rules,
"react-refresh/only-export-components": [
"warn",
{ allowConstantExport: true },
],
},
}
);
42 changes: 42 additions & 0 deletions webviewer-clm/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="refine | Build your React-based CRUD applications, without constraints."
/>
<meta
data-rh="true"
property="og:image"
content="https://refine.dev/img/refine_social.png"
/>
<meta
data-rh="true"
name="twitter:image"
content="https://refine.dev/img/refine_social.png"
/>
<title>
Refine - Build your React-based CRUD applications, without constraints.
</title>

</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="/src/index.tsx"></script>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.

You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.

To begin the development, run `npm dev` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>
Loading