ShaarIt

ShaarIt est un client Android natif pour Shaarli, le gestionnaire de favoris auto-hébergé. Développé avec les technologies Android modernes, il offre une expérience mobile fluide pour gérer vos liens.

Tech Stack Android Jetpack Compose License


📱 Fonctionnalités

🔐 Authentification

  • Connexion sécurisée à votre instance Shaarli auto-hébergée (API v1)
  • Stockage chiffré des tokens JWT et secrets API via EncryptedSharedPreferences
  • Génération automatique de tokens JWT avec algorithme HS512

📚 Gestion des Favoris

  • Flux infini : Défilement continu avec chargement progressif (Paging 3)
  • Recherche avancée : Recherche locale avec FTS4 (full-text search) et filtrage par tags
  • Mode hors-ligne : Consultation et modification des liens même sans connexion
  • Ajout rapide : Création de liens privés/publics avec description, tags et extraction automatique de métadonnées
  • Édition : Modification complète des liens existants avec éditeur Markdown
  • Suppression : Gestion facile des favoris avec file d'attente de sync
  • Détection des doublons : Alerte lors de l'ajout d'un lien existant avec option de mise à jour
  • Liens épinglés : Mise en avant des liens importants

🏷️ Gestion des Tags

  • Vue dédiée pour parcourir tous les tags
  • Compteur d'utilisation par tag
  • Filtrage rapide du flux par tag
  • Tags favoris pour accès rapide

📁 Collections

  • Organisation des liens en collections
  • Collections intelligentes avec filtres automatiques
  • Vue grille adaptative pour les collections

📝 Éditeur Markdown

  • Édition avec prévisualisation en temps réel
  • Mode édition/prévisualisation/split
  • Mode lecture focus sans distraction
  • Barre d'outils de formatage

🌐 Extraction de Métadonnées

  • Extraction automatique des OpenGraph (titre, description, image)
  • Détection du type de contenu (article, vidéo, image, audio, code, etc.)
  • Estimation du temps de lecture
  • Extraction du nom du site

📊 Tableau de Bord

  • Statistiques d'utilisation (liens totaux, cette semaine, ce mois)
  • Temps de lecture total et moyen
  • Répartition par type de contenu
  • Tags les plus utilisés
  • Graphique d'activité sur 30 jours

💾 Import/Export

  • Export JSON (format complet avec métadonnées)
  • Export CSV (compatible Excel)
  • Export HTML (format Netscape/Chrome bookmarks)
  • Import depuis JSON (export ShaarIt)
  • Import depuis HTML (bookmarks Chrome/Firefox)

🔄 Synchronisation

  • Synchronisation automatique en arrière-plan (WorkManager)
  • Mode offline-first : modifications en attente
  • Résolution de conflits intelligente
  • File d'attente des opérations

🔗 Intégration système

  • Share Intent Android : Sauvegarde rapide depuis n'importe quelle app
  • App Shortcuts : Accès rapide via appui long sur l'icône (Ajouter, Aléatoire, Rechercher, Collections)
  • Quick Settings Tile : Tuile pour ajouter rapidement un lien
  • Widget : Widget d'accueil affichant les liens récents
  • Ouverture des liens dans le navigateur par défaut

🎨 Interface Utilisateur

  • Material You (Monet) : Couleurs dynamiques basées sur le fond d'écran (Android 12+)
  • Mode OLED : Noir pur pour les écrans AMOLED
  • Design premium : Thème sombre moderne avec dégradés
  • Material Design 3 : Composants UI natifs Android
  • Animations fluides : Transitions et effets visuels
  • Trois modes d'affichage : Liste détaillée, grille compacte, ou vue compacte
  • Pull-to-refresh : Actualisation du flux par glissement

🛠️ Stack Technique

Catégorie Technologie
Langage Kotlin 2.0.0
UI Jetpack Compose + Material Design 3
Architecture Clean Architecture + MVVM
Injection de dépendances Dagger Hilt 2.51.1
Réseau Retrofit 2.11.0 + Moshi 1.15.1 + OkHttp 4.12.0
Base de données locale Room 2.6.1
Pagination Paging 3
Concurrence Coroutines & Flow
Background work WorkManager 2.9.0
Stockage sécurisé AndroidX Security Crypto
Navigation Navigation Compose
Compilation Gradle 8.0+ avec KSP

Compatibilité

  • minSdk: 24 (Android 7.0)
  • targetSdk: 34 (Android 14)
  • compileSdk: 34
  • JDK requis: 17+

📥 Installation

Prérequis utilisateur

  • Un serveur Shaarli auto-hébergé (v0.12+) avec l'API v1 activée
  • Un appareil Android 7.0+ ou un émulateur

Obtenir l'APK

Méthode 1 : Téléchargement direct

Récupérez le dernier APK depuis la section Releases.

Méthode 2 : Compilation depuis les sources

  1. Clonez le repository :
git clone https://github.com/votre-username/ShaarIt.git
cd ShaarIt
  1. Compilez l'APK debug :
./gradlew assembleDebug

L'APK sera généré dans app/build/outputs/apk/debug/

  1. Ou compilez l'APK release (nécessite une configuration de signature) :
./gradlew assembleRelease

📖 Guide d'utilisation

Première configuration

  1. Ouvrez l'application
  2. Entrez l'URL de votre instance Shaarli
  3. Entrez votre nom d'utilisateur et mot de passe
  4. L'application générera automatiquement les tokens API nécessaires

Ajouter un lien

  • Via l'app : Appuyez sur le bouton + et entrez l'URL
  • Via le partage Android : Partagez n'importe quelle URL vers ShaarIt depuis n'importe quelle app
  • Via Quick Settings : Ajoutez la tuile ShaarIt dans vos paramètres rapides

Organiser vos liens

  • Utilisez les tags pour catégoriser vos liens
  • Créez des collections pour regrouper des liens par thème
  • Épinglez les liens importants pour un accès rapide

Mode hors-ligne

  • Tous les liens sont stockés localement dans la base de données Room
  • Les modifications sont synchronisées automatiquement quand la connexion est disponible
  • Consultez vos favoris même sans connexion Internet

🏗️ Architecture

Le projet suit les principes de la Clean Architecture avec une séparation claire des couches :

├── data/                    # Couche de données
│   ├── api/                # API Retrofit
│   ├── local/              # Base de données Room
│   │   ├── dao/           # Data Access Objects
│   │   ├── entity/        # Entités Room
│   │   └── database/      # Configuration de la DB
│   ├── sync/              # Synchronisation
│   ├── export/            # Import/Export
│   └── repository/        # Implémentations des repositories
├── domain/                 # Couche domaine
│   ├── model/             # Modèles métier
│   └── repository/        # Interfaces des repositories
├── presentation/           # Couche présentation
│   ├── feed/              # Écran principal
│   ├── add/               # Ajout de liens
│   ├── edit/              # Édition de liens
│   ├── tags/              # Gestion des tags
│   ├── collections/       # Collections
│   ├── dashboard/         # Tableau de bord
│   ├── settings/          # Paramètres
│   └── nav/               # Navigation
└── core/                   # Utilitaires
    ├── di/                # Injection de dépendances
    ├── network/           # Configuration réseau
    └── storage/           # Stockage local

🚀 Roadmap

  • Synchronisation en arrière-plan avec WorkManager
  • Mode hors-ligne avec Room
  • Éditeur Markdown
  • Extraction de métadonnées OpenGraph
  • Collections d'organisation
  • Liens épinglés
  • Widget d'accueil
  • App Shortcuts
  • Quick Settings Tile
  • Tableau de bord analytique
  • Import/Export
  • Material You (Monet)
  • Recherche avancée avec filtres multiples
  • Suggestions de tags par IA
  • Mode lecture sans distraction pour les articles
  • Partage de collections

🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :

  • Ouvrir une issue pour signaler un bug ou suggérer une fonctionnalité
  • Soumettre une pull request
  • Améliorer la documentation

Signaler un bug

  1. Vérifiez que le bug n'a pas déjà été signalé
  2. Ouvrez une issue avec :
    • Description claire du problème
    • Étapes pour reproduire
    • Comportement attendu vs réel
    • Version Android et de l'app
    • Logs si disponibles

📝 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


🙏 Remerciements

  • Shaarli - Le projet original de gestionnaire de favoris
  • Jetpack Compose - Framework UI moderne d'Android
  • La communauté open source pour les excellentes bibliothèques utilisées

Fait avec ❤️ pour la communauté Shaarli
Description
Sharrit - Android app to view, manage and share URL from Shaari application.
Readme 1.2 MiB
Languages
Kotlin 97.3%
Python 2%
PowerShell 0.7%