// READ-LATER · HIGHLIGHTS · COLLECTIONS
Save links. Read them clean. Keep the parts worth remembering.
Stash fetches every saved article in a background queue, strips it down to the text, lets you highlight passages with notes, and publishes the highlights you choose as a shareable collection.
The demo signs you in as a read-only user: browse the library, reader and admin panel; nothing can be changed.
// HOW IT WORKS
-
01
Save
Paste a link, click the bookmarklet, or use the API. It is normalized and de-duplicated, then queued.
Livewire · Sanctum API
-
02
Fetch & extract
A queue worker downloads the page behind an SSRF guard, extracts the article and sanitizes it.
Redis queue · Readability · HtmlSanitizer
-
03
Read & highlight
A distraction-free reader. Select any passage to highlight it, add a note and tags.
Alpine · text-quote selectors
-
04
Publish
Group articles into a collection and share its highlights, with an Atom feed and Markdown export.
Filament · Policies
SSRF-SAFE FETCHING
Only public IPs on ports 80/443, re-checked on every redirect, with the connection pinned to the vetted address to defeat DNS rebinding.
RESILIENT QUEUE
Rate limits and server errors retry with backoff; permanent failures are reported with a reason and can be retried from the UI or admin panel.
POLICY-ENFORCED ROLES
The demo role is read-only through policies, not hidden buttons, so direct requests are refused too, and tests cover each write path.
// BUILT WITH
- Laravel 13
- Livewire
- Alpine.js
- Tailwind CSS
- FilamentPHP
- PostgreSQL
- Redis queues
- Sanctum
- Spatie Permission
- Spatie Activity Log
- Pest
- Docker / Sail
- GitHub Actions