Name: sharetribe
Owner: Sharetribe
Description: Open source marketplace platform
Created: 2012-05-25 15:34:17.0
Updated: 2018-01-22 11:51:41.0
Pushed: 2018-01-19 14:44:46.0
Homepage: https://www.sharetribe.com
Size: 111869
Language: Ruby
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
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.
Before you get started, the following needs to be installed:
gem install bundler
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.brew install sphinx --with-mysql
brew install imagemagick
Get the code. Clone this git repository and check out the latest release:
clone git://github.com/sharetribe/sharetribe.git
haretribe
checkout latest
Install the required gems by running the following command in the project root directory:
le install
Note: libv8
might fail to build with Clang 7.3, in that case you can try installing V8 manually:
tap homebrew/versions
install v8-315
install libv8 -v '3.16.14.13' -- --with-system-v8
install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315
le install
Install node modules:
install
Create a database.yml
file by copying the example database configuration:
onfig/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 configuration file:
onfig/config.example.yml config/config.yml
Create and initialize the database:
le exec rake db:create db:structure:load
Run Sphinx index:
le exec rake ts:index
Note: If your MySQL server is configured for SSL, update the config/thinking_sphinx.yml
file and uncomment the mysql_ssl_ca
lines. Configure correct SSL certificate chain for connection to your database over SSL.
Start the Sphinx daemon:
le exec rake ts:start
Start the development server:
man start -f Procfile.static
Invoke the delayed job worker in a new console (open the project root folder):
le exec rake jobs:work
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:
install mailcatcher
Start it:
catcher
Add the following lines to config/config.yml
:
lopment:
il_delivery_method: smtp
tp_email_address: "localhost"
tp_email_port: 1025
Open http://localhost:1080
in your browser
To update your local database schema to the newest version, run database migrations with:
ndle exec rake db:migrate
Tests are handled by RSpec for unit tests and Cucumber for acceptance tests.
Remember to follow all the steps listed in the Setting up the development environment paragraph before running tests because some tests depend on webpack assets.
Navigate to the root directory of the sharetribe project
Initialize your test database:
le exec rake test:prepare
This needs to be rerun whenever you make changes to your database schema.
If Zeus isn't running, start it:
start
To run unit tests, open another terminal and run:
rspec spec
To run acceptance tests, open another terminal and run:
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:
ndle exec guard
Some components are created with React (see documentation) and they need to be built with Webpack. We have Foreman Procfiles that can be used to run both Rails and Webpack:
React component static build
man start -f Procfile.static
React component & hot loading styleguide (http://localhost:9001/)
man start -f Procfile.hot
If you need to debug the Rails parts of Sharetribe with Pry, it's not possible with Foreman due to a known compatibility issue. In this case we recommend running Rails with old-fashioned rails server
and React builds with Foreman in a separate terminal. That way your binding.pry
calls open nicely in the same window with the Rails process.
React component static build, React client only
man start -f Procfile.client-static
React component & hot loading styleguide (http://localhost:9001/), React client only
man start -f Procfile.client-hot
Before starting these steps, perform steps 1-5 from above.
Set secret_key_base
Generate secret key
secret
Add the following lines to config/config.yml
:
uction:
cret_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:
S_ENV=production bundle exec rake db:create
Initialize your database:
S_ENV=production bundle exec rake db:structure:load
Run Sphinx index:
S_ENV=production bundle exec rake ts:index
Start the Sphinx daemon:
S_ENV=production bundle exec rake ts:start
Precompile the assets:
S_ENV=production NODE_ENV=production bundle exec rake assets:precompile
Invoke the delayed job worker:
S_ENV=production bundle exec rake jobs:work
In a new console, open the project root folder and start the server:
le 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.
You need to configure a couple scheduled tasks in order to properly run your marketplace in production. See the Scheduled tasks documentation.
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 the communities
table to match the hostname of your domain. For example, if the URL for your marketplace is http://mymarketplace.myhosting.com, then the domain is mymarketplace.myhosting.com
.
Change the value of the use_domain
column to true
(or 1
) in the communities
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
and your-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 the aws_access_key_id
and aws_secret_access_key
environment variables to the values for the IAM user.
(Optional) When you enable S3, uploaded images are linked directly to the S3 bucket. If you want to serve these assets through CDN, you can set the user_asset_host
configuration option in addition to asset_host
in config/config.yml
.
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.
l version="1.0" encoding="UTF-8"?>
SConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
RSConfiguration>
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.
React components can be created using hot module replacement HMR technique in Styleguide (http://localhost:9001/) path in local development environment. Webpack is used to bundle React components for deployments and hot loading. Related webpack configs can be found from folder sharetribe/client/
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 share them at the Sharetribe community forum.
PayPal and Stripe are the two available payment gateways integrated.
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.
Stripe can be used in the open-source alternative, as long as your country and currency are supported.
Starting from release 7.2.0, Stripe is supported.
Stripe API keys will be encrypted when stored so it is important to configure your own random encryption key.
You should fill the app_encryption_key
variable in the config/config.yml
file with a long random string, unique to your project.
Stripe can be configured from the admin panel, in the “Payment settings” section. Instructions on how to get Stripe API keys can be found there.
If Stripe isn't automatically enabled in the admin panel after upgrading to 7.2.0, you should run the following commands in your Rails console, where <ID>
is your marketplace ID (probably 1
):
TransactionService::API::Api.processes.create(community_id: <ID>, process: :preauthorize, author_is_seller: true)
and
TransactionService::API::Api.settings.provision(community_id: <ID>, payment_gateway: :stripe, payment_process: :preauthorize, active: true)
.
Sharetribe follows Semantic Versioning where possible.
Given a version number MAJOR.MINOR.PATCH, increment the:
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.
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 in Github Issues.
We are dedicating the Github Issue only for bugs in the Sharetribe codebase. For general questions, start a new thread in the Community forum instead of opening a new Issue.
After you have opened a new issue, the team will handle it according to these instructions: How to handle Github Issues
More detailed technical documentation is located in docs/
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.