Git Product home page Git Product logo

basselope.io's Introduction

Basselope

Basselope is a web application that extracts and visualizes sentiment values of social media content. Statistical analysis and natural language processing are heavily used in our algorithm to parse out relevant metrics and related topics. That enriched data is visualized on the client in ways that provide context and insight into popular opinion on the given topic.

Basselope

Technology

  • Frontend: React, Redux, D3, and Materialize
  • Backend: Express, Node, nlp_compromise, sentiment
  • Testing: Jasmine and Enzyme
  • Build Tools: Webpack and Gulp

Setup

We use webpack to bundle our files and gulp to watch the client and server for any changes. During development, the server ran on localhost port 8080.

  • npm install to install our dependencies
  • gulp launch --dir server to bundle the files and start the server on localhost:8080

Team

Development team consists of three full-stack engineers:

  • Ben Chen
  • Rico Chen
  • Lukas Welinder

Future of Basselope

We are always looking for ways to improve Basselope. If you're interested in helping out, or have any ideas for features or fixes, feel free file and issue or make a pull request. For our git workflow and style guides, take a look at CONTRIBUTING.md. Below are some tasks that need attention:

Optimization

  • Distribute fetch & parse tasks across a cluster to reduce load on our front-facing server.
  • Implement web-workers and consolidate client-side heavy lifting to improve performance
    • also useful to improve ease of data flow and clarity of design patterns with regard to D3 & Redux

Fixes

  • Large data sets occasionally causing client to hang on call to Reddit API with no error response.
  • d3Plot.jsx animation re-running when route is returned to.
    • needs an action dispatch as callback to re-select node on animation 'end' event
    • causes slowdowns when rendering over 300 data points
  • SVG responsive styling improvements and fixes
    • some graphs getting clipped by metric-bar
    • styling/layout issues in firefox and safari (shovel worthy issue)

basselope.io's People

Contributors

lukaswelinder avatar iambenchen avatar

Stargazers

 avatar  avatar  avatar

Watchers

James Cloos avatar  avatar danzamerlot avatar  avatar

basselope.io's Issues

[chore] implement continuous integration & deployment

Deployment is currently using PM2, all that is needed:

  • Create build task that runs test(s) and linting before git push origin [branchname]
  • Create cron-job on deployment server that auto-pulls updates and runs build tasks without downtime.

[design] sentiment analysis algorithm

Using basic NLP libraries, design an algorithm that takes in a collection of sentences and outputs an object representing a normal curve graph of sentiment(positive/negative).

MVP: add 2 graphs to display

we will implement a normal summary of both calls api sources

  1. graph of time vs sentiment weighted
  2. sentiment by weighted sentiment

[feature] build basic express server

Server should serve static files from app/public folder, and serve the index.html file if the static asset is not found.

Express server should use the following middleware:

  • serve-static
  • body-parser

[chore] extend build tools with development tasks

  • Improve dev and build tasks using Gulp and WebPack.
  • Write server testing in Jasmine.
    • check routing for static files
    • check that other routes return index.html
  • Look into testing for React & Redux.
    • collaborate with @ricochen in planning structure / design

MVP: transfer over account info

account info is needed for sentiment analysis, so need to carry that over for twitter and build generic reddit and twitter ranking handler

[feat] integrate authentication and log in for users

-a user will have common keywords looked up
-saved search criterias and saved trends and lookups
-**cron job to update a users keywords search and populate the database. must take into account request limitations

[design] client usage of react & redux

Planning and researching groundwork required to implement react & redux on the client.

Client's index.html should:

  • Have an input element that makes post request to server endpoint: /_api/twitter/search
    • post data should have the following structure: { query: 'INPUT_STRING' }

[feature] set up twitter API on server

Server should accept post requests from the client at the endpoint /_api/twitter/search and return the results of a query to twitter's search endpoint.

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.