Save, organize, and sync your bookmarks — beautifully.
LinkArena is a native Android app for saving, organizing, and managing bookmarks. It supports group-based organization, full-text search, automatic URL metadata fetching, and sync with the LinkArena web platform.
Web app: sayeedjoy/linkarena
- Authentication — Email/password login and signup with secure session management
- Bookmark management — Create, edit, delete, and view bookmarks with rich metadata (title, description, favicon)
- Group organization — Organize bookmarks into named groups for quick access
- Search — Full-text search across all saved bookmarks
- Auto metadata fetch — Automatically retrieves title, description, and favicon when adding a URL
- Share to save — Share any link from a browser or app directly into LinkArena; URL is prefilled and metadata is fetched instantly
- Theme support — System, Light, and Dark modes via Material 3 dynamic theming
- Offline-first — Local Room database keeps your data available without a connection
Coming soon
| Layer | Technology |
|---|---|
| Language | Kotlin 2.2.10 |
| UI | Jetpack Compose + Material 3 |
| Architecture | Clean Architecture + MVVM |
| Dependency Injection | Hilt 2.59.2 |
| Networking | Retrofit 2.10.0 + OkHttp 4.12.0 + Kotlinx Serialization |
| Local Storage | Room 2.7.2 |
| Preferences | DataStore |
| Navigation | Navigation Compose 2.7.6 |
| Image Loading | Coil 2.5.0 |
| Theming | Material Kolor 4.1.1 |
LinkArena follows Clean Architecture with an MVVM presentation layer, keeping concerns well-separated and testable.
app/src/main/java/com/sayeedjoy/linkarena/
├── data/
│ ├── local/
│ │ ├── db/ # Room database, DAOs, entities
│ │ └── datastore/ # DataStore preferences
│ ├── remote/
│ │ ├── api/ # Retrofit API interface
│ │ ├── auth/ # Auth interceptor
│ │ └── dto/ # Data transfer objects
│ └── repository/ # Repository implementations
├── di/ # Hilt modules
├── domain/
│ ├── model/ # Domain models
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Business logic use cases
└── ui/
├── auth/ # Login, Signup, ForgotPassword
├── bookmark/ # Add/Edit/Detail screens + ViewModels
├── groups/ # Groups management
├── home/ # Home feed
├── settings/ # App settings
├── components/ # Shared Compose components
├── navigation/ # Route definitions + NavGraphs
└── theme/ # Color, typography, theme
- Android Studio (latest stable)
- Android SDK with API level 36
- Clone or download the repository and open it in Android Studio.
- Android Studio will detect the Gradle project and prompt you to sync — click Sync Now.
- Ensure
local.propertiescontains a validsdk.dirpointing to your Android SDK (Android Studio sets this automatically). - Once sync completes, select the app run configuration from the toolbar.
- Click Run (or press
Shift + F10) to build and deploy to an emulator or physical device.
- Open any app (browser, social media, etc.) and tap Share on a link.
- Select LinkArena from the share sheet.
- The Add Bookmark screen opens with the URL prefilled.
- Metadata (title, description, favicon) is fetched automatically.
- Tap Add Bookmark to save.
If you are not logged in, LinkArena holds the shared URL and resumes the flow after authentication completes.
Contributions are welcome. Please open an issue before submitting a pull request for significant changes.
This project is not yet licensed. All rights reserved by the author.
