Library / SDK
ifmeorg/ifme avatar
ifmeorg/ifme

ifme mental health stories for trusted allies

Free, open source mental health communication web app to share experiences with loved ones

1,650 stars764 forksRubyAGPL-3.0

At a glance

What is it?
ifme is a self-hostable Ruby on Rails web application for sharing mental health experiences with trusted people in a user's life. Its repository provides a Docker-based development stack, while operational details remain largely in the project Wiki.
Who is it for?
ifme suits organizations that want to operate a private, community-oriented place for mental health storytelling and have capacity to maintain Ruby, React, JavaScript, PostgreSQL, and container infrastructure. It is a poor fit for teams expecting a documented clinical record system, crisis service, or turnkey mental health assessment platform.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Ruby, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why ifme centers trusted allies instead of clinical records

ifme addresses a communication problem rather than a diagnosis or treatment workflow. Its stated purpose is to help people share personal mental health experiences with trusted allies, meaning friends, family members, co-workers, teachers, and mental health workers who interact with them in daily life. The repository description also describes it as a mental health communication web app.

That boundary matters. The README argues that people are often reluctant to discuss mental health and that everyday contacts shape emotions and behavior. It presents their involvement in treatment as important to recovery. ifme therefore fits a user who wants a structured place to explain an experience to selected people. It does not claim to replace therapists, provide diagnoses, or deliver clinical care.

The intended audience has two parts. Individual users can record and communicate experiences, while community operators can deploy and govern the application. Organizations such as peer-support groups or community projects may find that model more relevant than a conventional healthcare platform. However, the README does not define account roles, visibility controls, consent workflows, moderation procedures, crisis handling, or clinical data controls in enough detail to assess those requirements without consulting the Wiki and the live application.

How the Rails, React, and PostgreSQL repository is arranged

The repository layout identifies a conventional Ruby on Rails application with a separate client area. Rails-related files include `Gemfile`, `Gemfile.lock`, `Rakefile`, `config.ru`, `app/`, `config/`, and `db/`. JavaScript development is concentrated under `client/`, while `package.json` delegates dependency installation to that directory and defines the project-level development start script. Repository topics also identify React, Webpack, RSpec, Capybara, Jest, React Testing Library, SCSS, and internationalization.

This structure suggests that server-side Rails code supplies the web application while the client directory contains front-end code. The available repository listing does not show models, controllers, routes, API endpoints, or React components, so it would be speculation to claim how stories are stored, who can read them, or exactly how a React view submits data. The defensible infrastructure description is limited to what the configuration establishes: the application process connects to PostgreSQL, client dependencies are installed under `client/`, and the Rails process starts through Foreman using `Procfile.dev`.

The project also carries substantial internationalization material. The README links translations in Bangla, Italian, Spanish, Portuguese, French, Korean, Indonesian, Turkish, Sinhala, Chinese, Hindi, Arabic, Vietnamese, Farsi, Catalan, and Bulgarian. This can help communities onboard users who do not read English, although the README does not state translation completeness or explain how new languages are maintained.

Running the local ifme stack with its declared service configuration

The README sends developers to the project Wiki for test, development, and production setup rather than publishing the commands on its main page. For a first local review, the concrete information in `docker-compose.yml` is more useful. It defines an `app` service and a PostgreSQL 14 service, exposes them on ports 3000 and 5432, and starts Rails through Foreman after the database health check succeeds.

The service contract is explicit. The application receives development settings and empty OAuth credential fields. `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET` are present for GitHub integration, while `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` are present for Google integration. The configuration does not explain which sign-in methods require those values or whether any feature remains available when they are empty.

The central connection settings are shown below. This is configuration reference, not a substitute for the Wiki's launch commands, which are not reproduced in the README.

yaml
environment:
  - BUNDLE_PATH=/bundle/vendor
  - PSQL_USERNAME=postgres
  - PSQL_PASSWORD=password
  - PSQL_HOST=db
  - RAILS_ENV=development
  - NODE_ENV=development

Those values are development credentials in a local Compose file. An operator changing this arrangement for a shared instance would need to replace the database password and obtain suitable OAuth credentials. The repository does not define production secrets, TLS termination, backups, authentication requirements, or environment validation.

The Dockerfile fixes the Ruby and Node runtime baseline

The container image provides a concrete runtime boundary. It starts from `ruby:3.3`, installs PostgreSQL client libraries and other build dependencies, and adds Node.js version 22. Yarn is enabled through Corepack and pinned to `[email protected]`. The repository's `package.json` independently requires Node.js `22.x`, so the image and package metadata agree on that major runtime.

The image installs Bundler version 2.1.4 and places the application at `/app`. It defines `./docker-entrypoint.sh` as the entrypoint and `bash` as the default command. The Compose service overrides that default by starting `Procfile.dev` through Foreman. This division makes the container reusable, but it also means image preparation and day-to-day process startup have separate owners.

The frontend dependency step is also explicit. Running the root package installation would invoke the `postinstall` script, which changes into `client` and runs the Yarn installation. That conclusion follows directly from `package.json`; the README does not present it as a standalone installation procedure.

