diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..4589c78bd --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,102 @@ +{ + "projectName": "OpenSign", + "projectOwner": "OpenSignLabs", + "files": [ + "README.md" + ], + "commitType": "docs", + "commitConvention": "angular", + "contributorsPerLine": 7, + "contributors": [ + { + "login": "ajakov", + "name": "Aleksandar Jakovljevic", + "avatar_url": "https://avatars.githubusercontent.com/u/2115393?v=4", + "profile": "https://aleksandarjakovljevic.com/", + "contributions": [ + "code" + ] + }, + { + "login": "nxglabs", + "name": "Amol", + "avatar_url": "https://avatars.githubusercontent.com/u/5486116?v=4", + "profile": "https://github.com/nxglabs", + "contributions": [ + "code" + ] + }, + { + "login": "BuilderPrid", + "name": "Priyanshu Dwivedi", + "avatar_url": "https://avatars.githubusercontent.com/u/106882895?v=4", + "profile": "https://github.com/BuilderPrid", + "contributions": [ + "code" + ] + }, + { + "login": "Tashuuuu", + "name": "Akriti Sengar", + "avatar_url": "https://avatars.githubusercontent.com/u/85075827?v=4", + "profile": "https://github.com/Tashuuuu", + "contributions": [ + "code" + ] + }, + { + "login": "parthrc", + "name": "Parth Chawande", + "avatar_url": "https://avatars.githubusercontent.com/u/101104958?v=4", + "profile": "https://github.com/parthrc", + "contributions": [ + "code" + ] + }, + { + "login": "Rishabh-git10", + "name": "Rishabh Dewangan", + "avatar_url": "https://avatars.githubusercontent.com/u/107680241?v=4", + "profile": "https://github.com/Rishabh-git10", + "contributions": [ + "code" + ] + }, + { + "login": "LemonDrop847", + "name": "Nitin Mishra", + "avatar_url": "https://avatars.githubusercontent.com/u/106615670?v=4", + "profile": "https://github.com/LemonDrop847", + "contributions": [ + "code" + ] + }, + { + "login": "Jobin-S", + "name": "Jobin Selvanose", + "avatar_url": "https://avatars.githubusercontent.com/u/63976083?v=4", + "profile": "http://jobinselvanose.com", + "contributions": [ + "doc" + ] + }, + { + "login": "HansF", + "name": "Hans Fraiponts", + "avatar_url": "https://avatars.githubusercontent.com/u/1503?v=4", + "profile": "https://github.com/HansF", + "contributions": [ + "doc" + ] + }, + { + "login": "Monilprajapati", + "name": "Monil Prajapati", + "avatar_url": "https://avatars.githubusercontent.com/u/99136041?v=4", + "profile": "http://linktr.ee/monilprajapati", + "contributions": [ + "code" + ] + } + ] +} diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..7ca014a84 --- /dev/null +++ b/.env.example @@ -0,0 +1,49 @@ +# Frontend config ************************************************************************************************************************************************************************************************ +# Set CI to false while running the app locally +CI=false +# Set it to the URL form where the app home page will be accessed +PUBLIC_URL=https://app.opensignlabs.com/ +# Set it to true if you want to generate the Sourcemap for debugging +GENERATE_SOURCEMAP=false +# Set it to the URL from where APIs will be accessible, for local development it should be localhost:3000/api/app (use your local port number instead) +REACT_APP_SERVERURL=https://app.opensignlabs.com/api/app +# A 12 character long random app identifier. The value of this should be same as APP_ID which is a variable used by backend API. +REACT_APP_APPID=aDsADsqweqwe +# Google tag manager container id for configuring GTM on all pages of the app +REACT_APP_GTM=GTM-123N7LD + +# Backend ExpressJS config **************************************************************************************************************************************************************************************** +# A 12 character long random app identifier. The value of this should be same as REACT_APP_APPID which is a variable used by Frontend React App. +APP_ID=aDsADsqweqwe +# Name of the app. It will be visible in the verification emails sent out. +appName=open_sign_server +# A 12 character long random secret key that allows access to all the data. It is used in Parse dashboard config to view all the data in the database. +MASTER_KEY=XnAadwKxxByMr +# Mongodb URI to connect to +MONGODB_URI=mongodb://username:password@localhost:27017 +# Path on which APIs should be mounted. Do not change this. This variable shall be removed & value hardcoded in the source code in coming versions. +PARSE_MOUNT=/app +# Set it to the URL from where APIs will be accessible to the NodeJS functions, for local development it should be localhost:3000/api/app (use your local port number instead) +SERVER_URL=https://app.opensignlabs.com/api/app + +# Storage config ************************************************************************************************************************************************************************************************ +# Digital ocean space name or AWS S3 bucket name for uploading documents +DO_SPACE=DOSPACENAME +# Digital ocean spaces endpoint or AWS S3 endpoint for uploading documents +DO_ENDPOINT=ams3.digitaloceanspaces.com +# Digital ocean baseurl or AWS S3 base URL +DO_BASEURL=https://DOSPACENAME.ams3.digitaloceanspaces.com +# Digital ocean spaces access key ID or AWS s3 Access key ID for uploading the docs +DO_ACCESS_KEY_ID= +# Digital ocean spaces secret access key or AWS s3 secret access key for uploading the docs +DO_SECRET_ACCESS_KEY= +# Digital ocean spaces region or AWS s3 region +DO_REGION=us-west + +# Email mailgun config (The app will not initialize if any of these 3 variables are not set) ********************************************************************************************************************* +MAILGUN_API_KEY= +MAILGUN_DOMAIN=mail.yourdomain.com +MAILGUN_SENDER=postmaster@mail.yourdomain.com + +# Base64 encoded PFX or p12 document signing certificate file ********************************************************************************************************************* +PFX_BASE64= diff --git a/.env.frontend_dev b/.env.frontend_dev new file mode 100644 index 000000000..d36422a82 --- /dev/null +++ b/.env.frontend_dev @@ -0,0 +1,14 @@ +# Clone the repo and rename this file to .env if you want to run the frontend react app locally for some quick contributions to the project. +# When used as it is, this env config will connect to our hosted UAT backend +# Note that any data in staging will get cleared from time to time and you may have to sign up again and again + +# Set CI to false while running the app locally +CI=false +# Set it to the URL form where the app home page will be accessed +PUBLIC_URL=http://localhost:3000 +# Set it to true if you want to generate the Sourcemap for debugging +GENERATE_SOURCEMAP=false +# Set it to the URL from where APIs will be accessible, for local development it should be localhost:3000/api/app (use your local port number instead) +REACT_APP_SERVERURL=https://staging-app.opensignlabs.com/api/app +# A 12 character long random app identifier. The value of this should be same as APP_ID which is a variable used by backend API. +REACT_APP_APPID=opensignstgn diff --git a/INSTALLATION.md b/INSTALLATION.md index 16a49397a..360ca5492 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -1,7 +1,7 @@ # INSTALLATON INSTRUCTIONS -You can use our app as a cloud version from [OpenSignLabs](www.opensignlabs.com) +You can use our app as a cloud version from [OpenSignLabs](https://www.opensignlabs.com) or follow below instructions to install it on your own infrastructure. diff --git a/README.md b/README.md index 272bb9306..70c3b4ae4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ The free open source alternative to DocuSign | PandaDoc | SignNow | Adobe Sign | Smartwaiver | SignRequest | HelloSign | Zoho sign. +[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/opensignlabs/opensign.svg)](http://isitmaintained.com/project/opensignlabs/opensign "Average time to resolve an issue") + +[![All Contributors](https://img.shields.io/github/all-contributors/opensignlabs/opensign?color=ee8449&style=flat-square)](#contributors) + Website   •   Docs @@ -93,3 +97,33 @@ OpenSign is licensed under the AGPL License. For more details, see the [LICENSE] We would like to thank all our contributors and users for their support and feedback. Special thanks to [OpenSignLabs](https://github.com/OpenSignLabs) for spearheading this initiative. --- + +## Contributors + + + + + + + + + + + + + + + + + + + + + +
Aleksandar Jakovljevic
Aleksandar Jakovljevic

