Redface 2
Le futur client Android pour Hardware.fr.
Voir les spécifications Voir les guides 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 5 |
| 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 extensions 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 5 + 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
Phase courante : Phase 2 — Écriture, close-out alpha (roadmap). La Phase 1 (lecture : login, drapeaux, forum, topics, cache, deep links, recherche de base) est livrée ; la Phase 2 ferme les derniers flux d’écriture et de polish avant de basculer vers les MPs.
Les specs restent la source de vérité du projet, mais elles doivent désormais refléter le code réel : tout écart entre une page canonique et le repo est traité comme un bug de spec, pas comme une dette future. Voir /spec-reality pour la procédure d’audit cross-fichier.
Les contributions sont les bienvenues : ouvrez une issue, commentez les existantes ou proposez une PR sur le slice courant.
Sommaire
Spécifications
- Méthodologie — Comment le projet spécifie, prototype et teste
- Scope fonctionnel — Ce que l’app doit permettre de faire
- 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
- Protocole HFR — Contrats externes, endpoints et edge cases
- Roadmap — Phases de développement
- Extensions communautaires — Les addons userscript qui deviennent natifs
- ADRs — Les décisions structurantes déjà prises
Guides
- Contribuer — Comment participer
- Pourquoi Redface 2 ? — Le contexte et les doutes assumés
- Nommage — Le futur nom de l’app
- Références écosystème HFR — Clients tiers, docs MesDiscussions, outillage compagnon
- Proxy utilisateur — Router le trafic HFR via un proxy configurable dans l’app