Redface 2
Le futur client Android pour Hardware.fr.
Voir la stack technique Voir sur GitHub
Pourquoi une réécriture ?
Redface v1 a rendu service à la communauté HFR pendant des années. Mais sa stack technique a atteint ses limites :
| Redface v1 | Redface 2 | |
|---|---|---|
| Langage | Java 11 | Kotlin |
| UI | XML + ButterKnife | Jetpack Compose |
| Réseau | Retrofit 1.9 (!), OkHttp 3 | OkHttp 4 |
| Async | RxJava 1 | Coroutines + Flow |
| Injection | Dagger 2 | Hilt (KSP) |
| Event bus | Otto | StateFlow |
| minSdk | 16 (Android 4.1, 2012) | 29 (Android 10, 2019) |
Retrofit 1.9 n’est plus maintenu depuis 2016. RxJava 1 depuis 2018. ButterKnife est officiellement déprécié. Le minSdk 16 empêche d’utiliser les APIs modernes.
Un refactoring incrémental serait plus coûteux qu’une réécriture. Chaque brique dépend des autres — migrer Retrofit demande de migrer RxJava, qui demande de migrer les patterns async, qui touche toute l’architecture.
Vision
Redface 2 est conçu pour :
- La vitesse — Scroll fluide à 120fps, prefetch intelligent, cache agressif. L’objectif : que le forum semble local.
- Les features communautaires — Les meilleurs ajouts des userscripts HFR (alertes qualitay, bookmarks, blacklist, redflag…) intégrés nativement.
- La maintenabilité — Architecture modulaire, testable, où chaque feature est isolée. Facile à comprendre pour un nouveau contributeur.
- L’ouverture — Système d’extensions pour que la communauté ajoute ses propres features sans toucher au cœur de l’app.
Vue d’ensemble
graph TB
subgraph "Presentation"
A[Jetpack Compose] --> B[MVI ViewModels]
end
subgraph "Domaine"
B --> C["Repositories (interfaces)"]
end
subgraph "Données"
D["Repository implémentations"]
D --> E[OkHttp 4 + Jsoup]
D --> G[Room Cache]
end
C -.->|implémente| D
E --> F["forum.hardware.fr"]
style A fill:#e74c3c,color:#fff
style B fill:#e67e22,color:#fff
style C fill:#f1c40f,color:#000
style D fill:#16a085,color:#fff
style E fill:#2ecc71,color:#fff
style G fill:#3498db,color:#fff
style F fill:#95a5a6,color:#fff
État du projet
Ce repository est en phase de spécification. Aucun code n’est encore écrit. L’objectif est de :
- Verrouiller les choix techniques avec la communauté
- Définir l’architecture en détail
- Planifier les phases de développement
- Commencer le dev sur des bases solides
Les contributions aux specs sont les bienvenues — ouvrez une issue ou commentez les existantes.
Sommaire
- Stack technique — Pourquoi chaque techno a été choisie
- Architecture — Couches, modules, data flow
- Navigation — Écrans, flows, deep linking
- Modèles de données — Structures du domaine
- Pattern MVI — Architecture UI en détail
- Features communautaires — Les addons userscript qui deviennent natifs
- Nommage — Le futur nom de l’app
- Roadmap — Phases de développement
- Contribuer — Comment participer