Design a electronic signature system like DocuSign / EasySign.

Medium
Company: Premium
GoogleAmazonUber

Let's design a simplified electronic signature system, reminiscent of DocuSign or EasySign. The core idea is to allow users to upload documents, define signature locations, and send these documents to recipients for signing. We'll focus on the server-side logic, specifically the object-oriented design, extensibility, and concurrency aspects of the system. This isn't just about making things "work"; it's about building a robust and maintainable system that can evolve.

Imagine a scenario where a user (the sender) uploads a contract. This contract is then associated with a "workflow". The workflow defines the sequence of signers, the positions where they need to sign on the document, and any notifications that need to be sent. The system must be able to track the state of the document (e.g., "Draft", "Sent", "Signed", "Rejected") and handle different signature types (e.g., typed signature, uploaded image). We want to design this with clear separation of concerns, allowing for easy addition of new signature types or workflow steps in the future.

Requirements

Think like an Architect

Before revealing the requirements, imagine you're in the interview right now."How would you clarify the scope with your interviewer?"

Premium Content

View detailed solutions.

UNLOCK PREMIUM