FullContact API Client
A way to query FullContact's Person API in a batched, sane way.
- Ensure that nodejs and npm are installed. If developing on a Mac, I recommend using Homebrew to install these dependencies.
- Run
npm install
to install the nodejs dependencies - Run
npm start
to run the app
This should make the client run. To develop further, you'll need a FullContact API key. This can be obtained from their developer portal.
Additionally, you'll need some sample e-mails. This client was built to take a simple CSV file as an input with all e-mails separated either by column or by row (consistently, whichever path is chosen).
- Run
npm run build-mac
- Visit the
bin/macOS/fullcontact-electron-darwin-x64
directory and findfullcontact-electron.app
. This can be distributed to other users as a complete package. - Place
fullcontact-electron.app
in theApplications
directory of the target Mac. - You should now be able to run the app normally on that Mac.
Note: There are several caviats here:
- These instructions are for building for macOS on a Mac. You may have to figure out how to build on your target machine on your own. To do so, I recommend using electron-packager.
- The binary for
electron-packager
may need to be installed globally in order to runstep 1
above. To do this, runnpm install -g electron-packager
There are several areas that are desparate for contributions here. This was a very quick and dirty app, so pull requests are certainly welcome.
The two major files that matter are:
js/csv_parser.js
js/io.js
io.js
is responsible for handling all I/O operations, including web requests, button clicks, and output to the web view.
csv_parser.js
handles all parsing of the FullContact People API. It outputs 8 different CSV files that can be linked via the requestId
column.
of each file.
- UX/UI -- There is zero user feedback when a request is made or an error happens. Even a simple modal implementation will go a long way. Also, admittedly, it's not a very pretty app. Some design TLC would be helpful.
- Error Handling -- There is no solid error handling with the app. It simply just doesn't respond and throws an error in the JS console. It would be nice to give this feedback back to the user.
- Default Start without Debug Console -- For some reason, whenever the app is built, the Chromium debug console is active. This should be default-off.
- Automated Tests/CI -- There are currently no tests for this app. This would be handy for anyone that wants to make sure the app always works (especially for the csv_parser module, which gets a little hairy).
- Request Rate Limiting -- FullContact's Batch API only allows for 20 requests to be made at a time. This app splits the input CSV into sub-batches of 20 and requests each batch of 20 all at once. FullContact's simultaneous request limit is 600/min. A high enough number of e-mails will blow the top off of that limit, so a client side limit would be very nice.
- Documentation -- This file is the entirety of the documentation that exists, along with the steps that are laid out within the main app view.
- Additional FullContact API Client Implementations -- This client could be used for a whole host of different requests. Being able to use it as a multi-tool would be wonderful.
- Bugfixes -- I haven't found any bugs yet, but I know they're lurking. If you see it, fix it!