http://incommonapp.herokuapp.com
Application designed to search for the common investment Portfolio Companies (PC) between two Venture Capital (VC) firms and view the details of each PC.
Demonstrate my understanding of the following technologies after my time as a fellow at Hackbright Academy:
- Integrating an API
- Using persistent & non-persistent storage to maximize performance
- Web frameworks
- Templating languages
- Javascript, AJAX, and the jQuery library
- Front-end frameworks
- API: Crunchbase
- Persistent storage: PostgreSQL
- Non-persistent storage: Memcached
- Backend: Python
- Flask web microframework
- Jinja2 templating for Python
- Javascript (JQuery/AJAX) on the client
- CSS based on Twitter Bootstrap
- Memcache - to enhance performance and rid of unnecessary API calls
- Twitter's typeahead.js - provide search functionality for the 17,500+ VCs in Crunchbase's DB
- Responsive design
- First, clone this directory to your computer.
$ git clone https://github.com/carlydacosta/finalprojectiqt.git
- Create and activate a virtual environment in the same directory:
$ pip install virtualenv
$ virtualenv env
$ . env/bin/activate
- Install the required packages using pip:
(env)$ pip install -r requirements.txt
-
Get a Crunchbase API key - https://developer.crunchbase.com/
-
Run the server
python incommonapp.py
-
Browse the application at [http://localhost:5000]
- incommonapp.py: runs the program, contains the Flask routes
- class_objects.py: contains the VC, PC, and Crunchbase classes
- table_class_objects.py: contains the database table classes
- incommon.db: store user, VC and PC information
The biggest pain point in my experience of building this application revolved around getting and storing the data. The challenges:
- API constraint of 50 calls per minute
- My code blew through the constraint for just one VC and it's 50+ PCs
- Even if I called for the same info, it could take minutes before I got a response
- This key-value store saves precious time in development and deployment
- Non-persistent storage is great, but limits examining relationships.
- Take user input of two VCs, make the API call for only their information
- Make API call for a list of their PCs
- Find the common PCs between them and make the API call for only those PCs
- Make subsequent API calls for additional info relating only to them (image, funding round info)
- Store the response for each call in memcache and the DB
- One step before each API call however: first check memcache
email: carly.a.dacosta@gmail.com