DG Tournaments is a powerful disc golf search and management platform. It is built with Laravel & Vue 2.0. It has the ability to pull tournaments from a variety of API sources or organically submitted. Using Algolia’s search power and Mapbox’s GL map renderings, tournament data is geographically searchable along with a variety of filters. In addition to search, tournament directors can sell sponsorships and manage tournament information such as schedule, locations, registration and uploads.
Using Mapbox, Algolia and InstantSearch.js, I was able to build a powerful search page for finding tournaments.
Custom Map Search Widget
I created a custom search widget that works with InstantSearch.js. This widget sends Algolia new map bounds when the map is moved and then plots the new location results. The map will also update with pagination and filter selections.
InstantSearch widgets, such as the rangeSlider and refinementList, where implemented to create a comprehensive set of search filters. These filters update the map in real time.
Using Autocomplete.js, I created a global search field for finding any tournament by name or city.
Save Searches & Notifications
One of the best features of the search is the ability to save searches. This action will save the filter state and map location. Also, the user has the option to receive notifications if any newly added tournaments matches their saved search. How cool is that?!
Managing Tournament Information
When a user selects a tournament, a dedicated tournament page is loaded. These tournament pages displays a wealth of information about the event such as dates, location and schedule. All the information for these pages can be updated by the director or staff. A series of Vue components and internal API was created to handle updating all the tournament information in a dedicated manage page.
Powerful Tournament Management
This is a dedicated manage page for a specific tournament. It is completely powered by Vue components and is well organized to help staff members make updates efficiently.
Connect Stripe Accounts
Using Stripe Connect, a user can not only register a stripe account, but also select it for the appropriate tournament. This will direct any purchases, such as sponsorships, to this selected account.
Sell Sponsorships with PayPal
In addition to Stripe, the tournament can be setup to accept PayPal payments for sponsorships. All the staff has to do is add the paypal email and it will automatically create the "Buy Now" buttons.
Keeping Players Informed
This project is developed with great focus on keeping the players informed about tournaments they are interested in or attending. These next features were developed to provide essential information to the player without overloading them with information.
A authenticated user has the ability to follow any tournament. When they follow a tournament this gives us insight of what information the user might need to stay informed. The follow button is a simple Vue component that handles making an AJAX request to the API and updating the button state.
The activity feed generally shows a timeline of updates made to the tournament information. However, it also can show time sensitive information such as an upcoming registration date. Specific Laravel Event Listeners are used to handle creating a new activity and applying it to follower's activity feed when information is created or updated.
User's can receive a variety of email notifications. Currently, they will receive emails for open registrations, new tournaments based on their saved searches and if their PDGA rating has been updated. There are other emails such as activation, order confirmation and tournament access, but these are administrative and not strictly for keeping player's informed.