Updated for Kotlin 1.8.0 + Ktor 2.2.2
Server side for the Lynks project offering backend web services for entry management. Accompanied by lynks-ui project which provides a front-end webapp.
- Ktor - Kotlin async web framework, using the Netty engine
- Exposed - Kotlin SQL framework
- Postgres - Modern and scalable RDBMS as core data store
- H2 - Embeddable database for testing or standalone deployments
- HikariCP - High performance JDBC connection pooling
- Flyway - Database migrations
- Konf - Type-safe configuration management
- JUnit 5, Mockk, AssertJ and Rest Assured for testing
- Kover for code coverage, publishing to Codecov through GitHub Actions
- Create and manage a number of different entry types:
- links - bookmarks with dynamic extraction capabilities
- notes - Markdown text
- snippet - small code or text segments
- file - file uploads
- Manage your entries within tags and collections with hierarchy support
- Rich sorting, filtering and pagination capabilities
- Full-text search within notes and extracted webpage content (readable view)
- Automatic extraction of link content (screenshots), thumbnail generation and text content extraction - keep the content forever even if the site becomes unavailable
- Find and link to discussions about links on Reddit and Hacker News
- Automated YouTube metadata retrieval and youtube-dl integration
- Comment on your entries and upload additional file attachments
- Full history and audit on all entries - travel back in time to view or revert back to previous versions
- Scheduled adhoc and recurring reminders with notifications through the webapp, Pushover or email
- Scheduled digest emails to remind you of unread links in your collection
- Easy single command Docker Compose based deployment (
Ktor
,Nginx
andExpress
components)
- markdown @abcde --> keep same link in markdown (@abcde) and then transform in html for correct title
- automated checks for dead links
- update to Angular 15 when libs are updated
- file sets with multiple uploads
- entry colours
- two-factor auth pages
- hint for users to create new collections with parents by path