2.0 KiB
Spot Project
Spot & GPX integration
Dependencies
- npm 24+
- composer
- php-mbstring
- php-imagick
- php-gd
- php-mysql
- php-exif
- ffprobe & ffmpeg
- STARTTLS Email Server (use Gmail if none available)
- Optional: Geo Caching Server (WMTS Caching Service)
PHP Configuration
- max_execution_time = 300
- memory_limit = 500M
- post_max_size = 4G
- upload_max_filesize = 4G
- max_file_uploads = 50
Getting started
- Clone Git onto web server
- Update php.ini parameters
- Copy timezone data: mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb -u root mysql
- Copy settings-sample.php to settings.php and populate
- Follow CI/CD script in .gitea/workflows/deploy.yml
- Go to #admin and create a new project, feed & maps
- Add a GPX file named <project_codename>.gpx to /resources/geo/
Web Root
The web server should serve public/ as the application document root. PHP source, configuration, Composer dependencies, uploaded files, and GPX data stay outside the public tree; public/index.php is the front controller and webpack writes generated frontend assets to public/assets/.
Runtime data is exposed through symlinks only: public/files -> ../files and public/geo -> ../resources/geo. The build must not copy uploaded media or GPX data into public/.
Local Development
When developing Spot and the sibling objects library together, install dependencies through the local Composer manifest:
COMPOSER=composer.dev.json composer update
This makes Composer link vendor/franzz/objects to ../objects and autoload that namespace directly from the local source path. Production continues to use composer.json, which installs franzz/objects from its Git repository. Commit and publish objects changes before updating/deploying a Spot version that relies on them.
To Do List
- Add mail frequency slider
- Use WMTS servers directly when not using Geo Caching Server
- Allow HEIF picture format
- Garmin InReach Integration