Sharetribe is an open source platform to create your own peer-to-peer marketplace.
Would you like to set up your marketplace in one minute without touching code? Head to Sharetribe.com.
- Installation
- Payments
- Versioning
- Changes
- Upgrade
- Contribute
- Release
- Technical roadmap
- Translation
- Known issues
- Developer documentation
- License
Before you get started, the following needs to be installed:
- Ruby. Version 2.2.4 is currently used and we don't guarantee everything works with other versions. If you need multiple versions of Ruby, RVM is recommended.
- RubyGems
- Bundler:
gem install bundler
- Git
- A database. Only MySQL has been tested, so we give no guarantees that other databases (e.g. PostgreSQL) work. You can install MySQL Community Server two ways:
- If you are on a Mac, use homebrew:
brew install mysql
(highly recommended). Also consider installing the MySQL Preference Pane to control MySQL startup and shutdown. It is packaged with the MySQL downloadable installer, but can be easily installed as a stand-alone. - Download a MySQL installer from here
- If you are on a Mac, use homebrew:
- Sphinx. Version 2.1.4 has been used successfully, but newer versions should work as well. Make sure to enable MySQL support. If you're using OS X and have Homebrew installed, install it with
brew install sphinx --with-mysql
- Imagemagick. If you're using OS X and have Homebrew installed, install it with
brew install imagemagick
- Get the code. Cloning this git repo is probably easiest way:
git clone git://github.com/sharetribe/sharetribe.git
- Navigate to the Sharetribe project root directory.
cd sharetribe
- Install the required gems by running the following command in the project root directory:
bundle install
- Create a database.yml file by copying the example database configuration:
cp config/database.example.yml config/database.yml
-
Add your database configuration details to
config/database.yml
. You will probably only need to fill in the password for the database(s). -
Create a config.yml file by copying the example configution file:
cp config/config.example.yml config/config.yml
- Create the database:
bundle exec rake db:create
- Initialize your database:
bundle exec rake db:schema:load
- Run Sphinx index:
bundle exec rake ts:index
- Start the Sphinx daemon:
bundle exec rake ts:start
- Invoke the delayed job worker:
bundle exec rake jobs:work
- In a new console, open the project root folder and start the server. The simplest way is to use the included Webrick server:
bundle exec rails server
Congratulations! Sharetribe should now be up and running for development purposes. Open a browser and go to the server URL (e.g. http://lvh.me:3000). Fill in the form to create a new marketplace and admin user. You should be now able to access your marketplace and modify it from the admin area.
Use Mailcatcher to receive sent emails locally:
- Install Mailcatcher:
gem install mailcatcher
- Start it:
mailcatcher
- Add the following lines to
config/config.yml
:
development:
mail_delivery_method: smtp
smtp_email_address: "localhost"
smtp_email_port: 1025
- Open
http://localhost:1080
in your browser
To update your local database schema to the newest version, run database migrations with:
bundle exec rake db:migrate
Tests are handled by RSpec for unit tests and Cucumber for acceptance tests.
- Navigate to the root directory of the sharetribe project
- Initialize your test database:
bundle exec rake test:prepare
This needs to be rerun whenever you make changes to your database schema.
- If Zeus isn't running, start it:
zeus start
- To run unit tests, open another terminal and run:
zeus rspec spec
- To run acceptance tests, open another terminal and run:
zeus cucumber
Note that running acceptance tests is slow and may take a long time to complete.
To automatically run unit tests when code is changed, start Guard:
bundle exec guard
Before starting these steps, perform steps 1-5 from above.
- Set
secret_key_base
Generate secret key
rake secret
Add the following lines to config/config.yml
:
production:
secret_key_base: # add here the generated key
(You can also set the secret_key_base
environment variable, if you don't want to store the secret key in a file)
- Create the database:
bundle exec rake RAILS_ENV=production db:create
- Initialize your database:
bundle exec rake RAILS_ENV=production db:schema:load
- Run Sphinx index:
bundle exec rake RAILS_ENV=production ts:index
- Start the Sphinx daemon:
bundle exec rake RAILS_ENV=production ts:start
- Precompile the assets:
bundle exec rake assets:precompile
- Invoke the delayed job worker:
bundle exec rake RAILS_ENV=production jobs:work
- In a new console, open the project root folder and start the server:
bundle exec rails server -e production
The built-in WEBrick server (which was started in the last step above) should not be used in production due to performance reasons. A dedicated HTTP server such as unicorn is recommended.
It is not recommended to serve static assets from a Rails server in production. Instead, you should use a CDN (Content Delivery Network) service, such as Amazon CloudFront. To serve the assets from the CDN service, you need to change the asset_host
configuration in the the config/config.yml
file to point your CDN distribution.
For production use we recommend you to upgrade only when new version is released and not to follow the master branch.
-
In your database, change the value of the
domain
column in thecommunities
table to match the hostname of your domain. For example, if the URL for your marketplace is http://mymarketplace.myhosting.com, then the domain ismymarketplace.myhosting.com
. -
Change the value of the
use_domain
column totrue
(or1
) in thecommunities
table.
If you want to use S3 to host your images, you need to do a bit more configuration.
-
Create a IAM role which has full S3 access. Save the AWS access and secret keys.
-
In the S3 console, create two buckets, one for upload and one for permanent storage. For example
your-sharetribe-images
andyour-sharetribe-images-tmp
. -
Set the upload bucket (
your-sharetribe-images-tmp
) to have an expiration (for example, of 14 days) using lifecycle management -
Set the following configuration in your sharetribe
config.yml
:s3_bucket_name: "your-sharetribe-images"
s3_upload_bucket_name: "your-sharetribe-images-tmp"
-
Add your AWS keys to the sharetribe app. The best way to do that is via environment variables, rather than checking them into your
config.yml
. Set theaws_access_key_id
andaws_secret_access_key
environment variables to the values for the IAM user.
Here's a sample CORS configuration that allows anyone to post to your bucket. Note that you may want to lock down the origin host more tightly, depending on your needs.
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
- if you are having trouble uploading, look at the request using browser devtools and see what error statuses and messages are being sent.
- double check that your AWS keys are being correctly set.
- if you can upload images successfully, but the images aren't processed, make sure that the delayed-job worker is running.
Default configuration settings are stored in config/config.default.yml
. If you need to change these, use the config/config.yml
file to override the defaults. You can also set configuration values to environment variables.
Use these instructions to set up and deploy Sharetribe for production in different environments. They have been put together by the developer community, and are not officially maintained by the Sharetribe core team. The instructions might be somewhat out of date.
If you have installation instructions that you would like to share, don't hesitate to contact the team.
Sharetribe's open source version supports payments using Braintree Marketplace. To enable payments with Braintree, you need to have a legal business in the United States. You can sign up for Braintree here. Once that's done, create a new row in the payment gateways table with your Braintree merchant_id, master_merchant_id, public_key, private_key and client_side_encryption_key.
PayPal payments are only available on marketplaces hosted at Sharetribe.com due to special permissions needed from PayPal. We hope to add support for PayPal payments to the open source version of Sharetribe in the future.
Sharetribe follows Semantic Versioning where possible.
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
See the document How Sharetribe applies Semantic Versioning to read more how Semantic Versioning is applied in practice.
See CHANGELOG.md for detailed list of changes between releases.
See UPGRADE.md for information about actions needed when upgrading.
For production use we recommend you to upgrade only when new version is released and not to follow the master branch.
Would you like to make Sharetribe better?
See CONTRIBUTING.md for the steps to contribute.
See RELEASE.md for information about how to make a new release.
For a better high-level understanding of what the Sharetribe core team is working on currently and what it plans to work on next, read the technical roadmap.
Sharetribe uses WebTranslateIt (WTI) for translations. If you'd like to translate Sharetribe to your language or improve existing translations, please ask for a WTI invitation. To get an invite, send an email to info@sharetribe.com and mention that you would like to become a translator.
All language additions and modifications (except for English) should be done through the WTI tool. We do not accept Pull Requests that add or modify languages (except English).
Browse open issues and submit new ones at http://github.com/sharetribe/sharetribe/issues.
- Testing
- SCSS coding guidelines
- Delayed job priorities
- Cucumber testing Do's and Don'ts
- Technical roadmap
- Feature flags
The Sharetribe open source community forum is located at https://www.sharetribe.com/community/.
The forum is a great place to ask support and help for example with issues during the installation.
Sharetribe is open source under the MIT license. See LICENSE for details.