I have recently spent a fair bit of time working with Sharetribe, an open source, MIT licensed marketplace platform that also powers a hosted solution.
First, let me say that the software is the least significant piece of a marketplace (like AirBnB). The least significant! (Check out the Sharetribe Academy for some great content about the other steps.)
But it is still a necessary component. If you can get by with the hosted solution to prove out your idea, I suggest you do so–$100/month is a lot cheaper than hours of software development. There may come a time when you want to customize the sharetribe interface beyond what javascript injection can do. If this is the case, you need a developer. And that developer needs an environment. That’s what this post is really about.
The sharetribe github readme explains the installation process pretty well, but I find it tedious, so I created a quick start vagrant VM. This VM has a sharetribe installation ready to go. I use vagrant 1.6.3 and Virtualbox 5–google around for instructions on how to get those up and running. The guest VM is Ubuntu 14.04. This VM uses rvm to manage ruby versions, but I couldn’t be bothered with nvm. It will install sharetribe 5.8.0 and all needed components.
Assuming you have vagrant and virtual box installed, download the Vagrant file and put it in the directory where you want to work. Edit it and change any options you’d like. The options I changed were the port forwarding (I set it to 3003), networking options, and the amount of memory used (I allocate 4GB).
Then run vagrant box add http://www.mooreds.com/sharetribe/sharetribe-base-mooreds.box --name sharetribe-base-mooreds to download the file. It’s downloading a large file from my (small) server, so expect it to take a while (hours).
Then run vagrant init.
When you can login (password is vagrant if you use vagrant putty or you can use vagrant ssh) you can go to the sharetribe directory and do the following:
- fork the sharetribe repo
- update your git remote so that your
originis your forked repo (and not mine, because you won’t get write access to mine) - create a branch in your repo off of the 5.8.0 tag. There’s one startup script I tweaked a bit, but you can just ignore those changes.
- update your mysql password:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); - start mailcatcher listening to all interfaces:
mailcatcher --ip=0.0.0.0 - start the rails/react server:
foreman start -f Procfile.static - visit lvh.me:3003 and start your server
- set up your local super user and first marketplace
- edit the url you are redirected to to have the correct external port on it (from the vagrant settings): from http://testdev.lvh.me:3000/?auth=baEOj7kFrsw to http://testdev.lvh.me:3003/?auth=baEOj7kFrsw for example
This is running sharetribe 5.8.0, and I’m sure there will be follow on releases. Here’s how to sync the releases coming from the sharetribe team with your current repo. I’ve taken the liberty of creating an upstream branch for you.
This doesn’t cover deploying the code anywhere–I’d recommend this gist. Make sure you read the comments! Or I can install a vanilla version of sharetribe to heroku for a flat fee–contact me for details.
I have using the excellent 
So, I’ve learned a lot more than I wanted to about heroku drains. These are sinks to which heroku applications can write. After the logs are out of heroku, you analyze these logs just as you would in any other application living outside of a PaaS. Logs are very useful to see long term trends, debug, etc. (I’ve worked both on a rails3 app and a java spring/camel app that are deploying to heroku.)
That was what a previous boss said when I would ask him about some particularly knotty, unwieldy issue. “What would the end solution look like if you could wave a magic wand and have it happen?”
I’ve noticed a lot of comment spam lately, and had been dealing with it piecemeal. I have all comments moderated, so it wasn’t affecting the user experience, but I was getting email reminders to moderate lots of comments that were not English and/or advertising something.



