Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Stealth Mode

Stealth Mode

SWE CS 373 Presentation

Avatar for Moiz Rizvi

Moiz Rizvi

April 22, 2016

Other Decks in Programming

Transcript

  1. The Team Stats: • 15 commits • 13 issues •

    10 unit tests Major Responsibilities: • API endpoints • Docker/deployment Stats: • 19 commits • 12 issues • 8 unit tests Major Responsibilities: • Data scraping • Data models Stats: • 13 commits • 9 issues • 10 unit tests Major Responsibilities: • API Doc • Unit Testing Stats: • 11 commits • 10 issues • 6 unit tests Major Responsibilities: • Frontend • Search Danyal Rizvi Austin Thomas Amanda Keebler Moiz Rizvi
  2. The Goal We set out to create a startup database

    that presented only the most fundamental company data and provided simple and useful contextual information by relating: Startups: startup popularity, number of founders, primary market, and location Founders: founder popularity, number of startups, founder rank, and location Cities: city popularity, number of startups, number of founders, and number of investors
  3. Data Source ◇ AngelList API ■ Startups ■ Users (employees

    of any kind) ■ Tags (market or location) ◇ API Python Wrapper, https://github.com/bugra/angel-list ■ MIT Licensed Python library to access API of Angellist In[1] angel.get_jobs() Out[1]: {u'jobs': [{u'angellist_url': u'https://angel.co/jobs?startup_id=357384', u'equity_cliff': u'1.0', u'equity_max': u'3.0', ... }
  4. Scraping city_ids companies founders City Company Founder foreach foreach foreach

    GET /tags/:id/startups GET /startup_roles?v=1 GET /tags/:id Database Query DB If not in DB
  5. Database SQLALchemy Tables class Founder(Base): __tablename__ = 'founders' id =

    Column(Integer, primary_key=True) ... city_id = Column(Integer, ForeignKey('cities.id')) city = relationship("City", back_populates="founders") startups = relationship("Startup", secondary=startup_to_founder, back_populates="founders") Startup_to_founder Association table created to manage the many-to-many relationship between Startup and Founder startup_to_founder = Table("startup_to_founder", Base.metadata, Column("startup_id", Integer, ForeignKey("startups.id"), primary_key=True), Column("founder_id", Integer, ForeignKey("founders.id"), primary_key=True) )
  6. API Endpoints ◇ Startups ■ startups/ -- Return all startups

    ■ startups/:id -- Return startups with id ◇ Founders ■ founders/ -- Return all founders ■ founders/:id -- Return founder with id ◇ Cities ■ cities/ -- Return all cities ■ cities/:id -- Return city with id
  7. Critique of CATastrophe’s IDB ❏ Neatly designed, informative and unique

    home page ❏ We learned that using postgres probably works best with python scripts than MySQL as it appears they used MySQL with IDB1 and IDB2 but postgres with IDB3 ❏ They could’ve done a better job of making their 3 pages of data complete [i.e. if they weren’t going to include certain information, to not have columns for them in their tables] ❏ We are puzzled why they didn’t include the number of a particular breed available to adopt on the “Breeds” page
  8. Critique of Our IDB ❏ We created a clean, attractive

    and easy to use website without much front-end development experience on our team ❏ We learned a myriad of tools from this project but most of all, how to use Docker ❏ We could’ve had a slightly more informative site [for instance how data is listed on each data page] ❏ We were puzzled by the best choice of database to use with Docker