Skip to content

Commit 35f0644

Browse files
authored
Merge pull request #30 from docusign/DEVDOCS-14006
Text and template updates
2 parents b525688 + 5462c62 commit 35f0644

File tree

11 files changed

+82
-643
lines changed

11 files changed

+82
-643
lines changed

README.md

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
# Node.js and React: MyMaestro Sample Application
22

3-
![React + Vite](./client/src/assets/img/favicon.png) ![React + Vite](./client/src/assets/img/logo.svg)
4-
53
## Introduction
64

7-
Welcome to the MyMaestro sample app! MyMaestro is written using Node.js (server) and React (client), and showcase the new Maestro API. Docusign Maestro is a core platform service powering the Docusign. Easily build and deploy customized workflows that automate and accelerate your agreement processes without writing any code. Maestro connects all the tools and activities in your workflow so agreement processes are more efficient, more uniform, and have better visibility.
5+
Welcome to the MyMaestro sample app! MyMaestro is written using Node.js and React. Docusign Maestro lets you easily build and deploy customized workflows that automate and accelerate your agreement processes without writing any code. Maestro connects all the tools and activities in your workflow so that agreement processes are more efficient, more uniform, and have better visibility.
86

9-
With Docusign Maestro, you can combine workflow steps for Docusign apps like ID Verification, Web Forms, and eSignature, and third-party extensions to automate your agreement process end-to-end.
7+
With Docusign Maestro, you can combine Docusign features such as ID Verification, Web Forms, and eSignature with third-party extensions to automate your workflows from end to end.
108

119
## Configuring your integration
1210

13-
Before you can run this sample app on your local machine, you must first create a new integration with a Docusign developer account.
11+
Before you can run this sample app on your local machine, you must first create a new integration key in your Docusign developer account.
1412

1513
### Create a new integration
1614

