Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Sharetribe Go is Sharetribe's old source-available marketplace software, which was also available as a hosted SaaS product. Sharetribe Go is no longer actively maintained.

License

NotificationsYou must be signed in to change notification settings

sharetribe/sharetribe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CircleCICode Climate

IMPORTANT: Sharetribe Go is no longer actively maintained.

Sharetribe's new marketplace builder, The New Sharetribe, replaces Sharetribe Go as the easiest, fastest way to build a marketplace. Learn more aboutwhat The New Sharetribe means for Sharetribe Go.

Sharetribe Go remains source-available under the Sharetribe Community Public License.

To build and launch a marketplace without writing a single line of code, and extend indefinitely with custom code and scale to any size, head to the SaaS version ofThe New Sharetribe.

Contents

Technology stack

  • Ruby 3.2.2
  • Ruby on Rails 6.1.7.3
  • MySQL 8.0
  • React + jQuery
  • Node.js 18.16 (for compiling JavaScript assets)
  • "what you see is what you get" EditorMercury
  • Deploy: Custom Script (not using Mina or Cap3)
  • Server: Heroku
  • Image hosting: Amazon S3
  • Background job:delayed_job
  • Gems:
    • devise | Authentication
    • omniauth-facebook | Third party login: Facebook
    • haml and ERB | HTML templating
    • mysql2 | MySQL library for Ruby
    • paperclip | Image upload management
    • passenger | Web application server
    • react_on_rails | Integration of React + Webpack + Rails
    • factory_girl, capybara, rspec-rails, cucumber-rails, selenium-webdriver | Testing

Installation

Requirements

Before you get started, install the following:

  • Ruby. Version 3.2.2 is currently used and we don't guarantee everything works with other versions. If you need multiple versions of Ruby,RVM orrbenv is recommended.
  • RubyGems
  • Bundler:gem install bundler
  • Node. Version 18.16 is currently used and we don't guarantee everything works with other versions. If you need multiple versions of Node, consider usingn,nvm, ornenv.
  • Git
  • A database. Only MySQL 8.0 has been tested, so we give no guarantees that other databases (e.g. PostgreSQL) work. You can install MySQL Community Server two ways:
    1. If you are on a Mac, use homebrew:brew install mysql (highly recommended). Also consider installing theMySQL 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.
    2. Download aMySQL installer from here
  • 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 withbrew install sphinx --with-mysql
  • Imagemagick. If you're using OS X and have Homebrew installed, install it withbrew install imagemagick

Setting up the development environment

  1. Get the code. Clone this git repository and check out the latest release:

    git clone git@github.com:sharetribe/sharetribe.gitcd sharetribegit checkout latest
  2. Install the required gems by running the following command in the project root directory:

    bundle install

    Note:libv8 might fail to build with Clang 7.3, in that case you can try installing V8 manually:

    brew tap homebrew/versionsbrew install v8-315gem install libv8 -v'3.16.14.13' -- --with-system-v8gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315bundle install
  3. Install node modules:

    npm install&& (cd client&& npm install )
  4. Create adatabase.yml file by copying the example database configuration:

    cp config/database.example.yml config/database.yml
  5. Add your database configuration details toconfig/database.yml. You will probably only need to fill in the password for the database(s).

  6. Create aconfig.yml file by copying the example configuration file:

    cp config/config.example.yml config/config.yml
  7. Create and initialize the database:

    bundleexec rake db:create db:structure:load
  8. Run Sphinx index:

    bundleexec rake ts:index

    Note: If your MySQL server is configured for SSL, update theconfig/thinking_sphinx.yml file and uncomment themysql_ssl_ca lines. Configure correct SSL certificate chain for connection to your database over SSL.

  9. Start the Sphinx daemon:

    bundleexec rake ts:start
  10. Start the development server:

    foreman start -f Procfile.static
  11. Invoke the delayed job worker in a new console (open the project root folder):

    bundleexec 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 orhttp://lvh.me:5000). 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.

Mailcatcher

UseMailcatcher to receive sent emails locally:

  1. Install Mailcatcher:

    gem install mailcatcher
  2. Start it:

    mailcatcher
  3. Add the following lines toconfig/config.yml:

    development:mail_delivery_method:smtpsmtp_email_address:"localhost"smtp_email_port:1025
  4. Openhttp://localhost:1080 in your browser

Database migrations

To update your local database schema to the newest version, run database migrations with:

bundleexec rake db:migrate

Running tests

Tests are handled byRSpec for unit tests andCucumber for acceptance tests.

Install the following extra dependencies:

  • Chromedriver. Make sure toinstall a driver version that matches your browser's.

Remember to followall the steps listed in theSetting up the development environment paragraph before running tests because some tests depend on webpack assets.

  1. Navigate to the root directory of the sharetribe project

  2. Initialize your test database:

    bundleexec rake test:prepare

    This needs to be rerun whenever you make changes to your database schema.

  3. If Zeus isn't running, start it:

    zeus start
  4. To run unit tests, open another terminal and run:

    zeus rspec spec
  5. 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, startGuard:

bundleexec guard

Working with React, Webpack and Foreman

