This is the main application and bootstrap code for various conference tools modules. It is intended to give a quick start into developing the modules and deploying them into production. The modules are expected to be used in a mix and match format, so should be cross compatible.
The tools were written for PHP Yorkshire and are very much a work in progress. It is not yet intended that other events be able to use them in production, but I am working towards that.
There are currently two functional modules to provide for different areas of event management
The most robust of the modules so far, provides ticketing, merchandise and delegate management for the event(s) future features are expected to include a GDPR compliant method to share data with sponsors and a prize draw component
A CRM still under heavy development to manage the speakers at your event. Currently manages hotel bookings, station pickups and travel reimbursements. Expected features are speaker activities (eg speaker dinner), talk/bio edits (with approval), integrations to automate ticket booking and payouts, schedule management, export to joind.in and speaker payments (eg profit share arrangements)
A CRM for managing sponsors at the event. The existing implementation was abandoned, however I intend to pick this up again when possible. Expected features include strong integration into attendance module eg for sharing delegate info and creating prize draws as well as workflow features to manage leads through to invoicing and contract generation.
There are also a number of support modules which may work entirely stand alone but are designed to integration into the conference tools platform.
Provides basic helpers and layout for creating the admin panel for the modules. This base will allow each of the modules to work side by side within a single admin control panel.
Provides (very) basic authentication and RBAC facilities which the other modules can leverage
An optional addon for the attendance module provides a stripe integration for handling payments. This module could be used as a template for anyone wanting to use a different payment provider eg PayPal.
I intend to create a shared module for handling files - the functionality is currently only within the speaker CRM however when work pick up on the sponsor CRM this will need to be extracted into it's own module.
- Clone this repo
- Using the cft.sh script run:
./cft.sh install
This will clone all of the modules and build the development Docker image - Modify the app.env file to enable the modules you wish to develop on.
- Make a copy of the config.dev.php.dist file in the same directory, dropping the .dist extension. Fill out the config for stripe (if required) and mail config
- Using the cft.sh script run:
./cft.sh env build
This will build a working environment and make the site available on http://localhost:8103
You can pause the environment using ./cft.sh env down
and start it again with ./cft.sh env up
To remove the environment use ./cft.sh env cleanup
(After doing this you will need to build again to get a working environment)
This application uses some tricks to enable local development of composer dependencies. If you need to do anything with
composer in this repo (eg an update to pull in new module dependencies) use composer via the cft tool eg
./cft.sh composer update
There are three db commands accessed by ./cft.sh db
these are:
reset
: create a clean empty database based on currently enabled modules and entity definitions.diff
: perform a diff between existing db and entity definitionsmigrate
: perform a migration on the db to bring it inline with entity definitions (this may not always succeed eg adding a non-null column will require a reset)
The cron events can be run using
./cft.sh runcron
This will perform cleanup actions eg expiring purchases which haven't been paid for.
*** The cron will not run UNLESS you use this command ***
Please don't (yet) :)
If you are really keen to use this straight away, please get in contact and I can share my currently private setup with you.