17-
1. If you don't already have one, create a [free developer account](https://go.docusign.com/sandbox/productshot/).
18-
2. Log into your developer account, and navigate to [My Apps & Keys](https://admindemo.docusign.com/apps-and-keys).
15+
1. If you don't already have one, create a [free developer account](https://go.docusign.com/o/sandbox/).
16+
2. Log in to your developer account and navigate to [My Apps & Keys](https://admindemo.docusign.com/apps-and-keys).
1917
3. Select **Add App and Integration Key**.
2018
4. Create a new integration that is configured to use **JSON Web Token (JWT) Grant** and **Authorization Code Grant (ACG)**.
21-
You will need the **integration key** itself and its **RSA key pair**. To use this application, you must add your application's **Redirect URI** to your integration key. See our video, [**Creating an Integration Key for JWT Authentication**](https://www.youtube.com/watch?v=GgDqa7-L0yo) for a demonstration of how to create an integration key (client ID) for a user application like this example.
22-
- Save the **integration key** and **private RSA key pair** somewhere safe as you will need these later.
19+
You will need the **integration key** itself and its **RSA key pair**. To use this application, you must add your applications **Redirect URI** to your integration key. See our video, [**Creating an Integration Key for JWT Authentication**](https://www.youtube.com/watch?v=GgDqa7-L0yo) for a demonstration of how to create an integration key (client ID) for a user application like this example.
20+
- Save the **integration key** and **private RSA key pair** somewhere safe as you will need these later.
2321
5. Add redirect URIs for your app. There are several variables from the **.env** file that are used in the code and configured for redirect urls. Find variables below in the **.env** file and add the values of these variables in the Docusign account settings in the appropriate **Redirect URIs** section:
24-
- FRONTEND_DEV_HOST (http://localhost:3000)
25-
- FRONTEND_PROD_HOST (https://mymaestro.azurewebsites.net)
26-
- JWT_REDIRECT_URI (https://developers.docusign.com/platform/auth/consent)
22+
- FRONTEND_DEV_HOST (http://localhost:3000)
23+
- FRONTEND_PROD_HOST (https://mymaestro.azurewebsites.net)
24+
- JWT_REDIRECT_URI (https://developers.docusign.com/platform/auth/consent)
2725

28-
Please pay attention that if you run the project in docker using the **docker-compose.local.yml** file, the variable FRONTEND_DEV_HOST there changes to the value **http://localhost:80**. Keep in mind that in this case this value will also have to be added to **Redirect URIs** section.
26+
If you run this project in Docker using the **docker-compose.local.yml** file, the variable FRONTEND_DEV_HOST there changes to the value **http://localhost:80**. Keep in mind that in this case this value will also have to be added to the **Redirect URIs** section.
2927

3028
### Prerequisites
3129

@@ -44,24 +42,24 @@ Please pay attention that if you run the project in docker using the **docker-co
4442
5. Navigate to the **server** folder: **`cd ../server`**
4543
6. Install dependencies: **`npm install`**
4644
7. Rename the **.env.example** file in the root directory to **.env**, and update the file with the integration key and other settings.
47-
> **Note:** Protect your integration key and client secret. You should make sure that the **.env** file will not be stored in your source code repository.
48-
8. Rename the **example_private.key** file to **private.key**, and paste your complete private RSA key into this file (including the header and footer of the key). Private RSA you should get when created Docusign account.
45+
> **Note:** Protect your integration key and client secret. You should make sure that the **.env** file will not be stored in your source code repository.
46+
8. Rename the **example_private.key** file to **private.key**, and paste your complete private RSA key into this file (including the header and footer of the key). This should be the private RSA you should have gotten when you created your Docusign account.
4947

5048
## Running MyMaestro in development mode
5149

5250
1. Navigate to the application folder: **`cd sample-app-mymaestro-node`**
5351
2. To start the server and client at the same time: **`npm run concurrently:dev`**
5452
3. **Or,** to run the server and client separately:
55-
- In one terminal, run **`npm run client:dev`**
56-
- In a separate terminal, run **`npm run server:dev`**
53+
- In one terminal, run **`npm run client:dev`**
54+
- In a separate terminal, run **`npm run server:dev`**
5755
4. Open a browser to **http://localhost:3000**
5856

59-
## Running MyMaestro in docker
57+
## Running MyMaestro in Docker
6058

61-
You can run application in docker locally like in production mode
59+
You can run the application in Docker locally in production mode:
6260

6361
1. Navigate to the application folder: **`cd sample-app-mymaestro-node`**
64-
2. Make sure that you configured **.env** file and saved **private.key** in the root of the folder. Make sure that you have docker installed.
62+
2. Make sure that you configured **.env** file and saved your **private.key** in the root of the folder. Make sure that you have Docker installed.
6563
3. Run **`docker-compose -f docker-compose.local.yaml up -d`**
66-
4. In order to stop containers run **`docker compose -f docker-compose.local.yaml down`**
67-
5. Open a browser to **http://localhost:80**
64+
4. To stop containers, run **`docker compose -f docker-compose.local.yaml down`**
65+
5. Open a browser to **http://localhost:80**

client/src/assets/text.json

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,64 @@
11
{
22
"hero": {
33
"title": "Welcome to the MyMaestro Sample Application",
4-
"paragraph": "Discover the power of Docusign Maestro API. Experiment with Maestro API calls in an interactive environment.",
4+
"paragraph": "Discover the power of the Docusign Maestro API. Experiment with Maestro API calls in an interactive environment.",
55
"tryButton": "Try the App",
66
"GitHub": "Go to GitHub",
77
"footer": {
8-
"title": "DocuSign: it’s time to agree better",
9-
"paragraph": "DocuSign helps organizations connect and automate how they prepare, sign, act on, and manage agreements.",
10-
"copyright": "© 2024 DocuSign Inc.",
8+
"title": "Docusign: Build the future of agreements",
9+
"paragraph": "Powering the world's agreements with Docusign APIs",
10+
"copyright": "© 2024 Docusign Inc.",
1111
"createButton": "Create developer account",
12-
"learnButton": "Learn more ->"
12+
"learnButton": "Learn more"
1313
}
1414
},
1515
"login": {
1616
"acg": "Authorization Code Grant",
17-
"acgDescription": "This authentication type provides functionality of creating, triggering and managing workflows.",
17+
"acgDescription": "This authentication type lets you create, trigger, and manage workflows in your own account.",
1818
"jwt": "JSON Web Token",
19-
"jwtDescription": "This authentication type provides functionality of only triggering and managing workflows."
19+
"jwtDescription": "This authentication type lets you trigger and manage workflows in our preconfigured account."
2020
},
2121
"triggerForm": {
2222
"formTitle": "Fill in details",
2323
"formName": "Participant Information",
2424
"fieldsI9": {
25-
"field1": "Preparer Name",
26-
"field2": "Preparer Email",
27-
"field3": "Employee Name",
28-
"field4": "Employee Email",
29-
"field5": "HR Approver Name",
30-
"field6": "HR Approver Email"
25+
"field1": "Preparer name",
26+
"field2": "Preparer email",
27+
"field3": "Employee name",
28+
"field4": "Employee email",
29+
"field5": "HR Approver name",
30+
"field6": "HR Approver email"
3131
},
3232
"fieldsOffer": {
33-
"field1": "HR Manager Name",
34-
"field2": "HR Manager Email",
33+
"field1": "HR manager name",
34+
"field2": "HR manager email",
3535
"field3": "Company"
3636
},
3737
"fieldsNda": {
38-
"field1": "HR Manager Name",
39-
"field2": "HR Manager Email"
38+
"field1": "HR manager name",
39+
"field2": "HR manager email"
4040
}
4141
},
4242
"home": {
4343
"card1": {
4444
"title": "Create a workflow",
45-
"description": "Create workflow definitions from the dropdown list below"
45+
"description": "Create a new workflow definition"
4646
},
4747
"card2": {
4848
"title": "Trigger a workflow",
49-
"description": "Get list of workflow definitions created and trigger workflows"
49+
"description": "Get a list of workflow definitions and trigger a workflow instance"
5050
},
5151
"card3": {
52-
"title": "Manage a workflow",
53-
"description": "Get list of workflow instances, update their status and cancel them"
52+
"title": "Manage workflows",
53+
"description": "Get the status of existing workflow instances and cancel instances"
5454
}
5555
},
5656
"loader": {
5757
"title": "Waiting for log in"
5858
},
5959
"behindTheScenes": {
6060
"titles": {
61-
"main": "This sample features",
61+
"main": "Scenario overview",
6262
"code": "Code flow",
6363
"step1": "Step 1",
6464
"step2": "Step 2",
@@ -68,25 +68,25 @@
6868
"codeDescription": "See the source code: "
6969
},
7070
"createWorkflow": {
71-
"mainDescription": "- Creation of 1-9 workflow\n - Creation of Offer Letter workflow\n - Creation of NDA workflow",
72-
"step1Description": "Using the Envelopes:list API method, check that template is imported to the account, otherwise give an ability to download needed template.",
73-
"step2Description": "Using the WorkflowManagement:create API method, create a workflow definition with all the data from the template.",
74-
"step3Description": "Using the WorkflowManagement:publish API method, publish the created workflow definition to the account to make it visible and usable."
71+
"mainDescription": "This scenario creates a new workflow definition in the user's account. These workflows depend on eSignature templates that need to exist in the user's account before the workflows can be created. If the necessary templates do not exist in the user's account, the sample app will prompt them to download the relevant template definitions and create them in their account.",
72+
"step1Description": "The WorkflowManagement: createWorkflowDefinition method is used to create a new workflow definition in the user's account. The steps for this workflow are defined in the sample app's source code.",
73+
"step2Description": "After the new workflow definition has been created it needs to be published using the WorkflowManagement: publishOrUnPublishWorkflow method. Once the workflow has been published, new instances of that workflow can be triggered through the Trigger a workflow scenario."
7574
},
7675
"triggerWorkflow": {
77-
"mainDescription": "- Gets published workflow definitions from the account\n - Gets last run status of workflow definition used in this sample app\n - Triggers workflow definition",
78-
"step1Description": "Using the WorkflowManagement:getWorkflowDefinitions API method, gets workflow definitions created on user account and filters last published definitions used in this app.",
79-
"step2Description": "Using the WorkflowTrigger:triggerWorkflow API method, triggers chosen workflow definition with data parsed from the form"
76+
"mainDescription": "This scenario gets a list of published workflow definitions, gets the status of the last workflow instance triggered from each workflow definition, and triggers a new workflow instance.",
77+
"step1Description": "Display all of the workflow definitions in the user's account by calling the WorkflowManagment: getWorkflowDefinitions endpoint. Each row on this page represents a workflow definition.",
78+
"step2Description": "After the user chooses a workflow to trigger, the next step is to get the workflow definition by calling the WorkflowMangement: getWorkflowDefinition endpoint. The response for this API call includes a triggerURL property that will be used in the next step.",
79+
"step3Description": "Finally, call the WorkflowTrigger: triggerWorkflow endpoint to trigger the workflow instance. The response of this call includes the workflowInstanceUrl where the workflow participant can complete the workflow steps."
8080
},
8181
"manageWorkflow": {
82-
"mainDescription": "- Gets triggered workflow instances of sample app workflow definitions\n - Gets status of workflow instances created using Trigger Workflow functionality\n - Cancels chosen workflow instance",
83-
"step1Description": "Using the WorkflowInstanceManagement:getWorkflowInstances API method, gets workflow instances triggered from workflow definition used for this sample app and filters only created in this user session4.",
84-
"step2Description": "Using the WorkflowInstanceManagement:getWorkflowInstance API method, gets the status of the chosen workflow instance.",
85-
"step3Description": "Using the WorkflowInstanceManagement:cancelWorkflowInstance API method, cancels the chosen workflow instance."
82+
"mainDescription": "This scenario displays a list of workflow instances, the status of those instances, and the option to cancel them.",
83+
"step1Description": "The WorkflowInstanceManagement: getWorkflowInstances endpoint is called to get a list of the workflow instances that have been triggered by the sample app.",
84+
"step2Description": "To get the status of a given workflow instance, the WorkflowInstanceManagement: getWorkflowInstance method is called.",
85+
"step3Description": "If a user chooses to cancel a workflow instance, the WorkflowInstanceManagement: cancelWorkflowInstance method is called."
8686
}
8787
},
8888
"workflowList": {
89-
"doNotHaveWorkflow": "You don't have any workflows",
89+
"doNotHaveWorkflow": "You do not have any workflows in your account",
9090
"columns": {
9191
"lastRunStatus": "Status of last run",
9292
"workflowName": "Workflow name",
@@ -95,25 +95,25 @@
9595
},
9696
"pageTitles": {
9797
"manageWorkflow": "Manage workflows",
98-
"triggerWorkflow": "Trigger a workflow"
98+
"triggerWorkflow": "Trigger a workflow instance"
9999
},
100100
"popups": {
101101
"workflowTriggered": {
102-
"title": "Workflow Triggered",
103-
"description": "To complete the workflow steps click the button below"
102+
"title": "Workflow triggered",
103+
"description": "To complete the workflow steps, select Continue"
104104
},
105105
"workflowDefinitionCreated": {
106106
"publish": {
107-
"description": "To publish the workflow, proceed with the button below",
108-
"button": "Publish the workflow"
107+
"description": "To publish the workflow, proceed with the Publish button",
108+
"button": "Publish"
109109
},
110110
"published": {
111111
"title": "Done",
112112
"description": "Workflow successfully published"
113113
},
114114
"error": {
115-
"title": "Workflow creation was unsuccessful",
116-
"button": "Download Template"
115+
"title": "Workflow creation was unsuccessful; your account is missing the required workflow template",
116+
"button": "Download the template"
117117
}
118118
}
119119
},
@@ -123,18 +123,18 @@
123123
"behindTheScenes": "Behind the scenes",
124124
"continue": "Continue",
125125
"cancel": "Cancel",
126-
"createWorkflow": "Create a new workflow ->",
126+
"createWorkflow": "Create new workflow ->",
127127
"triggerWorkflow": "Trigger workflow",
128128
"triggerNewWorkflow": "Trigger new workflow ->",
129129
"updateWorkflow": "Update workflow status",
130130
"cancelWorkflow": "Cancel workflow",
131-
"getStarted": "Get Started",
132-
"moreInfo": "More Info",
131+
"getStarted": "Get started",
132+
"moreInfo": "More info",
133133
"backHome": "← Back to home"
134134
},
135135
"links": {
136136
"github": "https://github.com/docusign/sample-app-mymaestro-node",
137137
"createsandbox": "https://go.docusign.com/o/sandbox/",
138138
"learnmore": "https://developers.docusign.com/"
139139
}
140-
}
140+
}

client/src/components/Popups/CreateWorkflowMoreInfo/CreateWorkflowMoreInfo.jsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ const CreateWorkflowMoreinfo = () => {
2424
<p>{textContent.behindTheScenes.createWorkflow.step1Description}</p>
2525
<h4>{textContent.behindTheScenes.titles.step2}</h4>
2626
<p>{textContent.behindTheScenes.createWorkflow.step2Description}</p>
27-
<h4>{textContent.behindTheScenes.titles.step3}</h4>
28-
<p>{textContent.behindTheScenes.createWorkflow.step3Description}</p>
2927
</div>
3028
</div>
3129
);

client/src/components/WorkflowDescription/BehindTheScenes/TriggerBehindTheScenes.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ const TriggerBehindTheScenes = () => {
2222
<p>{textContent.behindTheScenes.triggerWorkflow.step1Description}</p>
2323
<h4>{textContent.behindTheScenes.titles.step2}</h4>
2424
<p>{textContent.behindTheScenes.triggerWorkflow.step2Description}</p>
25+
<h4>{textContent.behindTheScenes.titles.step3}</h4>
26+
<p>{textContent.behindTheScenes.triggerWorkflow.step3Description}</p>
2527
</div>
2628
);
2729
};

0 commit comments

Comments
 (0)