Earmark
You found them all! 🎉

Add your name to the leaderboard. Your time is counted from your first page view.

Your name, country and time will be shown publicly. See our privacy notice.

Name or nickname
Country
Earmark
Toggle sidebar

Where views are stored

Only the list of saved views is stored, never page content.

Browser (default)

'store' => 'browser',

The list lives in the browser tab's session storage. It clears when the tab closes. Nothing touches your server.

Database

'store' => 'database',

The list follows signed-in users across devices. Publish and run the migration first:

php artisan vendor:publish --tag="earmark-migrations"
php artisan migrate
  • Signed-in users can choose whether their earmarks clear on logout (the default) or stay for next time.
  • Guests keep their views for the session, and they move to the guest's account when they log in.
  • Schedule pruning of expired guest views:
Schedule::command('model:prune', ['--model' => [\Pixelworxio\Earmark\Models\SavedView::class]])->daily();

The endpoints run behind the web middleware (sessions and CSRF), only touch the current user's or guest's own list, accept same-site paths only, and are rate limited.

Your own store

Register a store with load() and save(views):

Earmark.store('team', (settings) => ({
    async load() {
        return fetch('/team/earmarks').then((response) => response.json())
    },
    save(views) {
        navigator.sendBeacon('/team/earmarks', JSON.stringify(views))
    },
}))
Demo
You are looking at a demo

This site shows Earmark, a Livewire package that keeps the pages you save alive and one click away. Every app here runs on simulated data, and nothing you do is stored on the server.

Earmark is still in development and not yet ready for production use.

Get in touch