json
"scripts": {
  "postinstall": "cd client && yarn install",
  "start": "foreman start -f Procfile.dev"
}

A reader should compare this lifecycle with the Wiki instructions before building an automated deployment pipeline. The repository exposes runtime choices and process wiring, but it does not provide an upgrade procedure, migration runbook, or rollback procedure.

Where ifme is weaker than specialist mental health systems

ifme is designed around communication with trusted allies, not around a documented clinical workflow. The README does not mention diagnostic assessments, medication tracking, appointment management, treatment plans, electronic health record export, emergency escalation, clinician-only access, audit logging, or regulated health-data handling. Those omissions do not prove that every feature is absent, but they prevent the README from supporting claims that ifme performs those jobs.

This distinction creates the clearest wrong-tool case. A clinic seeking a system of record for patient care would need documented access controls, consent, retention, auditability, and clinical data protections. ifme's public README is centered on community storytelling and involving everyday contacts instead. Teams that require those formal controls should not infer them from the application's social purpose.

There is also a content-safety boundary. The project concerns sensitive mental health experiences, yet the README provides a link to its Contributor Covenant without summarizing moderation, reporting, identity verification, deletion, crisis resources, or response procedures. Operators must investigate those controls in the application and its Wiki before inviting a community to submit personal accounts. A successful container startup would say nothing about those policy requirements.

A private community deployment differs from using the hosted if-me.org service

The most direct alternative is to use the hosted service at `if-me.org` instead of deploying the repository yourself. The approaches differ in ownership. The hosted option gives the user access to the project's live community without this repository establishing the operator's retention, backup, moderation, or availability terms. A self-hosted ifme instance lets an operator control hosting and configuration, but transfers responsibility for application upgrades, OAuth configuration, PostgreSQL maintenance, access controls, backups, and incident response to that operator.

A static site or conventional discussion forum is another possible approach, but it does not reproduce the same application structure. ifme is a Ruby on Rails web application with PostgreSQL persistence, a JavaScript client, internationalized documentation, and service definitions for GitHub and Google credentials. The README does not document whether all communication features require accounts or whether anonymous publication is supported, so a forum should not be called a feature-for-feature replacement.

For an evaluator, the deciding question is operational rather than cosmetic. Use the live service if the aim is to evaluate the existing community experience. Self-host only if control of the deployment and willingness to maintain its multi-runtime stack are explicit requirements. Before comparing the two further, inspect the account, sharing, moderation, and deletion behavior in the live product and the installation instructions in the Wiki.

AGPL-3.0 obligations and ongoing ifme maintenance

The source is licensed under GNU AGPLv3, as stated in both the README and `LICENSE.txt`. That matters to an organization evaluating ifme because adopting the code is different from merely using a separate hosted service. An organization planning to modify, package, or operate the application should read `LICENSE.txt` and determine how the AGPL terms apply to that distribution and service model. This is a compliance checkpoint, not legal advice.

Maintenance activity is visible. The repository is not archived, and its last push was on 2026-10-13. Recent releases include `v10.5.7` on 2026-09-19, `v10.5.6` on 2026-09-18, and `v10.5.5` on 2026-08-03. These dates indicate recent development activity, but they do not reveal how easy a release is to adopt.

Upgrade cost comes from the stack visible in the repository. A Ruby on Rails application must be kept compatible with its locked gems, PostgreSQL must remain compatible with the application's migrations and queries, Node.js and Yarn must support the client build, and OAuth settings must remain valid. The repository does not document database backup procedures, release migration steps, supported upgrade paths, or rollback. Consequently, the recent release dates show project activity, not that an operator can deploy an upgrade without reading the Wiki and testing it in a separate environment.

Editorial conclusion

ifme suits organizations that want to operate a private, community-oriented place for mental health storytelling and have capacity to maintain Ruby, React, JavaScript, PostgreSQL, and container infrastructure. It is a poor fit for teams expecting a documented clinical record system, crisis service, or turnkey mental health assessment platform. Before adoption, verify the current Wiki installation procedure, the exact account and sharing flow, and whether the AGPL-3.0 obligations match the intended deployment model.

Frequently asked questions

What is ifme used for?

ifme is a community web application for sharing mental health experiences with trusted allies such as friends, family members, co-workers, teachers, and mental health workers.

How do I install ifme locally?

The README directs developers to its Wiki for installation instructions covering test, development, and production instances. The repository also includes `Dockerfile`, `docker-compose.yml`, and a development service configuration using Rails and PostgreSQL.

What programming stack does ifme use?

The primary language is Ruby, and the repository uses Ruby on Rails with a JavaScript client, React-related tooling, PostgreSQL, Webpack, and SCSS. The Docker image uses `ruby:3.3` and Node.js 22.

Is ifme appropriate for clinical mental health records?

The README does not describe clinical record management, diagnosis, medication tracking, treatment plans, or regulated health-data controls. Its documented purpose is personal communication with trusted allies.

What license does ifme use?

The source code is licensed under GNU AGPLv3. The repository includes the full license text in `LICENSE.txt`.

Official sources

  1. ifmeorg/ifme on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ifmeorg-ifme.svg)](https://hysenlabs.com/projects/ifmeorg-ifme)

Was this useful?