Skip to content
This repository was archived by the owner on Mar 21, 2025. It is now read-only.

Conversation

@GuillaumeEbert
Copy link

Bonjour,

A travers cette PR je vous présente ma réalisation de votre sujet de test technique. Au fils de ce code, vous trouverez l'implémentation de mon savoir-faire sur une architecture multi-module avec des plugins Gradle.

Pourquoi du multi-module ?

Le multi-module est une des meilleures approches pour bien compartimenter les responsabilités de chacun et verrouiller l'accès aux classes à d'autre couche. (C'est ici qu'on regrette que le par défaut de Kotlin est public et non internal).

Les deux écrans sont représentés par deux features exposant publiquement uniquement deux méthodes d'extensions permettant de configurer le Navgraph implémenté dans l'application.

Dans le core on retrouve les couches classique d'une clean archicheture ainsi que des modules d'aides : design-system et tests. Ces modules me permettent d'uniformiser le code commun pour le design des composants/Theme et des classes nécessaires pour mes tests unitaires.

Chaque module est construit à l'aide de plugin Gradle disponible dans le sous-projet build-logic. On réduit énormément le boildercode.

Design

Le design est plus qu'élémentaire en respectant à minima les guidelines de material3. Le premier écran affiche une liste de 90 éléments avec des header sticky. Chaque section de la liste partage la même image qui est obtenu via un appel https à ma base. Mettre un appel Http en 2024 n'est pas possible pour moi !

Le second écran affiche des détails supplémentaires sur la carte. J'ai fait le choix de me focaliser sur le peaufinage de l'architecture.

Axe d'amélioration

Les clefs d'api sont en clair dans l'app ce qui est un risque sécuritaire majeur. Pour rester pragmatique, j'ai fait l'entorse sur la récupération de ses informations depuis un appel API. Il en va que dans un vrai environnement ceci est obligatoire.

En vous souhaitant une bonne lecture.

GuillaumeEbert and others added 11 commits February 11, 2024 13:25
Architectural backbones

remove .idea

Inital commit

Build Logic System

Manifest for designsystem as its an android library

Move Theme, Color and Type classes from app module to designsystem module

AcafsxbApplication to enable Hilt functionalities

Remove redundant label in app manifest

AcafsxbApp and structural navigation system

Create NavHost and set it in AcafsxbApp composable

Replace default composable in MainActivity by AcafscbApp composable

Remove composable from project creation

Add planes feature screen

Add Network module to core module

Acafsxb source

Planes screen with network connection and top/bottom bars

Add Weather feature

Toolbar title change

WeatherDataSouce

Add Simple Screen loading

Rework lib and add compose 1.4.0-alpha

Make test available on type lib module

Add EmbeddedTabLayout component

Add WeatherMap to DI Module

weatherMenu as Menu and not as a bench screen

Add Cache logic with WeatherMapCache

Rename plane feature entry function

Provide WeatherRepository

Add log to flow catch for more situation awareness

MenuEntry title as string resources

Empty MetarTafScreen

Weather internal navgraph

Generic map call from repository

WeatherMapScreen Repo and data source

Truncate if there is too much map

Uodate to compose 1.4.0

Add weather

Exit from hibernation after 4 months

Balance Screen

Base from my application

Rebase upsie
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant