StockBase aims to solve various financial news problems that affect serious stock investors:

  • Disparate financial news
  • Manual monitoring and alert creation about critical company news
  • Automating continuing stock education
  • Improving upon legacy financial information sources

How it works

Once a user signs up, they add stocks to their portfolio. We curate a set of about 70 hand-picked newsfeeds, identify the companies mentioned in the articles, and add those articles to the user's portfolio of news. Plus, we parse SEC filings, and add those to the per-company news too.

Challenges we ran into

The two of us were learning a bunch of technologies at once: Meteor, MongoDB, Bootstrap, cheerio, various queue management packages and NLP APIs; plus one of us was coaching the other on programming in general and JS and Meteor in particular. It was the first time we were working together, and this was our first large Meteor app. Yet, we managed to put out a product in only three months, and Meteor was a big part of that success.

What we learned

Our news feed parser was subjected to the vagaries of the publishers, who weren't always respecting the RSS feed XML format. Sometimes, the parser would time out or crash, and take down the front-end with it. We realized this very early on, and split the app into a three-tier architecture:

  • a backend Meteor app that would parse the newsfeeds from a queue, and store the indexes articles in MongoDB
  • MongoDB, storing the articles, company information, SEC filings and other data
  • a front-end Meteor app, reading articles from MongoDB

This simple architectural decision ensured the front-end app was always ready to serve requests; the backend could be independently restarted if needed without taking down client connections; and there would always be data in the database, even if a few minutes stale in case the backend choked on a particular news feed.

What's next for StockBase

If you're passionate about stocks and software development, please contact us!

Share this project: