Giter VIP home page Giter VIP logo

signdocs's Introduction

Splash banner

Overview | Features | Stack | Wiki | Styling

Overview

SignDocs allows users to digitally sign documents, send those documents to others for signature, and track who has not yet signed. A user can create a digital representation of their signature by either using a selection of fonts or by using a trackpad/mouse. To prepare a document for signatures, users can upload a PDF or Word document and then drag and drop different types of fields onto the document for their signatories to fill out. They can then route the document directly to their signatories' email and track completion.

Features

Signature development

Choose your style

A signature is an expression of one's personality, and demands more than choosing a dry sans-serif font to make their mark. SignDocs gives users a more diverse collection of typefaces to choose from to add a personal touch.

Customize signature 1

Write your own autograph

Alternatively, users can draw their signature directly by using a mouse or trackpad.

Customize signature 2

Document preparation

After uploading a document and adding signatories, users can drag-and-drop content fields onto the document which will later be filled with signatories' personal information. This can be their signature or text, such as the current date or their name. The content fields are assigned to specific users, so only they can fill out that information. Once they've reviewed the document, signatories can simply click the Sign button and apply their signature, and the document owner will be notified.

Document Preparation

Stack used

Backend

  • Ruby on Rails (5.2.3)
  • PostgreSQL DB
  • AWS S3 (document and image storage)

Frontend

  • React with Redux for local state management

Select libraries used

Styling

A little elevation

Users want to immediately know what surfaces they can interact with. A small elevation change makes all the difference. Inspired by Material Design.

Lower contrast, more whitespace

Black text on a white background can be too harsh. SignDocs takes inspiration from this NSFW website and sets the background color to an off-white, and main text to a very dark blue. Hover states are demure, enough to show a reaction without shocking.

signdocs's People

Contributors

philgresh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

signdocs's Issues

Expand "preview" sidebar

  • Split doc into pages and get previews for each
  • Also use in prep/sign components
  • Allow clicking to open full doc to that page

Add feedback snackbar

  • Successful document upload
  • Successful password-reset email sent
  • Successful signature change
  • Applying content fields to documents ?

Change editors to assignees

Revise code and wiki for consistency

  • Change all mentions of editor to assignee in backend
  • Change all mentions of editor to assignee in frontend
  • Change all mentions of editor to assignee in wiki

PA Review: User Auth

PA Review: User Auth

  • Backend: DB, model, controller, views
  • Redux Loop: ajax, actions, reducer
  • Presentational Components and Containers
  • Styling
  • Smooth, bug-free navigation
  • Adequate and appropriate seeds

Functionality

  • Can sign up a user
  • Can sign in as a user
  • Can log out a user
  • Errors should display for both /signup and /login.
  • Errors should clear when moving between /signup and /login.
  • If logged in, should not be able to visit /login or /signup
  • If logged in, should be able to refresh the page and still be logged in
  • Demo user can log in
  • Demo user can log out

Finalized signatures do not work well

  • Drawn signature files (SVG) are off-axis from the seal
    • Need to convert SVG to PNG first, then try to embed
  • Chosen-font signatures are embedded without the chosen font
    • Seals also do not use Roboto

Add select/focus to CFs in document/prepare

  • Add select/focus code
  • Add deselect/click-off code
  • Add code to let user hit tab to change between focused CFs
  • Add styling indicating a content field is selected
  • Only show delete/move icons if selected
  • Allow incremental movement with arrow keys if selected

Project Proposal

Wiki Page Home

  • Is the first page you see upon entering the wiki
  • Contains a welcome message
  • Contains a link/placeholder for a link to the live page
  • All links in the right sidebar should contain each wiki page and link to the correct page
  • Correctly formatted
    • each wiki page is listed in bullet points
    • all links route the correct page

Comments


MVP List

  • Should have 7 MVPs.
    • 3 of those are User Auth, Heroku, and Production README.
    • The other 4 are from the MVP List or they have clarified them with you
  • Contains a description sentence of the app
  • Includes two to three detailed bullets on functionality and presentation of feature
  • At least one CRUD feature, which states what CRUD operations are planned (creation, reading, updating, deletion)
  • Estimates how long it will take the code each MVP
  • Correctly formatted
    • MVPs are listed in an ordered list
    • Each MVP is broken down into bullet points

Comments


Database Schema

  • Contains correct datatypes
  • Contains appropriate constraints/details
    • primary key
    • not null
    • unique
    • indexed
    • foreign key
  • Contains bullet points after the table that state which foreign keys will reference to which table, or references to the associations which will be made
    • foreign key and table name are lowercased, snake_cased and back_ticked
  • Correctly formatted
    • schema is written in a table format
    • the table's name are lowercased, snake_cased and back_ticked
    • the table header column names are bolded
    • columns names are lowercased and snaked_cased and back_ticked

Comments

  • for editor_ids, it looks you're planning to use an array as datatype. My concern is that it sort of denormalizes your state. What about having a joins table for editors that would link an owner with an editor?

Sample State

  • State shape is flat!
  • State's keys are camelCased
  • All keys within the values in the state are accessible in the schema
  • Correctly formatted
    • Sample state is rendered with triple backticks, and the language ```javascript...```). This will display the state as a code block instead of a giant line of text
    • Top level slices
      • entities
      • session
      • errors (here or in ui)
      • ui (if needed)
    • Should NOT have nested slices, aka comments inside of posts
      • Some info from other tables is ok, for instance:
        • the author username and imageurl for a post. basically any info that the user can't change
        • like count and a boolean on whether the user likes the post instead of a likes slice

Comments

  • for session slice of state, the currentUser is probably an id?

Backend Routes

  • Contains the following sections: HTML, API Endpoints(Backend)
  • Each route has a description
  • API Endpoint routes contains wildcard variables written in snake_case
  • Routes does not contain superfluous routes
  • Have API routes that will allow the front end to get all info it needs and does not have unneeded routes:
    • probably doesn't need a GET likes api endpoint because that info comes through the post show

Comments

  • once you've decided what to do with sentinel blocks, your routes for that will probably change.

Frontend Routes

  • Frontend routes contains wildcard variables written in camelCase
  • Correctly formatted
    • Routes are displayed with inline coding text (backticks)

Comments

# PA Review: Document upload, storage, and download

  • Backend: DB, model, controller, views
  • Redux Loop: ajax, actions, reducer
  • Presentational Components and Containers
  • Styling
  • Smooth, bug-free navigation
  • Adequate and appropriate seeds

Functionality

  • User can view an index page of all documents (/documents)
    • Each item in the list links to that document's show page
    • Each item in the list shows some basic information about the document
    • Page is styled
      • The page has a header
      • If no documents are available, a prompt is shown instead to create one (requires deleting seed data)
  • Each document has a show page (/documents/:docId)
    • The page displays user-entered information about the document
    • The page has a button to view/download the document
      • The generated link expires after 5 minutes
    • If the user is the owner of the document:
      • The page has a link to the edit page for that document
      • The page has a button to delete the document
        • Clicking the delete button displays an alert for confirmation
        • Rejecting the confirmation does not run the deletion
        • Confirming the delete redirects the user to the index page
    • Page is styled
  • User can create a new document (/documents/new)
    • Submitting a document successfully redirects the user to the show page
    • Page is styled
      • Required/optional fields are clearly marked
      • Errors are shown by the appropriate field
      • On click, submit button is disabled and displays a 'loading' state
  • User can edit an existing document that they own (/documents/:docId/edit)
    • Page reuses form for create
    • Edits limited to title, description (i.e. not uploading a new file)
  • Files are hosted by AWS S3
    • Production S3 bucket is not publicly accessible
      Document owners can create longer-expiration presigned urls to share with external parties
  • Signed-out users do not have access to /documents or its children (test with Postman)
  • Signed-out users cannot create or destroy documents (test with Postman)

TODO to improve upon the above

  • Add a modal to confirm document deletions
  • Add a drag-and-drop area to add a file to a document
  • The show page has a button to create a publicly-visible link to the document file
  • The create/edit page form fields should be validated
    • Client-side validation prevents unnecessary post requests
    • Filesize/filetype restrictions are clearly marked
    • Until validated, submit button is disabled
  • Dropzone for file upload

PA Review: Signature creation

PA Review: Signature creation

  • Backend: DB, model, controller, views
  • Redux Loop: ajax, actions, reducer
  • Presentational Components and Containers
  • Styling
  • Smooth, bug-free navigation
  • Adequate and appropriate seeds

Functionality

  • All users have a default signature created based on their name (given on sign-up) and is initially a random font
  • User can view a signature component on their profile page (/profile)
    • User can access this page from a drop-down menu or clicking on their signature on the main page
    • User can edit their own signature on that page (no explicit edit route)
  • User can draw a likeness of their signature using a mouse
    • User can clear a drawing of a signature
  • User can choose a font/style to act as their signature
    • Fonts must be open-licensed
  • Signatures are persisted throughout the session and saved to the database
  • Signature "seals" bear the fingerprint of the user's unique cryptographic key

TODO to improve upon the above

  • Add a modal for this component
  • Add a feature to erase part of a drawing or undo
  • Add a color picker to customize the color of the signature

Hello,

    Hello,

I have followed the instructions still the app is not opening

Lock down authorization

  • Only allow editing of documents of which you are a owner
  • Only allow viewing documents of which you are a signatory
  • Only allow signing if you are a signatory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.