The DocuFiler login page authenticates the user using Google Firebase and typingDNA AUTO API that authenticates using user typing patterns.
The user information section allows users to add/edit user information. This information will be used to automatically fill PDFs.
The DocuFiler section takes the Anvil template ID and fills user information using Anvil's PDF Filling API.
The app downloads and displays a filled out PDF for the user to verify and share externally.
The DocuFiler section also requires an email to authenticate the user to ensure user authenticity when signing documents.
Another example of a document filled by Anvil's PDF Filling API saved to the device.
DocuFiler was inspired by our mutual experiences as executive board members in organizations on our university campus. For events and outings, we were required to have waivers for the school and event space. This meant handing out the papers and pens, waiting, to then collecting them and verifying that everyone was signed up before an event could actually start. For an organization of 40+ people hosting an event open to the student body, we could easily use 100+ documents, which is pricey to print on campus. This constant frustration ate into time and budgets, and the forms were repetitive in nature. This inspired us to create a secure base profile, saved to easily sign documents.
We realized that this could have implications beyond just in person events. Keeping organizations running during COVID has been difficult without physical meetings, and needing to keep documents up to date with the school means scanning and sharing completed forms. Some of our positions required contracts with outside vendors, so flexibility in the types of documents handled was another key requirement for us.
With all this in mind, we wanted to create a platform that could be used for any Anvil documents, across the most common mobile device platforms, without fear that your information could be used or accessed without your consent, by persistent type authentication via TypingDNA.
What it does
DocuFiler is a mobile application that allows users to automatically fill and share PDFs. From anything like non-disclosure agreements to gym membership forms, DocuFiler can help fill documents out more quickly and save all completed PDF’s all in one place to share externally.
As a user logs in, they are able to authenticate their account with the usual username/password combination, while simultaneously providing them with a second layer of verification as they utilize the app with the help of TypingDNA. After being logged in, the user can enter their information, and in the process of populating the fields, their typing biometrics are recorded and analyzed.
Once a user profile has been created, it is encrypted and saved. DocuFiler can fill out any document with an Anvil PDF template ID and a TypingDNA authenticated email. This ensures that only one person can utilize a given account to sign documents, because prior to the PDF being filled out and returned to the phone the user must be authenticated against their TypingDNA profile. Once a PDF has been populated, it is saved to the phone and displayed to the user for review. The completed document can then be shared externally via email or other social media apps.
DocuFiler has real world business applications by cutting down on the man-hours, printing associated costs, and the organized storage for completed documents. The environmental impact of decreasing paper usage across industries could help increase the amount of CO2 being sequestered in tree biomass. The security benefits of guaranteeing that a user must have actively participated in signing the forms digitally helps add protections for organizations and users, while supporting current business practices in a COVID impacted social environment.
How we built it
The application was built with Google's flutter framework. This meant that the app could be programmed in the Dart programming language and be deployed for both Android and iOS. We used Google Firebase to store app data in a NoSQL manner. TypingDNA’s iOS and Android recorders were implemented with encrypted user biometrics in tandem with Google Firebase to automatically two-factor authenticate users via the TypingDNA Auto API. Finally the Anvil PDF Filling API was used to populate and download PDFs with encrypted user data.
Challenges we ran into
Using a relatively new framework like Flutter presented many challenges when it came to the development and deployment of the application.
Although setting up the user interface of the application was relatively easy, we encountered our first challenge when it came to implementing typingDNA’s front end recorder. Since they had a separate recorder for android and iOS, our team had to hack together a front end recorder in the form of a package that would be compatible with Flutter. This was a significant challenge, and allowed us to read the user’s typing patterns in order to authenticate them.
Our second major challenge was apparent when we started to implement Anvil’s REST API. Although making REST API calls was easy, we initially had issues not being able to download the PDF. However, once we overcame that issue, we then had to implement multiple permission handlers to provide the application access to the internal device storage. Not having the permission handlers caused the application to crash and was a major roadblock.
We think our biggest challenge came in the form of our experience. Since this is only our second hackathon, it was important for us to learn that we couldn't program all that we’d envisioned before the end of the hackathon. We therefore had to prioritize essential features and limit the scope of our project to ensure the app was fully functional.
A challenge we were unable to solve was leveraging TypingDNA to authenticate a user’s signature in tandem with Anvil’s Etch E-sign API. With more developers or time, we believe that we could definitely implement the other Anvil APIs, but it may require another custom package to interface across Flutter.
Accomplishments that we're proud of
- Creating a custom Flutter package to interface TypingDNA’s capabilities across IOS and Android
- Leveraging Anvil’s filling API to create signed PDFs and display them to the user
- Authenticating and encrypting users and their information at every step of the profile building and PDF filling processes
What we learned
Security is very important to users especially when it comes to their personal information. During this process, we learned a lot about the capabilities offered by Anvil and TypingDNA. When using TypingDNA, it was evident that with the superpower of authenticating users by how they type, we could allow for the filling of documents with verified user authentication. Similarly, Anvil’s document templating options along with their plethora of API options make working with PDFs extremely easy. Generating templates to automatically fill PDFs has applications in every sector, and the security offered by a system verifying users by their typing biometrics could become ever more important as technology increasingly becomes ubiquitous.We believe wider adoption of Anvil’s software would allow for a variety of applications that can make manual PDF filling a thing of the past.
What's next for DocuFiler
To pursue DocuFiler further, we believe that it will be necessary to be able to add connections to other people and add them to groups or organizations within the app. Preferably we would like to associate each user with a QR code, as well as the documents themselves. QR codes could then be displayed digitally or printed out, facilitating the distribution of documents and connections for any environment.
Currently it is not possible to share signed files within the app, but with the ability to connect users together, we could make signing and returning forms an automatic and painless process. We hope that with these functionalities, the app could be marketed for individuals to use for anything from tax documents to signing their child’s school field trip form. For businesses we envision this becoming an industry standard in document management, utilizing the organizations feature to streamline HR practices, event management, and beyond. This could be a tiered subscription service, or even potentially tailored for specific companies via SaaS marketing.
By including the other Anvil API services, we could implement the ability to take a picture of a pdf, or create one in the app, and then generate a template to be shared. A collaborative goal would be to utilize TypingDNA as a signature provider for Anvil. We think this would be a seamless user experience.