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.
Architecture fit Shaark is a full Laravel application (self-hosted bookmark/notes/snippets/password vault), not a Composer library you embed in an existing codebase. The leverage model is therefore either (a) run it as a standalone service and integrate over HTTP, or (b) fork it as the base for an internal knowledge-base product. It is a conventional monolith — Laravel + Blade, MySQL/MariaDB (SQLite for evaluation), Docker/Compose artifacts included. Strong fit for "self-hosted knowledge vault"; poor fit if the requirement is an embeddable component inside an existing application.
Integration feasibility
Low effort to stand up: clone/Docker, artisan migrate, seed the default admin. Moderate effort to make it organization-ready: no first-class LDAP/SAML/OIDC in core, so SSO must be layered in front (oauth2-proxy or similar) or added via a Laravel-6-compatible community package. Backup/restore and upgrade discipline are operator responsibilities.
Technical risk
The dominant risk is the framework, not this release: 1.2.44 targets Laravel 6.20, and Laravel 6 has been out of security support since 2022. Adopting it means inheriting an unpatched framework, so security fixes become our burden or require a fork-and-upgrade project. Secondary risks: single-maintainer project with a small contributor base and irregular release cadence; the fact that user create/delete needed fixing (#77, #87) indicates the account lifecycle was fragile and should be explicitly regression-tested; and the new default email [email protected] uses a reserved domain, so any user left on the default will silently fail to receive password resets or notifications and may collide with other users on unique-email constraints.
Key questions
Stack fit Standard LEMP/LAMP: nginx + php-fpm, MySQL/MariaDB, Composer; Docker Compose available for pilots. Note that the Laravel 6.20 pin constrains the PHP version range and, more importantly, constrains any add-on package we might want (SSO, audit logging) to Laravel-6-compatible releases — a narrowing set.
Migration path Greenfield deployment → HTML bookmark import → pilot cohort → broader rollout. There is no legacy system migration unless we are displacing an existing bookmarking tool, in which case export format fidelity is the only migration workstream.
Compatibility
The [email protected] default is a behavior change for provisioning and seeding, not a breaking API change; existing users retain their stored addresses, so blast radius is limited to new accounts, seeded admins, and any test fixtures that assert the old value. The user create/delete fixes are additive/corrective and should be validated against our provisioning scripts rather than assumed safe.
Sequencing
Maintenance
Highest-lift area. Expect to own framework security patching (or fund a fork uplift) on a recurring basis. Treat upstream as a feature source, not a security source. Pin to a reviewed commit rather than tracking latest, and re-review on each release.
Support Community-only via GitHub issues; no vendor, no SLA. Requires a named in-house owner with PHP/Laravel competence. Escalation path for a broken upgrade is effectively "we fix it."
Scaling CRUD workload with DB-bound search; comfortable for tens to low hundreds of users on a single node. Large bookmark corpora make search/indexing the first bottleneck — plan to tune or add an index before it becomes user-visible.
Failure modes
[email protected] accounts silently losing password-reset mail; example.com is reserved and will not deliver.Ramp-up End users: low — plain web UI, no training burden. Operators: medium — requires Laravel/PHP fluency to patch, configure mail/auth, and evaluate upgrades. Budget roughly one engineer-week for a pilot including SSO and backup hardening, plus a standing fraction of an FTE for patch ownership.
How can I help you explore Laravel packages today?