Some components are created with React (seedocumentation) and they need to be built with Webpack. We haveForeman Procfiles that can be used to run both Rails and Webpack:

  1. React component static build

    foreman start -f Procfile.static
  2. React component & hot loading styleguide (http://localhost:9001/)

    foreman start -f Procfile.hot
  3. If you need to debug the Rails parts of Sharetribe withPry, it's not possible with Foreman due to aknown compatibility issue. In this case we recommend running Rails with old-fashionedrails server and React builds with Foreman in a separate terminal. That way yourbinding.pry calls open nicely in the same window with the Rails process.

  4. React component static build, React client only

    foreman start -f Procfile.client-static
  5. React component & hot loading styleguide (http://localhost:9001/), React client only

    foreman start -f Procfile.client-hot

Setting up Sharetribe for production

Before starting these steps, performsteps 1-5 from above.

  1. Setsecret_key_base

    Generate secret key

    rake secret

    Add the following lines toconfig/config.yml:

    production:secret_key_base:# add here the generated key

    (You can also set thesecret_key_base environment variable, if you don't want to store the secret key in a file)

  2. Create the database:

    RAILS_ENV=production bundleexec rake db:create
  3. Initialize your database:

    RAILS_ENV=production bundleexec rake db:structure:load
  4. Run Sphinx index:

    RAILS_ENV=production bundleexec rake ts:index
  5. Start the Sphinx daemon:

    RAILS_ENV=production bundleexec rake ts:start
  6. Precompile the assets:

    RAILS_ENV=production NODE_ENV=production bundleexec rake assets:precompile
  7. Invoke the delayed job worker:

    RAILS_ENV=production bundleexec rake jobs:work
  8. In a new console, open the project root folder and start the server:

    bundleexec 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 asunicorn 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 asAmazon CloudFront. To serve the assets from the CDN service, you need to change theasset_host configuration in the theconfig/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 theScheduled tasks documentation.

For production use we recommend you to upgrade only when new version is released and not to follow the master branch.

Setting your domain

  1. In your database, change the value of thedomain column in thecommunities table to match the hostname of your domain. For example, if the URL for your marketplace ishttp://mymarketplace.myhosting.com, then the domain ismymarketplace.myhosting.com.

  2. Change the value of theuse_domain column totrue (or1) in thecommunities table.

  3. If you wish to enableHTTP Strict Transport Security (recommended), set also thehsts_max_age column incommunities table to a non-zero number of seconds. For instance31536000 (1 year).

Setting up S3

If you want to use S3 to host your images, you need to do a bit more configuration.

  1. Create a IAM role which has full S3 access. Save the AWS access and secret keys.

  2. In the S3 console, create two buckets, one for upload and one for permanent storage. For exampleyour-sharetribe-images andyour-sharetribe-images-tmp.

  3. Set the upload bucket (your-sharetribe-images-tmp) to have an expiration (for example, of 14 days) usinglifecycle management

  4. Enable CORS on the upload bucket.

  5. Set the following configuration in your sharetribeconfig.yml:s3_bucket_name: "your-sharetribe-images"s3_upload_bucket_name: "your-sharetribe-images-tmp"

  6. Add your AWS keys to the sharetribe app. The best way to do that is via environment variables, rather than checking them into yourconfig.yml. Set theaws_access_key_id andaws_secret_access_key environment variables to the values for the IAM user.

  7. (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 theuser_asset_host configuration option in addition toasset_host inconfig/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.

<?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>
Troubleshooting S3 Setup
  • 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.

Advanced settings

Default configuration settings are stored inconfig/config.default.yml. If you need to change these, use theconfig/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/

Unofficial installation instructions

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 theSharetribe Go community forum.

Payments

PayPal and Stripe are the two available payment gateways integrated.

PayPal payments are only available on marketplaces hosted atSharetribe.com due to special permissions needed from PayPal. We hope to add support for PayPal payments to the source available version of Sharetribe Go in the future.

Stripe can be used in the source available version, as long as your country and currency are supported.

Enable Stripe

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 theapp_encryption_key variable in theconfig/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 (probably1):TransactionService::API::Api.processes.create(community_id: <ID>, process: :preauthorize, author_is_seller: true)andTransactionService::API::Api.settings.provision(community_id: <ID>, payment_gateway: :stripe, payment_process: :preauthorize, active: true).

Custom Landing Page

Sharetribe Go includes a Custom Landing Page add-on and editor. You canlearn more about it here.

The Custom Landing Page Editor should be available automatically, fromv9.1.0. If this is not the case, you can find plenty of useful information in theLanding Pages for Idiots Like Me post written byJeremy D Evans.

Versioning

Sharetribe followsSemantic 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 documentHow Sharetribe applies Semantic Versioning to read more how Semantic Versioning is applied in practice.

Changes

SeeCHANGELOG.md for detailed list of changes between releases.

Upgrade

SeeUPGRADE.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.

Contribute

Would you like to make Sharetribe better?

SeeCONTRIBUTING.md for the steps to contribute.

Release

SeeRELEASE.md for information about how to make a new release.

Translation

Translations are available through YAML files in the/config/locales folder.

Bug tracker

Browse open issues and submit new ones inGithub Issues.

We are dedicating the Github Issue only for bugs in the Sharetribe Go codebase. For general questions, start a new thread in theSharetribe Go 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.

Documentation

More detailed technical documentation is located indocs/

Sharetribe Go Community forum

The Sharetribe Go Community forum is located athttps://www.sharetribe.com/community/.

The forum is a great place to ask support and help regarding Sharetribe Go Community Edition, for example with issues during the installation.

License

Sharetribe Go is source-available under the Sharetribe Community Public License. SeeLICENSE for details.

About

Sharetribe Go is Sharetribe's old source-available marketplace software, which was also available as a hosted SaaS product. Sharetribe Go is no longer actively maintained.

Topics

Resources

License

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp