Private family media management built with Laravel, Vue, and AWS-backed services.
Shudderfly is a private media app for sharing family-friendly content without ads, public feeds, or third-party social distractions. It supports books, pages, songs, collages, messages, searchable media, and AI-generated user summaries.
- Private, authenticated media experience
- Books and pages for photo and video collections
- Song library with YouTube-based playback
- PDF collage generation
- Internal messaging and notifications
- Role/permission-based access control
- Fast full-text search with Meilisearch
- Responsive Vue + Inertia interface
Shudderfly includes AI-powered user overview support via Hugging Face.
HUGGINGFACE_API_TOKENHUGGINGFACE_USER_OVERVIEW_MODEL(Qwen/Qwen2.5-1.5B-Instructby default)HUGGINGFACE_USER_OVERVIEW_ENDPOINT
- PHP
^8.3 - Laravel Framework
^13.0 - Laravel Sanctum
^4.0 - Laravel Scout
^10.22 - Inertia Laravel
^3.0 - Spatie Laravel Permission
^6.0 - Laravel Nightwatch
^1.7 - DomPDF
^3.1 - Meilisearch PHP
^1.16 - Laravel FFMpeg
^8.5 - Web Push
^9.0
- Node
>=20.0.0 - npm
>=10.0.0 - Vue
^3.2.41 - Vite
^6.3.5 - Vitest
^3.2.4 - Tailwind CSS
^3.2.1 - Inertia Vue
^3.1.1 - Laravel Echo
^2.2.6 - Pusher JS
^8.4.0 - TipTap
^2.x
- MySQL 8.0 for application data
- Meilisearch for search indexing
- AWS S3 for media storage
- CloudFront for CDN delivery
- Amazon SQS for background jobs
- AWS SES for mail delivery
- Pusher / Laravel Echo for realtime notifications
- Web Push (VAPID) for browser notifications
- FFmpeg for video processing
- YouTube API for song content
- Docker / Laravel Sail
- Node 20+
- npm 10+
cp .env.example .env
npm install
composer install
./vendor/bin/sail up -d
./vendor/bin/sail artisan key:generate
./vendor/bin/sail artisan migrate:fresh --seed
./vendor/bin/sail artisan scout:import "App\Models\Book"
./vendor/bin/sail artisan scout:import "App\Models\Page"
./vendor/bin/sail artisan scout:import "App\Models\Song"
npm run devAPP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=shudderfly
DB_USERNAME=sail
DB_PASSWORD=password
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://meilisearch:7700DatabaseSeeder runs:
RolesAndPermissionsSeederSiteSeederBookSeederSongSeeder
This gives you roles/permissions plus sample users, books, pages, and songs for local development.
- App:
http://localhost - Meilisearch:
http://localhost:7700 - MySQL:
127.0.0.1:3306
- Docker services include
laravel.test,mysql, andmeilisearch - PHP commands are expected to run through Sail
- Local queue processing defaults to
sync - Production media and jobs are designed around S3 + SQS
MIT