MCPSERV.CLUB
Servas

Servas

Self-Hosted

Self-hosted bookmark manager with tags and groups

Active(89)
719stars
0views
Updated 15 days ago
Servas screenshot

Overview

Discover what makes Servas powerful

Servas is a self‑hosted bookmark and link sharing platform built with Laravel 10 on the backend and Inertia.js coupled with Svelte for a modern, reactive frontend. The core idea is to provide developers with an extensible, lightweight solution that can be deployed in a single container or scaled across multiple services. The application exposes a REST‑like API through Laravel’s resource controllers, while the UI is driven by Svelte components that consume the same endpoints via Inertia.js. This tight coupling means developers can swap out the frontend stack (e.g., replace Svelte with Vue or React) without touching business logic, thanks to Inertia’s “server‑side rendering” abstraction.

Backend

Frontend

Database

Containerization

Overview

Servas is a self‑hosted bookmark and link sharing platform built with Laravel 10 on the backend and Inertia.js coupled with Svelte for a modern, reactive frontend. The core idea is to provide developers with an extensible, lightweight solution that can be deployed in a single container or scaled across multiple services. The application exposes a REST‑like API through Laravel’s resource controllers, while the UI is driven by Svelte components that consume the same endpoints via Inertia.js. This tight coupling means developers can swap out the frontend stack (e.g., replace Svelte with Vue or React) without touching business logic, thanks to Inertia’s “server‑side rendering” abstraction.

Technical Stack

  • Backend: Laravel 10 (PHP 8.4), Eloquent ORM, Sanctum for API authentication, built‑in queues and event broadcasting.
  • Frontend: Inertia.js acting as a bridge between Laravel routes and Svelte components; Tailwind CSS for utility‑first styling.
  • Database: Supports SQLite (default), MySQL, and MariaDB. All migrations are idempotent and can be applied via php artisan migrate. The data model includes users, bookmarks, tags, groups (with self‑referential nesting), and smart‑group definitions.
  • Containerization: Official Docker image (beromir/servas) ships with a ready‑to‑run docker-compose file. The image is built on top of an Alpine PHP base, keeping the footprint minimal (~200 MB). For production, the recommended stack uses SQLite for simplicity; MySQL/MariaDB are optional but supported via separate compose files.

Core Capabilities & APIs

  • Bookmark CRUD: Create, read, update, delete bookmarks with URL validation and metadata extraction (title, favicon).
  • Tagging & Grouping: Many‑to‑many relationships allow bookmarks to belong to multiple tags and groups. Groups can be nested arbitrarily, enabling hierarchical organization.
  • Smart Groups: Declarative group rules that automatically include bookmarks based on tag membership; implemented as query scopes in Laravel.
  • Import/Export: JSON and HTML bookmark file support, with endpoints for bulk upload/download.
  • Two‑Factor Authentication: Laravel’s built‑in TOTP support, configurable via .env.
  • Browser Extensions: A companion Chrome/Firefox extension pushes new bookmarks directly to the API via authenticated POST requests.

The API is documented in Swagger/OpenAPI format (generated automatically by a package), allowing developers to quickly generate client SDKs or integrate Servas into existing workflows.

Deployment & Infrastructure

Deploying Servas is as simple as pulling the Docker image and running docker compose up -d. The application requires only a writable storage directory for migrations, logs, and the SQLite file. For larger deployments, a dedicated MySQL/MariaDB container can be used; the docker-compose examples provide ready‑made configurations. Because the code is stateless aside from the database, horizontal scaling is straightforward: multiple containers can share a common MySQL instance and an Nginx reverse proxy handles load balancing. The Laravel cache and session drivers can be switched to Redis or Memcached for performance gains.

Integration & Extensibility

Servas exposes a clean RESTful API that can be consumed by any client. Developers can hook into events (e.g., BookmarkCreated, TagUpdated) to trigger side effects such as syncing with external services or updating a search index. The plugin architecture is minimal but extensible: adding a new Laravel service provider or an Inertia component only requires updating the composer.json and rebuilding assets. Webhooks are available for external systems to listen to bookmark changes, making it suitable as a backend for custom dashboards or mobile apps.

Developer Experience

The project follows Laravel conventions, so developers familiar with the framework will find routing, middleware, and model binding intuitive. The codebase is well‑structured with a clear separation of concerns: controllers, resources, and policies reside in dedicated directories. Documentation is concise but covers all essential aspects—installation, configuration, API usage, and extension points. The community is active on GitHub; issues and pull requests are handled promptly, ensuring that feature requests (e.g., additional authentication providers) can be integrated quickly.

Use Cases

  • Personal Knowledge Management: A developer wants a self‑hosted, searchable bookmark collection that can be accessed from any device without relying on third‑party services.
  • Team Collaboration: A small team uses Servas to curate shared resources, leveraging groups and tags for role‑based access control.
  • Custom Mobile Apps: The API can be consumed by a native iOS/Android app, providing offline caching and push notifications for new bookmarks.
  • Enterprise Integration: Companies can embed Servas into their intranet, using LDAP or OAuth for authentication and integrating with existing document management systems.

Advantages

  • Full Control: Self‑hosting guarantees data privacy and compliance with internal policies.
  • Modern Stack: Leveraging Laravel 10, Inertia.js, and Svelte delivers a fast developer experience with hot‑module reloading and type safety via PHP 8.4.
  • Lightweight: The Docker image is small, and SQLite support eliminates the need for a separate database service in most scenarios.
  • Extensible: The API, event system, and webhook support make it easy to extend Servas for custom workflows.
  • Open Source & Free: No licensing costs or usage limits, unlike commercial bookmark managers.

In summary, Serv

Open SourceReady to get started?

Join the community and start self-hosting Servas today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
other
License
GPL-3.0
Stars
719
Technical Specs
Pricing
Open Source
Database
SQLite
Docker
Official
Supported OS
LinuxDocker
Author
beromir
beromir
Last Updated
15 days ago