Welcome to Massive Platform, the 2017 Edition!
Welcome to Massive Platform, Travel Massive's open-source community and event platform.
What Is Massive Platform?
Travel Massive is a world-wide community in more than 100 cities (see our latest stats), connecting over 25,000 travel insiders at locally organised events to empower change in the travel industry and make travel better. You can learn more on our public manifesto.
We developed Massive Platform to help our members connect more easily and to provide a centralized place for profiles and events. We outgrew all the usual tools such as Facebook pages and Meetup, and we wanted our own community platform, so we built one from scratch. We've made our platform open-source so that other communities can benefit from and build on our efforts and help make this product awesome.
Since our launch in January 2015, we've continued to develop the platform's features and have scaled the Travel Massive community to tens of thousands of members with thousands of events. The platform is developed and maintained by Ian who is the founder of Travel Massive. We would love more contributors!
Who uses Massive Platform?
Travel Massive (travelmassive.com)
A community for travel industry insiders.
Hardware Massive (hardwaremassive.com)
A community for makers and inventors.
Mappy Hour (mappyhour.org)
A community for outdoor adventurers.
- User Registration
- User Profile Pages
- Sign In With Facebook
- Sign In With Twitter
- Users Vanity URLs
- Invite Members By Email
- Follow Members
- Approved Users Badge
- Chapter Leaders
- Industry Segments
- Profile Tips
- Privacy Settings
- Report Members
- Chapter Profile Pages
- List Chapter Leaders
- List Chapter Members
- List Upcoming Events
- Members Can Join Chapters
- Contact Chapter Leaders
- Map View Of Chapters
- Export Membership Data (CSV)
- Chapter Invitations
- Chapter Reports
- Customs welcome message on join
- Advertise for chapter leaders
- Event Profile Page
- Chapters Can Create Events
- Member and Company Events
- Attendee Registration
- External RSVP Supported
(ie: eventbrite, meetup)
- Waitlist / Seat Limit
- Manage Waitlist/RSVPs
- Email to Attendees/Waitlist
- Restrict to Approved Members
- Partner Event Flag
- Customize Event URLs
- List All Upcoming Events
- Event Reminders
- Export Attendee Data (CSV)
- Online events for webinars
- Preview events mode
- Add to Calandar (ical)
- Event Payments (Stripe)
- Company Profile Pages
- Multiple Profile Managers
- List Companies
- Industry Segments
- Filter Companies By Country
- Filter Companies By Segment
- Follow Companies
- Company Vanity URLs
- Set As Sponsor
- Custom search module developed
- Filter by industry segment ("segment: media")
- Filter by location ("in:Asia")
- Filter by company ("at: AirBNB")
- Filter by role ("role: manager")
- Filter by social account ("has: snapchat")
- Filter by content type
- Sort results by follower count
- Load more results inline
- Permalink URLs for search queries
- User status updates
- Chapter status updates
- Company status updates
- Preview of posted URLs
- Moderate/Promote updates
- Hashtag search
- View counts
- Consume and post RSS feeds
- Custom branding engine
- HTTPS Live Streaming (HLS) for front page
- Customize logo/header/footer
- Add custom js/css to pages
- Customize by location (geoip)
- Customize by chapter/location
- Customize by URL
- Customize by referrer
- Cascading branding rules
- Personalised Newsfeed Emails
- Member messaging via email
- Welcome Approved members
- Custom Chapter Announcements
- Notify on new Follower
- Notify on new Chapter Member
- Notify on event RSVP/Waitlist
- Subscribe to Newsletter
- Responsive HTML5 Design
- Supports Retina Displays
- YouTube covers for profiles
- Customise contact page addresses
- Wordpress Feeds
- Community Reports
- Video background front page
- Clean HTML Emails
- Mobile / Tablet / Desktop
- Follow / Join Rate Limits
- Search Content
- Google Universal Analytics
- OpenGraph/DublinCore meta
- Drupal D7
- Code Driven Features
- Data Migration With CSV
- Display Suite Design
- Flags for Follow,Join,RSVP
- Tested for ngx_pagespeed module
- utf8mb4 (emjois and Asian chars)
- Wordpress theme
- Vanilla Forums
- Jobskee Job board
- iFlyChat site chat
Our Core focus is on developing features to support the needs of the Travel Massive community and our partner communities such as Hardware Massive and MappyHour. Below is a list of some of the features we plan on working on next.
- Sign In With LinkedIn ($ bounty)
- Show mutual connections with other members
- Realtime notifications on site
- Automated chapter rankings
- Automated chapter sponsorship page
- Top members report
- Signup help page for new users
- Who's nearby page
- AMP page template
- Bot integration
- Member/company badges
- Partner Sections
- Got an idea? Build it!
How To Install Massive Platform
Installing the platform is reasonably straight forward if you you've got some Drupal experience. Here's a list of things you'll need:
- A Web Server (nginx preferred)
- A MySQL Database
- PHP 5.5+
- A long train ride
If you are developing with Ubuntu (our preference) you can get up and running easily by installing the following packages:
sudo apt-get update
sudo apt-get install mysql-server
sudo apt-get install nginx
sudo apt-get install php5-fpm php5-mysql php5-gd php5-curl php5-json php5-readline
sudo apt-get install drush
# for sending mail, your favorite MTA
sudo apt-get install postfix
Once you've got nginx, MySQL and PHP, then you're ready to go. These examples were developed for our Ubuntu Linux development environment so you may need to modify to suit your own set-up.
1. Get the source code
Note this may take some time initially.
$ cd /var/www
$ git clone https://github.com/travelmassive/massiveplatform.git \
Cloning into 'massiveplatform'...
remote: Counting objects: 133588, done.
remote: Compressing objects: 100% (1023/1023), done.
remote: Total 133588 (delta 162), reused 0 (delta 0)
Receiving objects: 100% (133588/133588), 125.97 MiB | 1.08 MiB/s, done.
Resolving deltas: 100% (94854/94854), done.
Checking connectivity... done.
Checking out files: 100% (6926/6926), done.
2. Create database and permissions
(Note: if you change any of the mysql database details, make sure you configure sites/default/settings.php accordingly later on.)
mysql> create database massiveplatform;
Query OK, 1 row affected (0.01 sec)
mysql> grant all on massiveplatform.* to massiveplatform@localhost
identified by 'massiveplatform';
Query OK, 0 rows affected (0.03 sec)
3. Create an nginx configuration file
We've created a sample configuration file in the 'massiveplatform_setup_files' folder to get started.
sudo cp massiveplatform_setup_files/localdev.massiveplatform.com.conf /etc/nginx/sites-enabled
4. Edit your php.info
Change the following variables in your php.ini as set out below (On Ubuntu: /etc/php5/fpm/php.ini)
Restart php5-fpm service after modifying php.ini
# Required by nginx php usage
cgi.fix_pathinfo = 0
# Support users uploading large profile pictures from smart phones
post_max_size = 8M
# Maximum allowed size for uploaded files
upload_max_filesize = 8M
sudo service php5-fpm restart
5. Import Sample MySQL database
Note: A utf8mb4 sample database is also available to support emojis and Asian characters. Your MySQL installation will need to support utf8mb4 to import this, and you will need to uncomment the utf8mb4 settings (see sample settings.php). This is recommended for new installations.
Non utf8mb4 databases:
zcat massiveplatform_setup_files/massiveplatform.utf8mb4.sql.gz | mysql -u massiveplatform -p massiveplatform
zcat massiveplatform_setup_files/massiveplatform.sql.gz | mysql -u massiveplatform -p massiveplatform
6. Copy settings.php and non-git files into sites/default
cp massiveplatform_setup_files/settings.php sites/default
# note - edit settings.php here if you changed database name or password
tar zxvf massiveplatform_setup_files/sites.tar.gz
7. Fix permissions - allow web server write access to default/files
Note: This works for local development, but on a production server you should review all file permissions.
sudo chown -R :www-data /var/www/massiveplatform
sudo chmod -R 775 /var/www/massiveplatform/sites/default/files
sudo chmod 444 /var/www/massiveplatform/sites/default/settings.php
Ok, now point your browser to your web server. If you are developing on your local server you can probably use "localhost", or if you have a configured hosts files you can use "localdev.massiveplatform.com" as we've used in our example.
If you have succesfully installed Massive Platform, your web browser should look something like this:
9. Default Logins
Here are the default logins for the site (in "username / password" format):
- Moderator account: "moderator / moderator"
- Demo account: "demo / demo"
- Admin account: "admin / massive"
Get this far? Let Us Know!
If you get this far and got your local development site running, we'd love to know! Send an email to email@example.com and also provide any tips on improving these installation instructions so we can add it for others. Thanks!
There are a number of user roles that come shipped to allow for management of the platform.
- Public Member
Can view all the site content.
Can't peform any actions such as RSVP to event or follow members.
- Un-Approved Member
A freshly signed up member.
Can join events, update profile and follow other members or companies.
Profile displayed on /community page but no chapter member pages
- Approved Member
Can create a company profile.
Can also sign up for 'approved member only' events.
- Chapter Leader
Can create events for their chapter, approve members.
Can send announcements to their chapter
A community manager role, allowing creation of chapters, edit any event, chapter, company or profile info.
Moderators can flag unapproved accounts to request account holders to amend their profile.
Massive Platform API
There is a basic API provided by the tm_api module. You can add your own API hooks in here. Currently the following (basic) read-only API methods are published.
All results as returned as JSON.
- api/public/test - API test page
- api/public/stats - basic stats
- api/public/chapters_lat_lon - chapters lat and lon
- api/public/chapter_leaders - list of chapter leaders
- api/public/events - list of events
For JSONP append ?callback=myfunction to the URL.
Handy drush commands
- drush cc all (clear the cache)
- drush fd (view features list)
- drush search-reindex --immediate (re-index the search)
- drush status-updates-post-organization-updates (fetch and post organization feeds)
- You must run the Drupal cron regularly to support tasks such as search indexing and email announcements.
- drush run-cron --uri=http://yoursite.com --root=/path/to/massiveplatform
Other tips and tricks
- To enable Twitter, edit sites/default/settings.php and include your Twitter OAuth Settings
- To edit SASS stylesheets you'll need compass installed (apt-get install compass), then run "compass watch sites/all/themes/tm" to update css files
- For testing emails, add the following to sites/default/settings.php to write emails to /tmp/DevelMailLog:
$conf['mail_system'] = array(
'default-system' => 'DevelMailLog',
- Update your industry taxonomy from massiveplatform_setup_files/segment_taxonomy_import.csv, use taxonomy_csv module.
- Google Anlaytics available by Drupal module (drush en google_analytics)
- git log -p massiveplatform_setup_files/settings.php (show new settings.php variables)
Enabling Wordpress Feeds
- You can display a feed of related wordpress blog posts to companies/companies/chapters from your blog.
- Edit sites/default/settings.php and set $conf['tm_enable_wordpress_feedme'] = true;
- Install the tm-feeds wordpress plugin (https://github.com/travelmassive/massiveplatform-wordpress-feedme)
- Set $conf['tm_wordpress_feedme_url'] to the URL to call on page loads to embed feeds.
What's open-source and what is copyright?
- The code is released under the Drupal License (GPL).
- The Travel Massive name and logo is trademarked and can not be re-distributed in subsequent works.
- Sample data such as company and profile images may also be subject to copyright by their owners.
Authors and Contributors
- Flipside - initial project design, HTML theme and prototype
- Ian C - project lead, information architecture, product launch, lots of stuff
- Robyn Stanley (@rumpledelf) - pre-release bug fixing, event management, email announcements
- Ryan Cross (@rcross) - pre-release project management
- Dean Rollins (@drollins) - newsfeed emails and search sort
Support or Contact
Having trouble? Check out the our project wiki (in development) or issue tracker. You can also contact us at firstname.lastname@example.org and we’ll help you sort it out.