Meetable
About this project
Meetable is a minimal events aggregator website.
You can see a live version of this project at:
Features
- Discovery List of upcoming events on the home page, and archive view of past events.
- Tags Events can have one or more tags. Commonly-used tags are shown on the home page as well as the "discover" page.
- iCal feeds All lists of events have an iCal feed (home page, tag pages, etc) so you can subscribe to them in an external calendar.
- Add to Calendar Events have an "Add to Calendar" link that exports either an iCal file or links to Google Calendar.
Event Pages
Events have a permalink that contains
- cover photo
- event name, date/time and location details
- a link to an external website and ticket URL
- a description of the event, which supports markdown and basic HTML formatting
- a link to a timezone converter
- RSVPs (an RSVP button appears for logged-in users)
- photos, blog posts, and notes about the event
When logged in, you can add photos directly to an event page. Event pages also accept webmentions so that people can add photos and notes to the page from their own websites.
Setup
Requirements
- PHP 8.2+
- Composer
- MySQL/MariaDB
- Optional: Redis
Installation
This project is based on Laravel, so you can defer to their instructions if you encounter any issues.
Clone the source into a folder
git clone https://github.com/aaronpk/Meetable.git
cd Meetable
Install the project's dependencies
composer install
Make sure the storage
folder is writable by the web server.
sudo chown -R www-data: storage
Create a database in your MySQL server, and create a user that has full access to the database. For example:
sudo mysql
> CREATE DATABASE meetable;
> GRANT ALL PRIVILEGES ON meetable.* TO 'meetable'@'127.0.0.1' IDENTIFIED BY 'some-password';
Copy .env.example
to .env
and fill it out following the instructions in the file.
cp .env.example .env
Most importantly, make sure you fill out the database section or the next step won't work.
Once you've configured everything in the .env
file, you can run the migrations to set up the database.
php artisan migrate
Generate an application key:
php artisan key:generate
In a production system you'll want to make sure the background worker script is running:
php artisan queue:listen
Alternatively, you can set up a cron job to run every minute which will process any jobs on the queue:
php artisan queue:work --stop-when-empty
Web Server
Configure your web server to serve the project's public
folder from the domain name you've set up.
For nginx:
server {
list