No description
- Dart 100%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| android/app/src/main | ||
| ios/Runner | ||
| lib | ||
| pubspec.yaml | ||
| README.md | ||
Shaarli Flutter Client
Un client mobile élégant pour Shaarli, le gestionnaire de signets personnel et minimaliste.
Fonctionnalités
- 🔐 Connexion sécurisée via clé API (JWT HS512)
- 📋 Liste des liens avec défilement infini
- 🔍 Recherche par mot-clé ou par tag
- 🏷️ Navigation par tags avec compteur d'occurrences
- ➕ Ajout / modification / suppression de liens
- 🔒 Support des liens privés
- 🌐 Ouverture dans le navigateur externe
- 📋 Copie d'URL en un tap
- 🔄 Pull-to-refresh
- 💾 Persistence des identifiants (SharedPreferences)
Prérequis
- Flutter SDK ≥ 3.0.0
- Une instance Shaarli avec l'API REST v1 activée
Installation
cd shaarli_client
flutter pub get
flutter run
Configuration de Shaarli
- Connectez-vous à votre Shaarli
- Allez dans Outils → Gestion de la clé API
- Copiez la clé API (API secret)
- Dans l'app, entrez l'URL de votre instance et la clé API
Structure du projet
lib/
├── main.dart # Point d'entrée, thème, routing
├── models/
│ └── link.dart # Modèle de données ShaarliLink
├── services/
│ └── shaarli_service.dart # Client API REST Shaarli
├── providers/
│ └── app_provider.dart # État global (Provider)
├── theme/
│ └── app_theme.dart # Thème dark personnalisé
├── screens/
│ ├── login_screen.dart # Écran de connexion
│ ├── home_screen.dart # Liste des liens + recherche
│ ├── link_detail_screen.dart # Détail d'un lien
│ ├── add_edit_link_screen.dart# Ajout / modification
│ └── tags_screen.dart # Navigation par tags
└── widgets/
└── link_card.dart # Carte de lien réutilisable
Dépendances principales
| Package | Usage |
|---|---|
provider |
Gestion d'état |
http |
Appels API REST |
dart_jsonwebtoken |
Génération des tokens JWT |
shared_preferences |
Stockage des identifiants |
url_launcher |
Ouverture de liens |
timeago |
Dates relatives (FR) |
API Shaarli
L'authentification utilise des tokens JWT signés avec l'algorithme HS512 :
Authorization: Bearer <JWT signé avec la clé API>
Endpoints utilisés :
GET /api/v1/info— Vérification de la connexionGET /api/v1/links— Liste des liens (pagination)POST /api/v1/links— Créer un lienPUT /api/v1/links/{id}— Modifier un lienDELETE /api/v1/links/{id}— Supprimer un lienGET /api/v1/tags— Liste des tags