Plots2
a collaborative knowledge-exchange platform in Rails; we welcome first-time contributors! :balloon:
Install / Use
/learn @publiclab/Plots2README
PublicLab.org
The content management system for the Public Lab research community, the plots2 web application is a combination of a group research blog -what we call "research notes"-and a wiki. Read more about the data model here.
Begin running (and contributing to) this codebase immediately with GitPod:
It showcases a variety of features that help the Public Lab community collaborate on environmental technology, design, documentation, and community organizing. Originally a Drupal site, it was rewritten in 2012 with Ruby on Rails and has since extended but not yet entirely replaced the legacy Drupal data model and database design. We ❤️ Open Source and actively participate in various OSS programs such as Google Summer of Code(GSoC), Rails Girls Summer of Code (RGSoC), Outreachy, and Google Code-In (GCI). Some key features include:
- A Q&A portal for peer-based problem solving
- A rich text and Markdown editor
- Wiki editing and revision tracking
- Tagging and topically-based groups and content organization
- Email notification subscriptions for topics and comments
- A search interface built out of our growing API
- A user dashboard presenting recent activity
- A privacy-sensitive, Leaflet-based location tagging system and community map
Roadmap
We are developing a draft Roadmap for plots2 and our broader Public Lab code projects; read more and comment here.
A full description of the features, audiences, inter-relationships, and goals of Public Lab software projects can be found here: https://publiclab.org/software-overview
Table of Contents
- What Makes This Project Different
- Data model
- Contributing
- Prerequisites
- Installation
- SSL in Development
- Login
- Testing
- Maintainers
- How to start and modify cron jobs
- Bundle Exec
- Reply-by-email
- Bugs and Support
- Recaptcha
- Internationalization
- Security
- Developers
- First Time?
- Hacktoberfest
What makes this project different
The people who create our platform make very different design and technology decisions from other projects. This stems from our deep belief that, to see a change in the world, we must build and maintain systems that reflect our values and principles.
From design to system architecture to basic vocabulary and communication patterns, our systems have grown organically since 2010 to support a powerful, diverse, and cooperative network of people capable of taking on environmental problems that affect communities globally. The platform we have built together speaks to this shared history in many ways, big and small. It reflects input from people facing serious health issues, on-the-ground organizers, policy specialists, hardware hackers, educators, and civil servants.
This broad community and the Public Lab team have facilitated a space where we can discuss, break down, construct, prototype, and critique real-world projects. Together we have shaped a platform that incorporates familiar pieces but ultimately looks and feels quite different from anything else on the internet. Despite the growth of our platform, it remains committed to hearing the voices of others, mutual respect and support, an awareness of the barriers and challenges presented by gaps in expertise and knowledge, and a sensitivity to the inequalities and power imbalances perpetuated by many mainstream modes of knowledge production and technological and scientific development.
Our mutual aim to democratize inexpensive and accessible do-it-yourself techniques has allowed us to create a collaborative network of practitioners who actively re-imagine the human relationship with the environment. Our goals are supported and facilitated by a system which questions and even challenges how collaborative work can happen.
Data Model

(Above: draft of our Data model)
Contributing
We welcome contributions, and are especially interested in welcoming first time contributors. Read more about how to contribute below! We especially welcome contributions from people belonging to groups under-represented in free and open source software!
Code of Conduct
Please read and abide by our Code of Conduct; our community aspires to be a respectful place both during online and in-person interactions.
Prerequisites
For installation, prerequisites include sqlite3 and rvm. Click here for a complete list and instructions.
Installation
Standard Installation
- Fork our repo from https://github.com/publiclab/plots2.
- In the console, download a copy of your forked repo with
git clone https://github.com/your_username/plots2.gitwhereyour_usernameis your GitHub username. - Enter the new plots2 directory with
cd plots2. - Set the upstream remote to the original repository url so that git knows where to fetch updates from in future:
git remote add upstream https://github.com/publiclab/plots2.git - Steps to install gems:
- You may need to first run
bundle installif you have older gems in your environment from previous Rails work. If you get an error message likeYour Ruby version is 2.x.x, but your Gemfile specified 2.7.3then you need to install the ruby version 2.7.3 usingrvmorrbenv.- Using rvm:
rvm install 2.7.3followed byrvm use 2.7.3 - Using rbenv:
rbenv install 2.7.3followed byrbenv local 2.7.3
- Using rvm:
- Run this
bundle config set without 'production mysql'from the rails root folder to set your project to exclude libraries only needed in production. - Install gems with
bundle installfrom the rails root folder.
- You may need to first run
- Run
cp db/schema.rb.example db/schema.rbto make a copy ofdb/schema.rb.exampleindb/schema.rb. - You could choose to use mysql2 or sqlite3 as your database. We recommend using
sqlite3as your plots2 database as some of our contributors have reported issues while usingmysql2.- If mysql2, run
cp config/database.yml.mysql.example config/database.ymlto make a copy ofconfig/database.yml.mysql.exampleinconfig/database.yml - If sqlite3, run
cp config/database.yml.sqlite.example config/database.ymlto make a copy ofconfig/database.yml.sqlite.exampleinconfig/database.yml. kindly note if you choose to use sqlite some tests may fail. The project was setup initially to use mysql and some tests are tailored for mysql db. No need for alarm, we are working to fix these and this will not interfere with your development process
- If mysql2, run
- Run
rake db:setupto set up the database - Install static assets (like external javascript libraries, fonts) with
yarn install - Setup React & webpacker by running
rails webpacker:install && rails webpacker:install:react && rails generate react:install(for local SSL work, see SSL below)
- If you get any prompt to overwrite files in this step please choose no. The prompt will be something like "Overwrite /home/plots2/config/webpacker.yml? (enter "h" for help) [Ynaqdhm]" :- type "n" a
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
