{"id":17010523,"url":"https://github.com/raharrison/lynks-server","last_synced_at":"2025-04-12T08:26:38.623Z","repository":{"id":31054521,"uuid":"126737402","full_name":"raharrison/lynks-server","owner":"raharrison","description":"Backend for Lynks project - Self-hosted link and note manager","archived":false,"fork":false,"pushed_at":"2023-03-06T22:57:33.000Z","size":1447,"stargazers_count":8,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T03:33:18.300Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raharrison.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-25T20:29:36.000Z","updated_at":"2024-02-15T15:32:26.000Z","dependencies_parsed_at":"2023-02-13T04:00:28.176Z","dependency_job_id":null,"html_url":"https://github.com/raharrison/lynks-server","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Flynks-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Flynks-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Flynks-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raharrison%2Flynks-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raharrison","download_url":"https://codeload.github.com/raharrison/lynks-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248538771,"owners_count":21121036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T06:04:44.650Z","updated_at":"2025-04-12T08:26:38.605Z","avatar_url":"https://github.com/raharrison.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Kotlin](https://img.shields.io/badge/kotlin-1.8.0-blue.svg?logo=kotlin)](http://kotlinlang.org)\n![Build](https://github.com/raharrison/lynks-server/workflows/Build/badge.svg)\n\n## Lynks Server - Self-hosted link and note manager\n\n**Updated for Kotlin 1.8.0 + Ktor 2.2.2**\n\nServer side for the Lynks project offering backend web services for entry management. Accompanied by [lynks-ui](https://github.com/raharrison/lynks-ui) project\nwhich provides a front-end webapp.\n\n### Libraries used:\n\n - [Ktor](https://github.com/ktorio/ktor) - Kotlin async web framework, using the [Netty](https://github.com/netty/netty) engine\n - [Exposed](https://github.com/JetBrains/Exposed) - Kotlin SQL framework\n - [Postgres](https://www.postgresql.org/) - Modern and scalable RDBMS as core data store\n - [H2](https://github.com/h2database/h2database) - Embeddable database for testing or standalone deployments\n - [HikariCP](https://github.com/brettwooldridge/HikariCP) - High performance JDBC connection pooling\n - [Flyway](https://flywaydb.org/) - Database migrations\n - [Konf](https://github.com/uchuhimo/konf) - Type-safe configuration management\n - [JUnit 5](https://junit.org/junit5/), [Mockk](https://github.com/mockk/mockk), [AssertJ](http://joel-costigliola.github.io/assertj/) and [Rest Assured](http://rest-assured.io/) for testing\n - [Kover](https://github.com/Kotlin/kotlinx-kover) for code coverage, publishing to [Codecov](https://about.codecov.io/) through GitHub Actions\n\n### Features\n\n- Create and manage a number of different entry types:\n  - links - **bookmarks** with dynamic extraction capabilities\n  - notes - **Markdown** text\n  - snippet - small code or text segments\n  - file - file uploads\n- Manage your entries within **tags** and **collections** with hierarchy support\n- Rich sorting, filtering and pagination capabilities\n- **Full-text search** within notes and extracted webpage content (readable view)\n- **Automatic extraction** of link content (screenshots), thumbnail generation and text content extraction - **keep the content forever** even if the site becomes unavailable\n- Find and link to discussions about links on Reddit and Hacker News\n- Automated YouTube metadata retrieval and **youtube-dl** integration\n- Comment on your entries and upload additional file attachments\n- Full history and audit on all entries - travel back in time to view or revert back to previous versions\n- Scheduled adhoc and recurring **reminders** with notifications through the webapp, Pushover or email\n- Scheduled digest emails to remind you of unread links in your collection\n- Easy single command **Docker Compose** based deployment (`Ktor`, `Nginx` and `Express` components)\n\n## Roadmap:\n\n### Server\n\n- markdown @abcde --\u003e keep same link in markdown (@abcde) and then transform in html for correct title\n- automated checks for dead links\n\n### UI\n\n- update to Angular 15 when libs are updated\n- file sets with multiple uploads\n- entry colours\n- two-factor auth pages\n- hint for users to create new collections with parents by path\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraharrison%2Flynks-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraharrison%2Flynks-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraharrison%2Flynks-server/lists"}