marceauka/shaark
Shaark is a self-hosted Laravel and Vue.js app for keeping bookmarks, notes, and passwords in one place. Save and share links, organize entries with tags, search your archive, and keep your personal knowledge base private on your own server.
Shaark is a self-hosted Laravel application (bookmarks + notes + full-text search), not a Composer library you require — so "getting started" means standing up an instance, then extending it.
.env.example to .env.APP_URL, APP_KEY (php artisan key:generate), and your DB connection (SQLite is the low-friction default; MySQL/MariaDB for anything multi-user).php artisan migrate and create your first account — as of 1.2.44 user creation and deletion from the admin UI actually work (see #77, #87), so you no longer need to hand-edit the DB or tinker to provision a second account.Where to look first in the codebase: routes/ (web + any API routes), app/Models/ (Link, Tag, Note), and the config directory for archive/search toggles. First real use case: replace a browser bookmark folder + a notes app with one searchable index, tagging entries by project so search + tag filter becomes your retrieval path.
Capture workflow. The daily loop is: paste URL → title auto-fills → add tags → optionally toggle "archive" to keep a local copy of the page. Treat tags as your primary taxonomy (project, client, topic) and resist free-text-only; tags are what make the search results navigable months later.
Multi-user provisioning (new in 1.2.44). The create/delete user fixes unlock the small-team pattern: one admin provisions accounts per person rather than sharing credentials. Pattern:
admin account separate from daily-use accounts so a mis-scoped delete doesn't take out your own data.Sharing / read-only access. Use the public-link or guest-mode features for anything you want to hand to a colleague or client instead of granting an account. Pattern: keep internal/project tags private, and expose only curated entries as public links.
Integration tips.
app/Console/Commands), and schedule it in Kernel.php. Model-level writes bypass index/archive side effects, so mirror whatever the controllers do.APP_URL in sync or generated public links will point at the wrong host.Ops pattern. Nightly: DB dump + archive directory tarball. Weekly: prune archived copies you never revisited. This is the single highest-value habit for a Shaark instance, because archive storage grows monotonically.
[email protected] (changed in 1.2.44). Any account created without an explicit email now lands on that placeholder — which means password-reset and notification mail go nowhere, and a second such user may collide on a unique email index. Always fill in a real email at creation time; if the create form doesn't ask for one, set it right after via tinker or the edit screen.php artisan storage:link must have been run. Failed archives often fail quietly — check the Laravel log, not the UI.git diff against upstream and rebase carefully on each release, or you'll lose the 1.2.44-style fixes.php artisan migrate, clear caches (config:clear, view:clear), then smoke-test login, user create, user delete, and search on a non-production instance.How can I help you explore Laravel packages today?