Code Monkey home page Code Monkey logo

incommon's Introduction

http://incommonapp.herokuapp.com

Purpose

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

Stack

Features

  • 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

Running

  1. First, clone this directory to your computer.
$ git clone https://github.com/carlydacosta/finalprojectiqt.git
  1. Create and activate a virtual environment in the same directory:
$ pip install virtualenv
$ virtualenv env
$ . env/bin/activate 
  1. Install the required packages using pip:
(env)$ pip install -r requirements.txt
  1. Get a Crunchbase API key - https://developer.crunchbase.com/

  2. Run the server

    python incommonapp.py
    
  3. Browse the application at [http://localhost:5000]

Breakdown

  • 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

Input VCs

picture

View PC details

picture

Experiential Learning:

The biggest pain point in my experience of building this application revolved around getting and storing the data. The challenges:

Exponential growth of API calls

  • API constraint of 50 calls per minute
  • My code blew through the constraint for just one VC and it's 50+ PCs

Time lag inherent in each call

  • Even if I called for the same info, it could take minutes before I got a response

Solution:

Memcache

  • This key-value store saves precious time in development and deployment
  • Non-persistent storage is great, but limits examining relationships.

Refactoring

  • 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

Contact information

email: [email protected]

incommon's People

Contributors

carlydacosta avatar rhc2104 avatar

Stargazers

 avatar  avatar  avatar Rishi Ratan avatar Suriyaa Sundararuban avatar Logan Spangler avatar Ugaso avatar Lauren avatar  avatar Wendy Dherin avatar Jessica McElroy avatar Kate Reese avatar Emily Bookstein avatar  avatar Savannah Henderson avatar Larissa Muramoto avatar Florie Bustamante Coggins avatar Caroline Orsi avatar Heather Bryant avatar kate kuchin avatar Micki Balder avatar Lena avatar Piera Damonte avatar Julie Hollek avatar Allyson Stronach avatar Philip I. Thomas avatar

Watchers

James Cloos avatar  avatar Philip I. Thomas avatar

incommon's Issues

Execution failing

After installing successfully, your application is crashing with

~/repositories/incommon$ python incommonapp.py 
Traceback (most recent call last):
  File "incommonapp.py", line 2, in <module>
    from table_class_objects import User, VCList, PortfolioCompany, session as dbsession
  File "/home/jackson/repositories/incommon/table_class_objects.py", line 12, in <module>
    engine = create_engine(DATABASE_URL, echo=True)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/__init__.py", line 362, in create_engine
    return strategy.create(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 51, in create
    dialect_cls = u.get_dialect()
AttributeError: 'NoneType' object has no attribute 'get_dialect'

I've never programmed in python before, so all I can do is report the bug. Your assistance in fixing would be greatly appreciated.

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.