Fab labs provide widespread access to modern means for invention. They began as an outreach project from MIT’s Center for Bits and Atoms (CBA), and became into a collaborative and global network. You can find more information about Fab Labs on the Fab Foundation Website.
If you are a Fab labs entusiast and/or you would like to contribute to the project please feel free to get in touch by opening a new issue.
The platform is built with Ruby on Rails. We recommend reading the guide.
You can develop locally, or by using docker-compose (advanced).
cp .env.example .env
We recommend using rbenv to handle different Ruby versions, and nvm to handle Node versions.
Install dependencies and create a database:
npm i
bundle
rake db:setup
rails s
Visit http://localhost:3000
On MacOS to have the exact Ruby version, use a version manager. Default MacOS Ruby is incompatible. See example article how to setup on mac
With chruby
installed, you can do something like this:
ruby-install 2.6.10
chruby 2.6.10
gem install bundler:2.3.26
(check Gemfile.lock file)bundler install
(optional: bundle config set --local without 'test'
)nvm use
(setup NodeJS with )Trouble shooting
Issue with bundle install and postgress
a. brew install libpq
()
a. export PKG_CONFIG_PATH="/usr/local/opt/libpq/lib/pkgconfig"
Run tests with:
bundle exec rake
Start the project:
docker-compose up app
Create database (only the first time):
docker-compose exec app rake db:setup
OR
docker-compose exec app rake db:schema:load
If npm does not successfully install do:
docker-compose exec app npm i
Add this to your /etc/hosts
:
127.0.0.1 www.fablabs.local
127.0.0.1 api.fablabs.local
API is served on http://api.fablabs.local:3000
Add test users and data with
docker-compose exec app rake db:seed
This will create a normal user (email=user@user.local, password=password) and an admin user (email=admin@admin.local, password=password)
Run tests with
docker-compose exec app rake db:setup RAILS_ENV=test
docker-compose exec app rake spec
If you make changes to the code, rebuild the app and deploy the new image
docker-compose build
docker-compose up -d
Backup your db at any time with the included script:
./scripts/docker-backup-db.sh
Other:
docker compose exec app bundle update --patch
Access Postgress database:
docker exec -it fablabsio_db_1 psql -d fablabs -U postgres
Copy the Personal access token
Verify the token is working with the following terminal command:
curl -X GET 'https://api.fablabs.io/0/me' -H 'Authorization: Bearer <your_personal_token>'
curl -X GET 'https://api.fablabs.io/2/labs?page=0&per_page=100' -H 'Authorization: Bearer <your_personal_token>'
If you are running in production:
you need to setup the SSL hosts and .env vars from the docker-compose.yml
you must define Amazon S3 env vars, all thumbnails and images depend on this:
S3_BUCKET=your_fablabs.io
S3_KEY=<amazon key>
S3_SECRET=<amazon secret>
S3_REGION=<amazon region code>
docker-compose exec app bundle exec rake tmp:clear
docker-compose exec app bundle exec rake assets:precompile
docker-compose restart app
All PRs are tested on Github Actions. Make sure the tests run.
The project is now on Crowdin https://crwd.in/fablabsio
Use the i18n-tasks normalize
before submitting language changes
There is a minimal styleguide on http://localhost:3000/styleguide
Use it and update it if you add new reusable classes
Currently using this tool to manually handle versioning: https://github.com/gregorym/bump
Use this command to update the VERSION file + create a git tag
bump patch --tag
Then push the git tag with:
git push --tags
This project is licensed under the GNU Affero General Public License v3.0 (AGPL) - see the LICENSE.md file for details.