e-Sign Microservice is an open-source solution that allows businesses to securely sign documents online. This service is designed to offer more control, flexibility, and cost savings compared to third-party e-Signing services. Here is the article which talks about this implementation in detail: From Dependency to Autonomy: Building an In-House E-signing Service
- Securely sign documents.
- Secured artifacts (Signed PDF Documents) that can’t be tampered with after digital signing.
- Compliance with the e-Sign Act and Regulatory Standards.
- Cost-efficient and scalable.
- Channel-agnostic design for seamless integration across platforms.
- Built with a tech stack including Spring Boot, Java, MySQL and other cloud services.
RPReplay_Final1708437520.MP4
Screen.Recording.2024-02-21.at.2.26.28.PM.mov
Sample loan agreement: Master-Promissory-Note.pdf
- Java JDK 8 or higher
- MySQL
- AWS Account (for S3 storage)
-
Clone the repository: Use the command git clone https://github.com/iCreateWorks/esigning.git to clone the repository to your local machine.
-
Navigate to the project directory.
-
Install Maven dependencies: Run 'mvn install' to install the necessary dependencies.
-
Configure Environment Variables: Set up the required environment variables as described in the Environment Variables section.
-
Run the application: Execute java -jar target/esigning-0.0.1-SNAPSHOT.jar to start the service.
To run this project, you will need to set the following environment variables:
SPRING_ESIGN_DB_URL
: JDBC URL for the database.SPRING_ESIGN_DB_USER
: Database username.SPRING_ESIGN_DB_PASS
: Database password.S3_BUCKET_NAME
: S3 bucket name.S3_BUCKET_REGION
: S3 bucket region.
Following is the sample application.properties files, where environment variables have been replaced with actual sample values:
server.port=8081
server.servlet.context-path=/api/e-sign/v1
spring.esign.datasource.jdbc-url=jdbc:mysql://localhost:3306/e-sign?allowPublicKeyRetrieval=true&useSSL=false
spring.esign.datasource.username=e-sign
spring.esign.datasource.password=Password1
spring.esign.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.esign.datasource.minimumIdle=5
spring.esign.datasource.maxLifetime=120000
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.proc.param_null_passing=true
s3.bucket.name=esign-docs
s3.bucket.region=us-east-1
esign.entrust.keystore.passphrase=esignphasphrase
esign.entrust.cert.path=/jks/entrust.p12
esign.entrust.pdf.owner.password=esignpdfownerpassword