if me is a community for mental health experiences that encourages people to share their personal stories with trusted allies. Trusted allies are the people we interact with on a daily basis, including friends, family members, co-workers, teachers, and mental health workers.
Dealing with mental health is what makes us human. But for a lot of us, it's a struggle to be open about it. Not everyone is a counsellor or therapist. The people who we interact with everyday shape our emotions and behavior. Getting them involved in mental health treatment is the key to recovery.
- Goals
- Getting Involved
- Installation
- Configuration Files
- Running the App Locally
- Testing Accounts
- Testing Guidelines
- Static Code Analysis
- Committing Work
- Tracking Issues
- License
- Allow users to write about their experiences (Moments) similar to a blog and get feedback and support from their allies
- Create personalized categories and moods to organize Moments and Strategies
- Develop and share Strategies to solve problems and maintain healthy self-care goals
- Keep track of medications and create alerts for them
- Create support groups whether online or offline and keep track of sessions
Check out our projects page to see what we are currently working on!
Check our wiki for a summary of existing features!
Fork the repository, pick up an issue, or create an issue for a feature you would like to see. If would like to be added as a collaborator and added to our Slack page, email join.ifme@gmail.com.
If you're looking to give feedback on the app, you can do so here!
We use the wonderful Contributor Covenant for our code of conduct. Please read it before joining our project.
The app uses Ruby 2.3.1 and Rails 4.2.6. Please stick to these versions.
The steps below should be straightforward for Linux and OSX users. Windows users please refer to this guide for tips on setup.
Assuming you have RVM installed, update to the latest version
rvm get stable --autolibs=enable
Close and re-open the terminal window
rvm install ruby-2.3.1
Check that Ruby has been updated by running ruby -v
.
Follow instructions for updating rbenv at the project's GitHub. Make sure you also upgrade ruby-build
if you used Homebrew to install rbenv.
Run the following to install Ruby 2.3.1:
rbenv install 2.3.1
Once you have cloned the project, set the local Ruby version to 2.3.1:
cd ifme
rbenv local 2.3.1
Update the gem manager by running gem update --system
.
Update your gems by running gem update
.
If you are missing bundler
and nokogiri
, please install them
gem install bundler
gem install nokogiri
On MacOS, if you run into nokogiri errors run xcode-select --install
Make a gemset for the specific Ruby on Rails version (RVM)
rvm use ruby-2.3.1@rails4.2.6 --create
If you want to create a gemset using rbenv, you can install rbenv-gemset
gem install rails --version=4.2.6
Check that Rails has been updated by running rails -v
.
Check out http://www.postgresql.org/download/
Install via Homebrew
brew install postgresql
After that, follow this guide for a more detailed setup
Bulid from the source using yum, apt-get, etc. If you already have postgres installed, please update it.
Install via graphical installer
After cloning the app on your local machine, in your terminal run the following commands in the /ifme
directory
bundle install
If Ruby Bundle Symbol not found: _SSLv2_client_method (LoadError)
is encountered, try running the following commands.
rvm get stable
rvm reinstall ruby
rvm gemset pristine
If using El Captian OS X 10.11+ and there are errors relating to libv8 and therubyracer, view the links below for help.
- libv8: rubyjs/libv8#205
- therubyracer: http://stackoverflow.com/questions/33475709/install-therubyracer-gem-on-osx-10-11-el-capitan, rubyjs/therubyracer#359
On Windows, you may encounter an error like SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
. If this happens, download the CURL CA bundle and set the environment variable SSL_CERT_FILE
to point to it.
The two primary configuration files that you need to change are config/application.yml
and config/smtp.yml
. They are ignored in git to prevent accidentally committing sensitive information.
Copy the sample files to create your own configuration files:
cp config/application.example.yml config/application.yml
cp config/smtp.example.yml config/smtp.yml
cp config/database.example.yml config/database.yml
Run rake secret
to generate a SECRET_KEY_BASE
for config/application.yml
. This is the only required configuration change.
If you want to test out scheduled emails, run the following commands: bundle exec rake scheduler:send_take_medication_reminders
and bundle exec rake scheduler:send_refill_reminders
.
The following are not mandatory, but are required if you would like to test/use these features.
Pusher is used in-app notifications. If you would like to use this feature in your local environment, please create your own account, generate keys, and update PUSHER_APP_ID
, PUSHER_KEY
, PUSHER_SECRET
in config/application.yml
.
Google APIs is used for OAuth (Sign in with Google) and Calendars (refill dates for Medications). If you would like to use this feature in your local environment, please create your own account, generate keys, and update GOOGLE_CLIENT_ID
and GOOGLE_CLIENT_SECRET
in config/application.yml
. You'll need activate both the Google+ API and the Contacts API for Oauth and the Calendar API for Calendars. Under the credentials tab, make sure to add the Authorized redirect URI as http://localhost:3000/users/auth/google_oauth2/callback
. Note, you may have to hit the Save button twice for this to take effect.
Cloudinary is used to store profile pictures. If you would like to use this feature in your local environment, please create your own account, generate keys, and update CLOUDINARY_CLOUD_NAME
, CLOUDINARY_API_KEY
, and CLOUDINARY_API_SECRET
in config/application.yml
.
Create the developement and test databases:
bin/rake db:setup db:test:prepare
Start the local server:
rails s
To view the app, go to http://localhost:3000
.
Assuming Docker is setup, you can start the server using
docker-compose up
or open a shell using
docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm app bash
PG::ConnectionBad (fe_sendauth: no password supplied )
You may need to create a new PSQL user. Follow this guide to define a username and password.
To keep this information private, list PSQL_USERNAME
and PSQL_PASSWORD
under config/application.yml
, then add username and password to config/database.yml
:
development: &default
...
username: <%= ENV["PSQL_USERNAME"] %>
password: <%= ENV["PSQL_PASSWORD"] %>
rails db
Note that ifme_test
is used when running unit tests
They have been created in db/seeds.rb
. Feel free to modify seeds.rb to help to your development needs! You can also test with Google accounts.
Email: test1@example.com
Password: password99
Email: test2@example.com
Password: password99
Email: test3@example.com
Password: password99
We are using Selenium for web browser automation, so you will need to install Firefox!
Always write tests for the changes you've made! If you see any missing tests, write them!
rspec
If you receive an error for having 'FATAL: database "ifme_test" does not exist'
, run the following.
bin/rake db:create db:migrate RAILS_ENV=test
Make sure PhantomJS is installed locally, either through their website or by running brew install phantomjs
.
In a new terminal window, run rake jasmine
.
To view the test results, go to http://localhost:8888
.
rake jasmine:ci
bundle exec rake jshint
Make a fork of the repository, create a new branch for every feature you are working on! Always make pull requests!
If you've been added as a collaborator to the repository, please do not push unless the commit you are making is trivial i.e. doesn't require a code review. If you're unsure about this, please ask!
Everyone is encouraged to participate in code reviews, so please do so!
- We use 2 space identation.
- We use snakecase for Ruby files and id/class names in HTML.
- We use camelcase for JS files.
- Make sure you run the test suite locally before you commit, don't rely on CircleCI to do that for you.
- Make sure commit messages are clear and concise are tagged with the issue number e.g. "[#99] Fixes some sample issue".
- Make sure pull requests reference the corresponding issue.
- Make sure any issues or pull requests that are UI/UX focused have appropriate screenshots.
- As a pull request (PR) reviewer, if you think the PR is good to go (including passing tests) make sure to comment with LGTM (looks good to me). You can either merge it yourself or tell the PR creator to do it themselves.
In the spirit of open communication and community, we highly recommend that new contributors write a blurb on themselves, what mental health means to them, and why they are part of if me.
This also helps people to familiarize themselves with the code base! The live contributors page can be found here. Contributor images must be at least 800x800 px and be in .jpg or .png format. Please save the image as assets/images/contributors/firstname_lastname.png
!
If you've contributed to the project but do not want to write a blurb, please add your name and desired social media link to app/controllers/pages_controller.rb
. Please note: The image url here appears different from the actual path you saved it at above. i.e. Write this as, image: assets/contributors/firstname_lastname.png
within the pages_controller.rb
file.
Please post any bugs, questions, or ideas on our issues page. If you prefer not to post publicly, you can post here.
If you create an issue, please tag it with the appropriate label. We use enchancement
for feature work and bug
for bugs. If you created an issue and are not working on it, please tag it as help wanted
. The majority of technical contributors are up and coming developers, so be sure to tag appropriate issues as newbiefriendly
! If you are working on an issue, please assign it to yourself. If you are unable to do so, please let us know and we will add you as a collaborator.
For bugs, please list the reproduction steps and specify if the bug was produced locally or on production. Please also mention what OS and browser you are using.
The source code is licensed under GNU AGPLv3. For more information see http://www.gnu.org/licenses/agpl-3.0.txt or LICENSE.txt.