Skip to content

chkakaja/sentimize

Repository files navigation

Build Status Stories in Ready

Sentimize

Sentimize provides human emotion analysis during video recording for interviews and training.

Table of Contents

  1. Usage
  2. Getting started
  3. Clone the latest version
  4. Install Dependencies
  5. Setup Environment Variables
  6. Start the application
  7. Technologies
  8. Architecture
  9. Team
  10. Contributing

Usage

Landingpage: screen shot 2016-06-06 at 20 10 44 Login: screen shot 2016-06-06 at 20 11 19 Home: screen shot 2016-06-06 at 20 08 50 Record: screen shot 2016-06-06 at 20 10 18 Graphs: screen shot 2016-06-06 at 20 09 39 Session Overview: screen shot 2016-06-06 at 20 09 18

Getting started

1. Clone the latest version

Start by cloning the latest version of Sentimize on your local machine by running:

$ git clone https://github.com/chkakaja/sentimize
$ cd sentimize

2. Install Dependencies

From within the root directory run the following command to install all dependencies:

$ npm install

3. Setup Environment Variables

Server side setup
  1. Copy and save the example.env file in the env folder as development.env.
  2. Replace the port with your desired port and enter the login credentials for your MySQL server (make sure it is running)
Client side setup
  1. Create a free account on http://face.sightcorp.com/ and create a new application for a new App Key.
  2. Copy and save the client-config.example.js file in the env folder as client-config.js.
  3. Enter and save your Client ID and App Key in the client-config.js file.

4. Run the application

  1. Create a build folder within client/build. From within the root directory run the following command to make sure Browserify builds the bundle file and rebuilds on every change with Watchify:
$ npm run bundle
  1. In a new terminal window run the following command to start the application:
$ npm start

After that open in your browser the localhost with your chosen port, e.g. http://localhost:4568/ to access the application.

5. Run tests

Configure the environment variable NODE_ENV prior to running tests.

$ export NODE_ENV=development
$ npm test

You may use npm run test-client or np run test-server to run front-end and back-end tests independently.

Technologies

Front end:
  • React
  • Face Analysis Cloud Engine API by Sightcorp
  • Browserify
  • Chartjs
  • Babel
Back end:
  • Node
  • Express
  • Jade
  • Bookshelf/Knex
  • MySQL
  • Passport
Testing:
  • Mocha
  • Chai
  • jsdom
Continuous Integration:
  • Travis CI
Deployment:
  • Digital Ocean Droplet
  • pm2: Production Process Manager

Architecture

sentimize

Directory Layout

├── /env/                       # Environment variables
├── /node_modules/              # 3rd-party libraries and utilities
├── /client/                    # Client source code
│   ├── /build/                 # Build file produced with Browserify
│   ├── /components/            # React components
│     ├── /home-view/           # Home view components
│     ├── /main-layout/         # Main Layout components
│     ├── /record-view/         # Record view components
│     ├── /report-view/         # Reporting view components
│     ├── /App.jsx/             # Main React App
│   ├── /lib/                   # Lib files, e.g. from FACE API
│   ├── /style/                 # CSS Style files
│   ├── /index.jsx              # Index file to attach React to DOM
├── /server/                    # Server source code
│   ├── /config/                # Initial server config files
│   ├── /controllers/           # Controllers for database interaction
│   ├── /lib/                   # Lib for util functions
│   ├── /models/                # Data models
│   ├── /routes/                # Routes for incoming GET and POST requests
│   ├── /views/                 # Jade templating views
│   └── /server.js              # Server-side startup script
├── /test/                      # Server and client side tests
│   ├── /client/                # Client side tests
│   ├── /server/                # Server side tests
|   ├── /data/                  # Holds seed & dummy data
└── package.json                # List of 3rd party libraries and utilities to be installed
└── .babelrc                    # Babel presets
└── .eslintrc                   # ESLint settings

Team

  • Product Owner: Christian Haug
  • Scrum Master: Jack Zhang
  • Development Team Members: Christian Haug, Jack Zhang, Kani Munidasa, Katherine Hao

Contributing

See CONTRIBUTING.md for contribution guidelines.