A Material 3 Android app to save, organize, and rediscover links. Appears in the Android share sheet from any app.
- Save any URL with auto-fetched title, description, and favicon
- Appears in Android's share menu from Chrome, YouTube, Twitter, and more
- Organize links into custom folders with icon and color
- Full-text search by title, domain, and description
- Favorites, read/unread tracking
- Grid and list view toggle
- Sort by date, title, domain — filter by favorites or unread
- Reminder to notify your saved links
- Bulk select, move, and delete
- Inbuilt browser for quick view
- Import and export links as JSON or CSV
- Import browser bookmarks from Chrome, Firefox, or Safari
- Material You dynamic color with dark mode support
| Layer | Library |
|---|---|
| UI | Jetpack Compose, Material 3 |
| Architecture | MVVM, StateFlow |
| Database | Room |
| Dependency Injection | Hilt |
| Image Loading | Coil |
| Metadata Scraping | Jsoup |
| Navigation | Compose Navigation |
| Async | Kotlin Coroutines |
| Minimum SDK | API 26 (Android 8.0) |
| Target SDK | API 34 |
app/src/main/java/com/linksi/app/
├── data/
│ ├── db/
│ │ ├── Daos.kt
│ │ ├── Entities.kt
│ │ └── LinksDatabase.kt
│ └── repository/
│ └── LinkRepository.kt
├── di/
│ └── AppModule.kt
├── domain/
│ └── model/
│ └── Models.kt
├── LinksApplication.kt
├── MainActivity.kt
├── ui/
│ ├── components/
│ │ ├── Dialogs.kt
│ │ └── LinkCards.kt
│ ├── screens/
│ │ ├── FolderScreen.kt
│ │ ├── HomeScreen.kt
│ │ ├── HomeViewModel.kt
│ │ ├── InAppBrowser.kt
│ │ ├── SettingsScreen.kt
│ │ ├── SettingsViewModel.kt
│ │ ├── ShareReceiverActivity.kt
│ │ └── TopBar.kt
│ └── theme/
│ ├── Theme.kt
│ └── Typography.kt
└── utils/
├── ImportExportManager.kt
└── MetadataFetcher.kt
- Android Studio Hedgehog (2023.1.1) or newer
- JDK 17+
- Android SDK API 34
- Gradle 8.4 (downloaded automatically)
- Clone the repository
git clone https://github.com/AsukaAzure/linksi.git
cd linksi-
Open in Android Studio
- File → Open → select the project folder
- Wait for Gradle sync to complete
-
Run on a device or emulator
- Select a device from the toolbar
- Click Run or press Shift+F10
./gradlew assembleReleaseThe output will be at app/release/app-release.apk. You will need a signing config set up in build.gradle or Android Studio before building a signed release.
- Folder Structure
- Import/Export
- Appearance in share page
- In App Browser
- Reminder
- Nested folders & Password manager
- AI Intigration to organize the links
Built with Jetpack Compose and Material 3