💻
Amol
Amol

💻
Priyanshu Dwivedi
Priyanshu Dwivedi

💻
Akriti Sengar
Akriti Sengar

💻
Parth Chawande
Parth Chawande

💻
Rishabh Dewangan
Rishabh Dewangan

💻
Nitin Mishra
Nitin Mishra

💻
Jobin Selvanose
Jobin Selvanose

📖
Hans Fraiponts
Hans Fraiponts

📖
Monil Prajapati
Monil Prajapati

💻
+ + + + + + diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 000000000..4a0c91c02 --- /dev/null +++ b/USAGE.md @@ -0,0 +1,6 @@ +The community is working hard to put together a great usage guide. +You will soon see one of the best usage guides here. + +Till then you can view the quick promo video by clicking the link below - + +[](https://www.youtube.com/watch?v=szYaBZhXZNo "OpenSign promo") diff --git a/apps/OpenSign/src/json/FormJson.js b/apps/OpenSign/src/json/FormJson.js index e31b1fe03..e7276a9a4 100644 --- a/apps/OpenSign/src/json/FormJson.js +++ b/apps/OpenSign/src/json/FormJson.js @@ -123,7 +123,7 @@ export const formJson = (id) => { Name: { type: "string", title: "Title", - maxLength: 50 + maxLength: 100 }, Description: { type: "string", diff --git a/apps/OpenSign/src/redux/actions/index.js b/apps/OpenSign/src/redux/actions/index.js index 1901f16c4..8a5734ef9 100644 --- a/apps/OpenSign/src/redux/actions/index.js +++ b/apps/OpenSign/src/redux/actions/index.js @@ -8,8 +8,10 @@ export const fetchAppInfo = (str, burl, app_id) => async (dispatch) => { Parse.initialize(app_id); const response = appInfo; - let _base = response.baseurl.charAt(response.baseurl.length - 1); - localStorage.removeItem("baseUrl"); + let _base = ""; // Define _base here and initialize it to an empty string + if (response && response.baseurl) { + _base = response.baseurl.charAt(response.baseurl.length - 1); + } localStorage.removeItem("baseUrl"); localStorage.setItem("_appName", response.appname); localStorage.setItem("_app_objectId", response.objectId); if (_base === "/") { diff --git a/apps/OpenSign/src/routes/Login.js b/apps/OpenSign/src/routes/Login.js index 6477d1193..8eea2dba7 100644 --- a/apps/OpenSign/src/routes/Login.js +++ b/apps/OpenSign/src/routes/Login.js @@ -1,4 +1,4 @@ -import React, { Component } from "react"; +import React, { Component, useState } from "react"; import Parse from "parse"; import "../styles/toast.css"; import "../styles/loader.css"; @@ -17,6 +17,7 @@ class Login extends Component { toastColor: "#5cb85c", toastDescription: "", password: "", + passwordVisible: false, mobile: "", phone: "", OTP: "", @@ -1009,9 +1010,14 @@ class Login extends Component { return ; } - const { email, password } = this.state; + const { email, password, passwordVisible } = this.state; let image = this.props.appInfo.applogo; let settings = this.props.appInfo.settings || undefined; + const togglePasswordVisibility = () => { + this.setState((prevState) => ({ + passwordVisible: !prevState.passwordVisible + })); + }; return (
{settings && @@ -1061,14 +1067,30 @@ class Login extends Component { />
- +
+ + + {passwordVisible ? ( + // Close eye icon + ) : ( + // Open eye icon + )} + +
diff --git a/microfrontends/SignDocuments/src/Component/LegaDrive/FolderDrive/legaDriveComponent.js b/microfrontends/SignDocuments/src/Component/LegaDrive/FolderDrive/legaDriveComponent.js index 20e0ce2c3..93ce5b94f 100644 --- a/microfrontends/SignDocuments/src/Component/LegaDrive/FolderDrive/legaDriveComponent.js +++ b/microfrontends/SignDocuments/src/Component/LegaDrive/FolderDrive/legaDriveComponent.js @@ -221,7 +221,7 @@ function PdfFileComponent({ // console.log("download") const pdfName = data && data.Name; const pdfUrl = data && data.SignedUrl ? data.SignedUrl : data.URL; - saveAs(pdfUrl, `${pdfName}_signed_by_opensign.qik.ai.pdf`); + saveAs(pdfUrl, `${pdfName}_signed_by_OpenSign™.pdf`); } else if (selectType === "Rename") { // console.log("rename") setRenameValue(data.Name); diff --git a/microfrontends/SignDocuments/src/Component/component/defaultSignature.js b/microfrontends/SignDocuments/src/Component/component/defaultSignature.js index 6a1906ba4..cd0385ac5 100644 --- a/microfrontends/SignDocuments/src/Component/component/defaultSignature.js +++ b/microfrontends/SignDocuments/src/Component/component/defaultSignature.js @@ -111,7 +111,7 @@ function DefaultSignature({ ) : (
- You didn't add your default signature yet! + Click a signature placeholder to start signing the document!
)}
diff --git a/microfrontends/SignDocuments/src/Component/component/emailComponent.js b/microfrontends/SignDocuments/src/Component/component/emailComponent.js index e866263e0..722e2582d 100644 --- a/microfrontends/SignDocuments/src/Component/component/emailComponent.js +++ b/microfrontends/SignDocuments/src/Component/component/emailComponent.js @@ -143,7 +143,7 @@ function EmailComponent({ //handle download signed pdf const handleDownloadPdf = () => { - saveAs(pdfUrl, `${pdfName}_signed_by_opensign.qik.ai.pdf`); + saveAs(pdfUrl, `${pdfName}_signed_by_OpenSign™.pdf`); }; return ( diff --git a/microfrontends/SignDocuments/src/Component/component/header.js b/microfrontends/SignDocuments/src/Component/component/header.js index 22cd2d671..a6c36f6bd 100644 --- a/microfrontends/SignDocuments/src/Component/component/header.js +++ b/microfrontends/SignDocuments/src/Component/component/header.js @@ -67,7 +67,7 @@ function Header({ const handleDownloadPdf = () => { const pdfName = pdfDetails[0] && pdfDetails[0].Name; - saveAs(pdfUrl, `${pdfName}_signed_by_opensign.qik.ai.pdf`); + saveAs(pdfUrl, `${pdfName}_signed_by_OpenSign™.pdf`); }; return (