/Reflective

Reflectiveapp

Primary LanguageJavaScript

Reflective

Reflective is a simple, yet powerful, journaling app. Here's how it works:

  1. ☎️ "How's your day going?" - every day you'll receive a 60 second phone call from the app. This is your chance to talk about whatever's on your mind.

  2. 📗 Reflective will download a recording of your call and convert it into text. The next time you log into the web app, you'll be able to see (and listen to!) past journal entries.

  3. 🔮 Reflective's insights feature will run analysis on your entries to glean insights into sentiment, emotion, and keywords. It will then visualize this data to show how your mood changes over time, and how topics/keywords mentioned in your entries relate to your emotional state.

Table of Contents

  1. Features
    1. Calling
    2. Journal
    3. Insights
  2. Team
  3. Tech Stack
    1. Front-End
    2. Back-End
    3. Development Tools
    4. Deployment
  4. Usage
  5. Requirements
    1. Technologies
    2. APIs
  6. Development
    1. Installing Dependencies
    2. Testing
    3. Tasks
  7. Contributing

⚡ Features

Calling

[Insert screenshots here]

  1. Scheduled Calls During signup, you give us a time to call you. Reflective will give you one call daily at that time for 60s for you to record your entry.

  2. Call Me Now At any point in the day, you can get Reflective to call you for your daily entry. If that call is successful, Reflective will not call you at your scheduled time.

Journal

[Insert screenshots here]

In your journal, you can view past entries and listen to the original recordings. You can also search for any entry based on the words in it.

Insights

[Insert screenshots here]

TBD - Discuss insights feature.

👥 Team

We're a team of full-stack engineers who are passionate about creating beautiful, fast and scalable web applications. Say hello - we'd love to chat!

📦 Tech Stack

Front-End

  1. React
  2. Redux
  3. React Router
  4. D3

Back-End

  1. Node
  2. Express
  3. PostgreSQL
  4. Kue
  5. JWT & Bcrypt
  6. Cron
  7. Elasticsearch

Development Tools

  1. Webpack
  2. React Hot Reloader
  3. Jest
  4. Enzyme
  5. Supertest
  6. ESLint

Deployment

  1. Heroku
  2. AWS Lambda
  3. CircleCI

🏃 Usage

Run the following script from within the root directory:

npm run dev

Note: for the application to run correctly, you'll need to configure the following environment variables (these should be saved in a .env file in the root directory)

JWT_SECRET= [Secret key for JWT]
TWILIO_SID= [Twilio App ID]
TWILIO_AUTH_TOKEN= [Twilio Auth Token]
AUTHY_KEY= [Authy Key]
TWILIO_FROM= [Twilio Phone Number]
TWILIO_XML_URL= [TwilioML Call Back URL]
DATABASE_URL= [URL of PostgreSQL database]
IS_ON= [Application Environment]
SPEECH_USERNAME= [Watson Speech to Text Username]
SPEECH_PASSWORD= [Watson Speech to Text Password]
SENTIMENT_USERNAME= [Watson Natural Language Understanding Username]
SENTIMENT_PASSWORD= [Watson Natural Language Understanding Password]
REDIS_URL= [URL of Redis database]
SEARCH_URL= [URL of elasticsearch cluster]
DB_LOGIN= [Postgres Database Login]
DB_PASS= [Postgres Database Password]
DB_URL= [Postgres Database URL]
DEV_CODE= [Dev phone verify code]
DEV_PHONE= [Dev phone verify number]

⭕ Requirements

Technologies

  • Node 6.4.x
  • Redis 2.6.x
  • Postgresql 9.1.x
  • Elasticsearch 5.3.x

You may use a local or hosted database/search service for Redis, Postgresql, and Elasticsearch.

APIs

Reflective uses third-party services to power its calling and analytics features. To use the application, you'll need to generate API keys from the following services:

🚀 Development

Installing Dependencies

From within the root directory:

npm install

Testing

Our test suite is built with Jest, Enzyme (for testing React components), and Supertest (for mock HTTP requests). To run all tests:

npm run test:dev

Refer to TESTING.md for testing guidelines.

💬 Contributing

We keep track of features, bugs, ui fixes, and other tickets using Github Issues. Check out this page for a list of open issues. Refer to CONTRIBUTING.md for contribution guidelines.

Our application was written in ES6 (ECMAScript 2015) syntax and follows the Airbnb Style Guide.