5 exemples d'apps dévelopées en React Native : de Discord à Pinterest

Découvrez comment React Native transforme l'expérience mobile, de Discord à Pinterest, en offrant rapidité et cohérence sur iOS et Android.

L'univers des applications mobiles évolue à une vitesse fulgurante, où chaque seconde compte et chaque expérience utilisateur peut faire la différence.

Au cœur de cette révolution numérique, React Native, un framework développé par Meta (anciennement Facebook), se distingue comme un outil puissant permettant de créer des applications mobiles performantes et esthétiquement agréables pour iOS et Android à partir d'un seul et même code. Cet article se propose de vous faire découvrir cinq applications innovantes développées avec React Native. De la communication instantanée avec Discord à la gestion de vos inspirations avec Pinterest, en passant par l'amélioration de l'expérience de voyage avec Airbnb, le contrôle de votre véhicule Tesla, et le suivi de vos campagnes publicitaires Facebook avec Meta Ads Manager, ces exemples illustrent parfaitement comment React Native révolutionne le monde des applications mobiles. Découvrons ensemble comment ce framework JavaScript aide les développeurs à réduire les coûts et le temps de développement tout en offrant aux utilisateurs des applications rapides, réactives et visuellement attrayantes.

 

1. Discord : Un hub de communication unifié

 

Dans le monde numérique d'aujourd'hui, Discord s'est rapidement imposé comme une plateforme de communication incontournable, offrant chat vocal, vidéo, et texte aux communautés et amis du monde entier. Grâce à React Native, Discord a réussi à étendre son expérience utilisateur unique à des millions d'utilisateurs mobiles sur iOS et Android, tout en maintenant une performance et une qualité exceptionnelles.

 

React Native a permis à Discord de partager une grande partie de son code entre les plateformes mobiles, réduisant ainsi le temps de développement et les efforts nécessaires pour maintenir l'application. Cette approche a également facilité l'implémentation de fonctionnalités complexes telles que le chat en temps réel, les notifications push, et le streaming vocal en direct, garantissant ainsi que les utilisateurs bénéficient d'une expérience fluide et cohérente, quelle que soit la plateforme qu'ils utilisent.

 

La gestion des notifications en temps réel sur des appareils multiples était l'un des défis majeurs. React Native a offert à Discord une manière efficace de gérer ce flux de données en temps réel grâce à sa compatibilité native avec les systèmes d'exploitation mobiles. Voici un exemple simplifié de code illustrant comment les notifications push peuvent être gérées dans une application React Native :

 

import { PushNotificationIOS } from 'react-native';
 
PushNotificationIOS.addEventListener('notification', function(notification){
  console.log('You have received a new notification!', notification);
});
 
function sendNotification() {
  PushNotificationIOS.presentLocalNotification({
	alertBody: 'Votre ami a envoyé un message sur Discord!',
  });
}

 

Cet extrait montre comment une application React Native peut écouter et réagir aux notifications push, un élément clé pour maintenir les utilisateurs engagés et informés dans l'environnement rapide de Discord.

 

L'adoption de React Native a permis à Discord non seulement de synchroniser l'expérience utilisateur entre les versions de bureau et mobiles mais aussi d'introduire des mises à jour simultanées sur toutes les plateformes. Cela signifie que les utilisateurs mobiles bénéficient des mêmes fonctionnalités et de la même réactivité que ceux sur PC, contribuant ainsi à renforcer la communauté et l'engagement global sur Discord.

 

L'utilisation de React Native par Discord est un exemple parfait de la manière dont les technologies modernes peuvent être utilisées pour créer des applications mobiles complexes et performantes.

 

2. Airbnb : Réinventer l'expérience de voyage

 

Airbnb, le géant de la location de logements de vacances en ligne, a choisi React Native pour une partie de son développement mobile, cherchant à unifier l'expérience utilisateur sur les plateformes iOS et Android. Cette décision illustre la volonté d'Airbnb d'optimiser et de rendre plus agile le développement de nouvelles fonctionnalités, tout en maintenant une expérience utilisateur homogène et de haute qualité.

 

La transition vers React Native a été motivée par le besoin d'accélérer le développement de l'application mobile tout en réduisant les coûts. Grâce à React Native, Airbnb a pu réutiliser le code entre les plateformes mobiles et web, optimisant ainsi les ressources et réduisant significativement le temps de développement. Cette approche a également facilité la mise à jour et l'amélioration de l'application, permettant à Airbnb de répondre rapidement aux besoins des utilisateurs.

 

Un des principaux défis rencontrés par Airbnb était de maintenir une expérience utilisateur fluide et réactive, en particulier pour les fonctionnalités riches en contenu comme les galeries de photos et les cartes interactives. React Native a offert des solutions performantes à ces problématiques, notamment grâce à des composants optimisés et à la possibilité d'intégrer du code natif pour les parties les plus exigeantes de l'application. Voici un exemple de code illustrant l'intégration d'une galerie de photos dans une application React Native :

 

import React from 'react';
import { FlatList, Image, StyleSheet, View } from 'react-native';
 
export default const PhotoGallery = ({ photos }) => (
  <View style={styles.container}>
	<FlatList
  	data={photos}
  	renderItem={({ item }) => (
    	<Image source={{ uri: item.url }} style={styles.photo} />
  	)}
  	keyExtractor={item => item.id}
  	horizontal
	/>
  </View>
);
 
const styles = StyleSheet.create({
  container: {
	height: 200,
  },
  photo: {
	width: 200,
	height: 200,
	marginRight: 10,
  },
});

 

Cet exemple montre comment un composant de galerie de photos peut être implémenté dans React Native, offrant une expérience fluide et réactive aux utilisateurs souhaitant explorer les images des logements disponibles sur Airbnb.

 

 

L'adoption de React Native par Airbnb a significativement amélioré l'expérience utilisateur sur mobile. Les utilisateurs bénéficient désormais de performances optimales et d'une interface utilisateur cohérente sur les différentes plateformes. De plus, React Native a permis à Airbnb de déployer rapidement de nouvelles fonctionnalités, assurant ainsi que l'application répond toujours mieux aux attentes des voyageurs et des hôtes.

 

L'expérience d'Airbnb avec React Native démontre l'efficacité de ce framework pour le développement d'applications mobiles complexes et performantes.

 

3. Tesla : Connectivité avancée pour les propriétaires de véhicules

 

Tesla, pionnière dans l'industrie des véhicules électriques, a également embrassé React Native pour offrir à ses propriétaires une application mobile riche en fonctionnalités, permettant de contrôler et de surveiller leurs véhicules à distance. Cette application représente un élément clé de l'expérience Tesla, reflétant l'innovation et la technologie de pointe de la marque.

 

L'utilisation de React Native par Tesla montre comment le framework peut être étendu au-delà des applications traditionnelles pour englober des fonctionnalités IoT (Internet of Things) avancées. React Native a permis à Tesla de développer une application performante qui interagit en temps réel avec ses véhicules, offrant des fonctionnalités telles que le contrôle à distance de la température, le verrouillage et déverrouillage des portes, et le suivi de la localisation du véhicule.

 

Un des défis majeurs pour Tesla était de garantir que l'application puisse communiquer de manière fiable et sécurisée avec les véhicules. Pour cela, Tesla a intégré des interfaces de programmation d'application (API) sécurisées, permettant à l'application React Native de transmettre des commandes et de recevoir des données du véhicule en temps réel. Voici un exemple simplifié de code montrant comment une commande peut être envoyée à un véhicule Tesla à partir de l'application :

 

 

import React, { useState } from 'react';
import { Button, StyleSheet, View } from 'react-native';
 
export default const VehicleControl = ({ apiToken, vehicleId }) => {
  const [status, setStatus] = useState('Disconnected');
 
  const unlockDoors = async () => {
	const response = await fetch(`https://api.tesla.com/api/1/vehicles/${vehicleId}/command/door_unlock`, {
  	method: 'POST',
  	headers: {
    	'Authorization': `Bearer ${apiToken}`,
    	'Content-Type': 'application/json',
  	},
	});
 
	if (response.ok) {
  	setStatus('Unlocked');
	} else {
  	setStatus('Failed to unlock');
	}
  };
 
  return (
	<View style={styles.container}>
  	<Button title="Unlock Doors" onPress={unlockDoors} />
  	<Text>{status}</Text>
	</View>
  );
};
 
const styles = StyleSheet.create({
  container: {
	flex: 1,
	justifyContent: 'center',
	alignItems: 'center',
  },
});

 

Cet exemple illustre comment les propriétaires de Tesla peuvent interagir avec leur véhicule directement depuis leur smartphone, en utilisant React Native pour envoyer des commandes sécurisées via l'API de Tesla.

 

L'application Tesla, développée avec React Native, enrichit considérablement l'expérience du propriétaire en offrant une interface intuitive pour accéder à une multitude de contrôles et d'informations sur le véhicule. Cette intégration harmonieuse de la technologie mobile et automobile souligne l'engagement de Tesla envers l'innovation et la satisfaction du client, en mettant la technologie de pointe au bout des doigts des utilisateurs.

 

La réussite de l'application Tesla démontre le potentiel de React Native pour développer des applications mobiles qui vont au-delà du cadre traditionnel, en s'étendant aux domaines de l'IoT et de l'interaction véhicule-utilisateur.

 

4. Pinterest : Réinventer le partage d'inspirations

 

Pinterest est une application mobile très populaire utilisée par des millions de personnes pour trouver de l'inspiration, des idées pour leurs intérêts, hobbies et projets. La plateforme a intégré React Native de façon progressive dans son application iOS et Android pour optimiser le développement de nouvelles fonctionnalités et améliorer l'expérience utilisateur sur les deux plateformes.

 

L'un des plus grands défis de Pinterest était de maintenir une expérience utilisateur fluide et cohérente à travers les différentes plateformes tout en intégrant de nouvelles fonctionnalités de manière rapide et efficace. L'utilisation de React Native a permis à Pinterest de partager une grande partie de son code entre iOS et Android, ce qui a significativement réduit le temps de développement et les coûts associés.

 

Voici un exemple de composant React Native qui pourrait être utilisé pour afficher une grille de photos inspirantes, typique de Pinterest :

 

import React from 'react';
import { View, Image, StyleSheet, ScrollView } from 'react-native';
 
export default const InspirationGrid = ({ images }) => (
  <ScrollView contentContainerStyle={styles.grid}>
	{images.map((img, index) => (
  	<Image key={index} source={{ uri: img.url }} style={styles.photo} />
	))}
  </ScrollView>
);
 
const styles = StyleSheet.create({
  grid: {
	flexDirection: 'row',
	flexWrap: 'wrap',
	justifyContent: 'center',
  },
  photo: {
	width: 100,
	height: 100,
	margin: 2,
  },
});

Ce code montre comment un simple composant React Native peut être utilisé pour créer une grille d'images, permettant aux utilisateurs de Pinterest de parcourir visuellement diverses inspirations rapidement et efficacement.

 

 

Pinterest utilise également React Native pour améliorer les interactions utilisateur en rendant l'application plus réactive et en réduisant les temps de chargement. Cela inclut l'amélioration des transitions et animations qui rendent l'exploration de contenus plus intuitive et engageante.

 

import { Animated } from 'react-native';
 
// Animation pour un effet de zoom lors du tap sur une image
const scaleValue = new Animated.Value(1);
 
const onPressImage = () => {
  Animated.spring(scaleValue, {
	toValue: 0.9,
	friction: 3,
	useNativeDriver: true,
  }).start(() => {
	Animated.spring(scaleValue, {
  	toValue: 1,
  	friction: 3,
  	useNativeDriver: true,
	}).start();
  });
};

 

Cet extrait de code démontre comment utiliser les animations de React Native pour ajouter un effet de zoom dynamique lorsqu'une image est pressée, améliorant ainsi l'engagement et l'expérience utilisateur sur l'application.

 

L'intégration de React Native dans l'application Pinterest a non seulement permis d'améliorer la performance et la cohérence entre les plateformes mais aussi de réduire le temps nécessaire pour tester et déployer de nouvelles fonctionnalités.

5. Meta Ads Manager : Optimisation de la gestion publicitaire

 

Meta Ads Manager (ou Publicité Facebook en français) est un exemple éminent de l'utilisation de React Native pour une application largement utilisée et critique pour les affaires. Conçue pour permettre aux entreprises et aux individus de gérer leurs campagnes publicitaires sur Facebook, cette application illustre parfaitement comment React Native facilite le développement rapide et efficace d'applications complexes et performantes qui nécessitent une gestion de données en temps réel et une interaction utilisateur intensive.

 

Un défi majeur pour Meta Ads Manager était de fournir une expérience utilisateur cohérente et performante sur les différentes plateformes mobiles, tout en intégrant des fonctionnalités complexes de gestion de campagnes publicitaires. React Native a permis de développer une application unique qui fonctionne de manière fluide à la fois sur iOS et Android, réduisant ainsi les coûts et le temps de développement associés au maintien de deux bases de code séparées.

 

Exemple de code pour une vue simplifiée de la gestion des campagnes dans Meta Ads Manager :

import React from 'react';
import { View, Text, Button, StyleSheet } from 'react-native';
 
export default const CampaignItem = ({ campaign, onEditPress }) => (
  <View style={styles.container}>
	<Text style={styles.title}>{campaign.name}</Text>
	<Text style={styles.status}>Statut: {campaign.status}</Text>
	<Button title="Modifier" onPress={() => onEditPress(campaign.id)} />
  </View>
);
 
const styles = StyleSheet.create({
  container: {
	padding: 10,
	borderBottomWidth: 1,
	borderBottomColor: '#ccc',
  },
  title: {
	fontSize: 16,
	fontWeight: 'bold',
  },
  status: {
	fontSize: 14,
	color: '#666',
  },
});

 

Ce composant affiche les informations clés d'une campagne publicitaire et permet une interaction rapide pour la modification, illustrant comment React Native peut être utilisé pour créer des interfaces utilisateur dynamiques et interactives.

 

 

L'application Meta Ads Manager nécessite non seulement une grande réactivité de l'interface mais aussi une gestion efficace des données en temps réel pour afficher les performances des campagnes publicitaires. React Native offre des outils puissants pour optimiser les performances, comme le chargement paresseux des données et la mise en cache des résultats, qui améliorent significativement l'expérience utilisateur.

import { ScrollView, View, Text, ActivityIndicator } from 'react-native';
 
export default const CampaignList = ({ campaigns, isLoading }) => (
  <ScrollView>
	{isLoading ? (
  	<ActivityIndicator size="large" color="#0000ff" />
	) : (
  	campaigns.map(campaign => <CampaignItem key={campaign.id} campaign={campaign} />)
	)}
  </ScrollView>
);

 

Cet exemple montre comment les composants de React Native, tels que ScrollView et ActivityIndicator, peuvent être utilisés pour construire une expérience utilisateur fluide qui gère efficacement les états de chargement des données.

 

Meta Ads Manager est un exemple brillant de la manière dont React Native peut être exploité pour développer des applications mobiles complexes, largement utilisées et critiques pour le commerce.

 

En explorant ces cinq applications diverses - de Discord à Meta Ads Manager, en passant par Airbnb, Tesla, et Pinterest – nous avons pu constater la puissance et la flexibilité de React Native comme outil de développement d'applications mobiles. Chacun de ces exemples montre comment React Native permet de créer des expériences utilisateur riches et performantes sur iOS et Android à partir d'un code partagé, simplifiant le processus de développement tout en offrant une excellente qualité et réactivité.

 

React Native se distingue par sa capacité à réduire les délais de développement, à faciliter la maintenance des applications et à offrir une expérience utilisateur homogène sur différentes plateformes. Que ce soit pour améliorer la connectivité entre les véhicules et leurs propriétaires, fournir une plateforme de bien-être mental accessible, ou encore permettre aux créateurs de gérer leur présence en ligne, React Native se révèle être un choix stratégique pour les développeurs cherchant à innover et à répondre aux besoins des utilisateurs modernes.

 

Ces exemples d'applications en React Native illustrent parfaitement comment la technologie peut être utilisée pour répondre à des besoins variés et complexes, ouvrant la voie à de nouvelles possibilités dans le monde du développement d'applications mobiles. Avec React Native, le futur des applications mobiles semble prometteur, marqué par une innovation continue et une expérience utilisateur toujours plus enrichie.

Sommaire
Nos autres catégories
Notre newsletter tous les mois :
Je m'abonne
Merci ! C'est dans la boîte :)
Oops! Something went wrong while submitting the form.
Partager sur :
Nos autres catégories
Notre newsletter tous les mois :
Je m'abonne
Merci ! C'est dans la boîte :)
Oops! Something went wrong while submitting the form.
Partager sur :

Nos experts vous parlent
Le décodeur

5 applications web impressionnantes développées avec Laravel
18/4/2024

Bienvenue dans le monde fascinant de Laravel, le framework PHP qui a révolutionné le développement web avec sa simplicité, son élégance et sa puissance. Que vous soyez un développeur chevronné ou simplement curieux de découvrir comment les applications web modernes sont construites, Laravel est un outil incontournable qui facilite la réalisation de projets complexes grâce à ses fonctionnalités avancées et son code élégant.

Dans cet article, nous allons plonger dans cinq exemples d'applications web exceptionnelles développées avec Laravel, qui illustrent parfaitement la polyvalence et l'efficacité de ce framework. De la préparation aux tests linguistiques avec GlobalExam à l’apprentissage de la conduite avec Ornikar, en passant par la formation logicielle via Lemon Learning ou encore le recrutement en ligne avec HelloWork, préparez-vous à être inspiré par la créativité et l'innovation que Laravel rend possible. Suivez-nous dans ce voyage à la découverte des meilleures applications Laravel et voyez par vous-même pourquoi ce framework est tant plébiscité dans le monde du développement web.

 

1. GlobalExam : Optimiser la préparation aux tests de langues

 

GlobalExam est une plateforme innovante qui permet aux utilisateurs de se préparer efficacement à divers tests de langues officiels tels que le TOEFL, le TOEIC, et le DELF. Utilisant Laravel, GlobalExam offre une interface flexible et robuste pour l'apprentissage en ligne, la gestion de contenu dynamique, et un suivi personnalisé des progrès des utilisateurs.

GlobalExam tire parti de Laravel pour développer une interface utilisateur qui facilite l'interaction et l'engagement des apprenants. Laravel aide à structurer des parcours d'apprentissage personnalisés en fonction des besoins spécifiques de chaque utilisateur, intégrant des exercices pratiques, des simulations d'examens, et des analyses de performances.

 

Exemple de code pour afficher des exercices personnalisés aux utilisateurs :

 

public function showExercises(Request $request)
{
	$userLevel = $request->user()->level;
	$exercises = Exercise::where('difficulty', $userLevel)->get();
	return view('exercises.list', compact('exercises'));
}

 

Ce code PHP illustre comment Laravel peut être utilisé pour récupérer et afficher des exercices adaptés au niveau de difficulté de l'utilisateur, en utilisant l'ORM Eloquent pour une extraction efficace des données correspondantes.

 

 

La capacité de Laravel à gérer de grandes quantités de contenu éducatif est essentielle pour une plateforme comme GlobalExam, qui offre des ressources pour une variété de tests dans plusieurs langues. Laravel facilite la mise à jour et l'organisation du contenu, assurant que les informations restent à jour et pertinentes.

 

public function updateContent(Request $request, $contentId)
{
	$content = Content::find($contentId);
	$content->update($request->all());
	return redirect()->back()->with('status', 'Content updated successfully!');
}

Cet exemple montre comment Laravel gère la mise à jour du contenu éducatif, permettant aux administrateurs de la plateforme de maintenir facilement le matériel à jour avec des informations précises et actuelles.

 

Un aspect crucial de la préparation aux tests est le suivi des performances. Laravel aide GlobalExam à collecter et analyser les données des utilisateurs pour fournir des feedbacks détaillés et des recommandations personnalisées. Laravel offre des outils robustes pour le reporting et les analytics, qui sont essentiels pour optimiser les parcours d'apprentissage.

 

public function getUserProgress($userId)
{
	$progress = Progress::where('user_id', $userId)->latest()->first();
	return view('users.progress', compact('progress'));
}

 

Ce code démontre l'utilisation de Laravel pour suivre et afficher les progrès des utilisateurs, en permettant un accès facile aux informations historiques et actuelles sur les performances.

 

GlobalExam est un exemple parfait de la façon dont Laravel peut être utilisé pour développer des applications web complexes, centrées sur l'utilisateur, dans le domaine de l'éducation.

2. Ornikar : Révolutionner l'apprentissage de la conduite

 

Ornikar est non seulement une auto-école en ligne qui offre des leçons de conduite et des cours de code de la route, mais elle transforme également la façon dont les gens apprennent à conduire en France. Utilisant Laravel, Ornikar offre une plateforme flexible et sécurisée pour que les utilisateurs planifient leurs leçons, étudient le code de la route et passent leurs examens, le tout en ligne.

 

Laravel permet à Ornikar de proposer une interface utilisateur (UI) fluide qui s'adapte à tous les appareils, essentielle pour les étudiants en déplacement. La facilité d'utilisation est améliorée par Laravel, qui soutient une expérience utilisateur homogène sur le site web, en permettant de réserver des leçons et d'accéder à des matériaux d'étude interactifs.

 

Exemple de code pour une réservation de leçon dans Laravel :

 

public function bookLesson(Request $request)
{
	$request->validate([
    	'lesson_date' => 'required|date',
    	'instructor_id' => 'required|exists:instructors,id',
	]);
 
	$lesson = new Lesson([
    	'student_id' => auth()->id(),
    	'instructor_id' => $request->instructor_id,
    	'scheduled_date' => $request->lesson_date,
	]);
 
	$lesson->save();
 
	return redirect()->back()->with('success', 'Lesson booked successfully!');
}

 

Ce code Laravel illustre comment une leçon peut être réservée via la plateforme, en s'assurant que toutes les données sont validées avant de procéder à l'enregistrement dans la base de données.

 

 

Avec un grand nombre d'utilisateurs accédant à des cours variés, la gestion efficace du contenu est cruciale. Laravel aide Ornikar à organiser et à mettre à jour ses contenus éducatifs de manière dynamique, garantissant que les informations sont toujours actuelles et pertinentes.

 

public function updateCourseMaterial(Request $request, $courseId)
{
	$course = Course::findOrFail($courseId);
	$course->update($request->all());
 
	return redirect()->back()->with('status', 'Course material updated successfully!');
}

 

Ce morceau de code permet aux administrateurs de mettre à jour facilement le matériel de cours, en utilisant l'ORM Eloquent de Laravel pour une interaction fluide avec la base de données.

 

Ornikar utilise Laravel pour suivre les progrès des étudiants et analyser les données d'utilisation pour améliorer continuellement leurs services. Cette fonctionnalité est essentielle pour fournir un feedback personnalisé aux étudiants et pour ajuster les méthodes d'enseignement en fonction des besoins des utilisateurs.

 

public function getStudentProgress($studentId)
{
	$progress = Progress::where('student_id', $studentId)->latest()->get();
	return view('students.progress', ['progress' => $progress]);
}

 

Ce code utilise Laravel pour récupérer et afficher les progrès d'un étudiant, aidant les instructeurs et les étudiants à visualiser les améliorations au fil du temps et à identifier les domaines nécessitant une attention supplémentaire.

 

Ornikar est un exemple éloquent de la manière dont Laravel peut être utilisé pour transformer des industries traditionnelles comme l'éducation à la conduite.

 

3. Lemon Learning : Transformer la formation logicielle en entreprise

 

Lemon Learning est une plateforme innovante qui révolutionne la formation logicielle en entreprise en intégrant des guides interactifs directement dans les outils SaaS utilisés par les entreprises. Grâce à Laravel, Lemon Learning offre une solution fluide et intégrée qui aide les employés à maîtriser rapidement et efficacement divers logiciels, en réduisant le temps nécessaire à la formation et en maximisant la productivité.

 

L'un des défis majeurs pour Lemon Learning était d'assurer une intégration transparente de ses guides interactifs avec une multitude d'applications d'entreprise sans perturber l'expérience utilisateur. Laravel a permis de développer une API robuste et sécurisée qui s'interface facilement avec n'importe quel logiciel d'entreprise utilisé par les clients.

 

Exemple de code pour une API Laravel gérant les requêtes d'intégration :

 

Route::post('/integration/setup', 'IntegrationController@store');
 
public function store(Request $request)
{
	$this->validate($request, [
    	'software_id' => 'required|exists:softwares,id',
    	'client_id' => 'required|exists:clients,id',
    	// Autres validations nécessaires
	]);
 
	$integration = new Integration([
    	'software_id' => $request->software_id,
    	'client_id' => $request->client_id,
    	// Autres paramètres
	]);
 
	$integration->save();
 
	return response()->json(['message' => 'Integration setup successfully!'], 201);
}

 

Ce code illustre comment Laravel peut être utilisé pour créer des endpoints API qui facilitent l'intégration de la plateforme Lemon Learning avec divers logiciels d'entreprise, permettant des configurations personnalisées pour chaque client.

 

 

Laravel aide également Lemon Learning à gérer de manière dynamique et efficace les contenus de formation. La plateforme doit constamment mettre à jour et personnaliser les tutoriels pour s'adapter aux logiciels qui évoluent rapidement. Laravel offre des outils puissants pour la gestion de contenu qui facilitent ces mises à jour régulières.

 

public function updateTutorial(Request $request, $tutorialId)
{
	$tutorial = Tutorial::findOrFail($tutorialId);
	$tutorial->update($request->all());
 
	return redirect()->back()->with('success', 'Tutorial updated successfully!');
}

 

Ce morceau de code permet aux administrateurs de Lemon Learning de mettre à jour les tutoriels directement via le tableau de bord, en utilisant l'ORM Eloquent pour une interaction efficace avec la base de données.

 

Un autre aspect crucial de Lemon Learning est le suivi des progrès des utilisateurs et l'analyse des performances des tutoriels. Laravel fournit des capacités sophistiquées de reporting et d'analyse qui permettent à Lemon Learning d'offrir des insights précieux aux entreprises sur l'efficacité des formations.

public function getUserProgress($userId)
{
	$progress = Progress::with('tutorials.completed')->where('user_id', $userId)->get();
	return view('progress.show', compact('progress'));
}

 

Ce code utilise Laravel pour recueillir et présenter des données détaillées sur la progression de chaque utilisateur, aidant les entreprises à mesurer l'impact réel de la formation sur la productivité et l'efficacité des employés.

 

Lemon Learning illustre parfaitement la capacité de Laravel à soutenir des solutions technologiques innovantes dans le domaine de la formation en entreprise.

 

4. HelloWork : Dynamiser le recrutement en ligne

 

HelloWork est une plateforme française leader dans le domaine du recrutement en ligne, qui connecte les employeurs aux candidats à travers une interface intuitive et efficace. Utilisant Laravel, HelloWork optimise les processus de recherche d'emploi et de recrutement, facilitant les interactions entre les entreprises et les chercheurs d'emploi grâce à des fonctionnalités avancées et une gestion fluide des données.

 

La plateforme HelloWork repose sur Laravel pour fournir une expérience utilisateur (UX) riche et interactive, facilitant la navigation, la recherche d'emploi et la gestion des candidatures. Laravel aide à structurer une interface utilisateur qui répond rapidement aux actions des utilisateurs, améliorant ainsi leur engagement et leur satisfaction.

 

Exemple de code pour afficher les offres d'emploi selon les filtres de l'utilisateur :

 

public function listJobs(Request $request)
{
	$jobs = Job::query();
 
	if ($request->has('location')) {
    	$jobs->where('location', $request->location);
	}
	if ($request->has('keyword')) {
    	$jobs->where('title', 'like', '%' . $request->keyword . '%');
	}
 
	return view('jobs.index', ['jobs' => $jobs->paginate(10)]);
}

 

Ce code illustre comment Laravel peut être utilisé pour créer des filtres dynamiques qui ajustent les résultats de recherche en fonction des préférences des utilisateurs, rendant la recherche d'emploi plus ciblée et efficace.

 

Laravel fournit à HelloWork les outils nécessaires pour gérer dynamiquement des milliers d'annonces d'emploi et de profils de candidats. L'ORM Eloquent intégré permet une manipulation aisée des données, assurant une mise à jour et une récupération efficace des informations pertinentes.

 

public function updateJob(Request $request, $jobId)
{
	$job = Job::findOrFail($jobId);
	$job->update($request->all());
 
	return redirect()->back()->with('success', 'Job updated successfully!');
}

Ce morceau de code montre comment les annonces d'emploi peuvent être mises à jour facilement par les employeurs, garantissant que les informations restent actuelles et précises.

 

La capacité de suivre les candidatures et d'analyser le comportement des utilisateurs est cruciale pour optimiser les stratégies de recrutement. Laravel aide HelloWork à collecter et analyser les données des utilisateurs, fournissant des insights précieux pour les employeurs sur l'efficacité de leurs annonces.

 

public function trackApplications($jobId)
{
	$applications = Application::where('job_id', $jobId)->get();
	return view('employers.analytics', ['applications' => $applications]);
}

 

Ce code utilise Laravel pour récupérer et afficher les données sur les candidatures reçues pour un poste spécifique, permettant aux employeurs de mesurer l'intérêt et l'efficacité de leurs annonces.

 

HelloWork démontre l'efficacité de Laravel dans le développement de solutions de recrutement en ligne.

 

5. Ecodrop : Faciliter le recyclage pour les professionnels du BTP

 

Ecodrop est une plateforme innovante qui révolutionne la gestion des déchets de construction en facilitant le recyclage pour les professionnels du BTP en France. Utilisant Laravel, Ecodrop offre une solution efficace pour localiser les points de collecte les plus proches, gérer les déchets de manière responsable, et optimiser la logistique des déchets de chantier.

 

Laravel aide Ecodrop à fournir une interface utilisateur claire et facile à naviguer, permettant aux professionnels de trouver rapidement des solutions de recyclage à proximité. La plateforme permet également une interaction fluide pour la réservation de collectes de déchets, la consultation des prix et le suivi des transactions.

 

Exemple de code pour la recherche de centres de recyclage par localisation :

 

public function searchRecyclingCenters(Request $request)
{
	$centers = RecyclingCenter::query();
	if ($request->has('zipcode')) {
    	$centers->where('zipcode', $request->zipcode);
	}
	return view('recycling.centers', ['centers' => $centers->get()]);
}

 

Ce code montre comment Laravel peut être utilisé pour filtrer les centres de recyclage en fonction du code postal fourni par l'utilisateur, simplifiant ainsi la recherche et aidant les professionnels à trouver les options les plus pratiques.

 

 

Laravel fournit les outils nécessaires pour gérer efficacement les profils des utilisateurs et les commandes de collecte de déchets. Les professionnels peuvent s'enregistrer, gérer leurs informations, et planifier des collectes en quelques clics.

 

public function updateProfile(Request $request)
{
	$user = Auth::user();
	$user->update($request->all());
 
	return redirect()->route('profile')->with('success', 'Profile updated successfully!');
}

 

Ce morceau de code illustre la mise à jour du profil utilisateur avec Laravel, utilisant l'authentification intégrée et l'ORM Eloquent pour une interaction sécurisée et efficace avec la base de données.

 

Laravel aide Ecodrop à suivre les transactions et à analyser l'efficacité des services offerts. La plateforme collecte des données sur les types et volumes de déchets collectés, permettant des analyses approfondies pour améliorer continuellement le service.

 

public function getTransactionDetails($transactionId)
{
	$transaction = Transaction::with('user', 'recyclingCenter')->findOrFail($transactionId);
	return view('transactions.detail', ['transaction' => $transaction]);
}

 

Ce code utilise Laravel pour récupérer les détails d'une transaction spécifique, y compris les informations sur l'utilisateur et le centre de recyclage, facilitant le suivi et l'analyse des services de collecte.

 

Ecodrop illustre parfaitement comment Laravel peut être exploité pour développer des solutions durables et efficaces dans le secteur du BTP.

 

En explorant ces cinq applications fascinantes développées avec Laravel - de GlobalExam à Ecodrop, en passant par Ornikar, Lemon Learning, et HelloWork -, il est clair que Laravel ne se contente pas d'être un simple outil de développement web. Il représente une solution complète qui offre flexibilité, efficacité et puissance pour relever les défis du développement web moderne. Chaque exemple met en lumière la capacité de Laravel à transformer des idées ambitieuses en réalités numériques robustes et performantes, offrant des expériences utilisateur riches et intuitives.

Que vous soyez un développeur cherchant à affiner vos compétences ou une entreprise en quête d'innovation, Laravel se présente comme le framework de choix pour créer des applications web qui se distinguent. En définitive, ces cinq exemples ne sont qu'un aperçu de ce qui est possible avec Laravel, ouvrant la porte à un monde de potentiel illimité pour les développeurs et les entreprises du monde entier.

Vue.js vs React.js : quel Framework pour son projet ?
4/12/2023

À l'ère du développement web, choisir le bon Framework frontend peut définir le succès de votre projet. Aujourd'hui, plongeons dans le débat Vue.js vs React.js. Quel géant du JavaScript convient le mieux à votre vision ? C'est la question à laquelle nous répondrons dans cette comparaison détaillée. Explorez les fondamentaux, découvrez les différences clés, et faites un choix éclairé pour votre prochaine aventure digitale.

Les fondamentaux de Vue.js et React.js

Entamons notre exploration en mettant en lumière les caractéristiques distinctives de Vue.js et React.js, deux incontournables du développement JavaScript.

Vue.js : une approche progressive

Vue.js se démarque par son approche incrémentielle. Son système de composants facilite l'intégration avec des projets existants, offrant une simplicité appréciée. L'outil Vue CLI permet un démarrage rapide, un atout pour les projets de toutes envergures.

La partie écrite en HTML propose une balise div avec l'id app, qui est la zone d'application que Vue.js cible.

À l'intérieur de cette balise, nous avons un bouton avec un événement @click qui déclenche la méthode showMessage() lorsque le bouton est cliqué. Le paragraphe avec la directive v-if  s'affiche uniquement lorsque la propriété messageVisible est true.

Enfin, la partie script JavaScript est écrite en Vue.js. Elle créée une nouvelle instance de Vue avec les données et les méthodes nécessaires. Lorsque le bouton est cliqué, la méthode showMessage() est appelée pour rendre le message visible.

En résumé, ce code Vue.js crée une application basique avec un bouton qui, une fois cliqué, fait apparaître un message dans un paragraphe. La logique de rendu conditionnel est gérée par les propriétés réactives de Vue.js (messageVisible, dans ce cas).

React.js : la puissance du Virtual DOM

React.js brille avec le concept de Virtual DOM, améliorant significativement les performances. Sa flexibilité s'étend au-delà des applications web, permettant le développement d'applications mobiles avec React Native. Create React App offre, quant à lui, une entrée en matière rapide pour les nouveaux projets.

Une image contenant texte, capture d’écran, logiciel, ordinateurDescription générée automatiquement

Dans cet exemple, nous utilisons la fonction useState() de React pour déclarer et initialiser l'état du composant fonction App. Sa syntaxe est simplifiée grâce à l'utilisation d’une fonction fléchée.

Pour des projets réels, il serait préférable d'utiliser des outils comme Create React App ou Nextjs pour une configuration plus complète et une structure de dossier organisée.

Comparaison directe

Plongeons maintenant dans une analyse détaillée des différences clés entre Vue.js et React.js, mettant en lumière les points qui pourraient orienter votre choix.

Performance et DOM virtuel

En matière de performances, Vue.js excelle avec son système de rendu réactif. React.js, quant à lui, mise sur la puissance du Virtual DOM pour des applications fluides et réactives. Un point crucial à considérer selon les exigences de votre projet.

Facilité d'apprentissage et courbe d'apprentissage

Vue.js se distingue par sa courbe d'apprentissage douce, idéale pour les débutants. À l'inverse, React.js offre une courbe d'apprentissage plus prononcée, mais son écosystème robuste attire les développeurs expérimentés. Un choix à faire en fonction de votre équipe et de vos délais.

Composants et modularité

Vue.js brille avec son système de composants intuitif, favorisant la réutilisabilité. React.js propose également une approche modulaire, mais dans un écosystème plus vaste. Choisissez en fonction de la complexité de votre application et de vos besoins en modularité.

Choisir en fonction de vos besoins

Maintenant que nous avons disséqué les différences, concentrons-nous sur la prise de décision. Comment choisir entre Vue.js et React.js en fonction de vos besoins spécifiques ? C'est ce que nous allons explorer dans cette section.

Vue.js excelle dans le développement d'applications web, offrant simplicité et efficacité. À l'inverse, React.js élargit son spectre en permettant également le développement d'applications mobiles grâce à React Native. La nature de votre projet guidera ce choix crucial.

Vue.js se distingue par sa simplicité d'intégration avec HTML et CSS, facilitant la transition pour les développeurs. React.js adopte une approche JSX, plus proche du JavaScript pur. La préférence pour l'une ou l'autre dépendra de votre équipe et de vos préférences de codage.

Communautés actives et support

Entrons maintenant dans le monde des communautés, un aspect essentiel pour le succès continu d'un Framework. Voyons comment Vue.js et React.js se positionnent en termes de soutien et de ressources.

La communauté Vue.js connaît une croissance significative. Des forums actifs, des tutoriels, et un soutien en ligne abondant font de Vue.js une option attrayante pour ceux qui apprécient une communauté en pleine expansion.

Vue.js dispose d'un forum officiel où les développeurs de tous niveaux peuvent poser des questions, partager leurs expériences et discuter des meilleures pratiques. La communauté est connue pour être accueillante et réactive.

Les meetups et les conférences dédiés à Vue.js sont organisés régulièrement dans le monde entier. Ils offrent une excellente occasion de rencontrer d'autres développeurs, de partager des idées et d'en apprendre davantage sur les nouvelles fonctionnalités et les meilleures pratiques.

La documentation officielle de Vue.js est très complète et bien organisée. Elle propose des guides, des exemples concrets et une référence exhaustive pour aider les développeurs à comprendre et à utiliser Vue.js de manière efficace.

Vue Mastery propose des cours en ligne avancés pour les développeurs Vue.js de tous niveaux. Ces cours couvrent une variété de sujets, de l'apprentissage des bases à des sujets avancés tels que la gestion d'état avancée.

React.js, avec l'une des plus grandes communautés, offre une richesse de ressources et de forums de discussion. La stabilité et la maturité de la communauté React.js en font un choix rassurant pour ceux qui recherchent une base solide de soutien.

Le répertoire GitHub de React est un centre actif de collaboration. Les développeurs peuvent signaler des problèmes, proposer des fonctionnalités, et contribuer directement au développement du Framework.

Reactiflux est une communauté React sur Discord où les développeurs peuvent discuter en temps réel, poser des questions et partager leurs expériences.

La documentation officielle de React est exhaustive et mise à jour régulièrement. Elle couvre tout, de l'installation à des sujets avancés tels que les Hooks, les Context API, et la gestion d'état.

La communauté React est très active sur Stack Overflow. Les développeurs peuvent poser des questions et obtenir des réponses rapides de la part de la communauté.

Nos conseils pour optimiser votre choix

Nous arrivons à la phase cruciale de la prise de décision. Comment optimiser votre choix entre Vue.js et React.js ? Découvrons des conseils pratiques pour guider cette étape.

Vue.js se démarque par son accent sur une expérience utilisateur fluide. Ses fonctionnalités réactives et sa simplicité d'utilisation en font un choix idéal pour des applications offrant une expérience utilisateur exceptionnelle.

Quel que soit le choix, misez sur la qualité. Évitez des refontes coûteuses en privilégiant la qualité dès le début. Des applications bien conçues offrent une base solide pour le succès à long terme, que vous optiez pour Vue.js ou React.js.

En fin de compte, le choix entre Vue.js et React.js est personnel, dépendant de vos besoins spécifiques, de la nature de votre projet, et de vos préférences. Dans la prochaine section, rappelons l'essentiel de cette comparaison et offrons une vision claire pour vous aider à faire le choix éclairé qui propulsera votre projet vers le succès.

En conclusion, le choix entre Vue.js et React.js est une décision cruciale, dépendante de la nature unique de votre projet. Que vous soyez séduit par l'approche progressive de Vue.js ou par la puissance du Virtual DOM de React.js, l'essentiel est de faire un choix éclairé.

À travers cette comparaison, nous avons exploré les fondamentaux, examiné les différences clés, et offert des conseils pratiques pour guider votre décision.

N'oubliez pas : la clé du succès réside souvent dans la simplicité. Optez pour le Framework qui s'aligne le mieux avec vos besoins, tout en privilégiant la qualité dès le départ. Que vous choisissiez Vue.js ou React.js, transformons ensemble votre vision en une réalité digitale.

Si des questions persistent ou si vous avez besoin d'un accompagnement plus approfondi, n'hésitez pas à nous contacter. Chez Yield Studio, nous sommes là pour concrétiser vos projets avec expertise et engagement.

L’Architecture Hexagonale sur un projet Web + Mobile (Partie 1 sur 5)
27/2/2024

Hola, je vais vous présenter le début d'une nouvelle série d'articles dédiées à la construction d'un projet Web et Mobile en mettant à profit l'Architecture Hexagonale. Durant toute cette série, nous allons explorer comment la logique métier peut être partagée et gérée efficacement à travers différentes plateformes.

Nos objectifs

Nous allons avoir plusieurs objectifs à atteindre au fil de ce projet :

  • Apprendre comment développer une application Web et Mobile à la fois en mettant à profit les technologies modernes (Nx, Expo, Remix, Vitest, etc.)
  • Comprendre les principes de l'Architecture Hexagonale et comment l'appliquer pour optimiser le partage de la logique métier
  • Gagner en compétence et en confiance pour lancer votre propre projet multi-plateforme, tout en développant une base de code propre et maintenable

La structure de la série

Comme je l'ai dis au début de ce premier article, ce projet donnera lieu à une série d'articles qui sera structurée de cette manière :

  • Partie 1 (cet article) : présentation du projet et mise en place d'un monorepo avec Nx
  • Partie 2 : développer sans UI avec l'Architecture Hexagonale
  • Partie 3 : partager de la logique métier et des composants entre le Web et le Mobile
  • Partie 4 : refactor serein avec les tests et l'Architecture Hexagonale
  • Partie 5 : déploiement Web et Mobile avec Netlify et EAS

Le projet

Le projet qui va nous aider à mettre en avant l'Architecture Hexagonale est un outil de gestion de budget que l'on appellera broney (le bro qui t'aides à gérer ta money 😎). Cet outil sera composé de deux applications, une première, web, développée avec Remix et une deuxième, mobile, développée avec Expo. Nous aurons donc 2 applications React et React Native avec un package TypeScript qui contiendra la logique métier partagée entre ces 2 applications.

Stack

La Stack que j'ai choisi est très subjective, on y trouve quelques frameworks qui mérite selon moi plus de lumière (Remix notamment et Nx face à NextJS et Turborepo). Néanmoins il est important de comprendre que peu importe les frameworks et libraires utilisées, le coeur de l'application sera complètement agnostique et réutilisable dans n'importe quel contexte.

Fonctionnalités

Pour mettre en avant l'Architecture Hexagonale nous allons avoir besoin de développer quelques fonctionnalités pour avoir de la logique métier. Nous allons nous focus sur les fonctionnalités suivantes :

  • Mettre en place le storage : react native mmkv pour le mobile et localStorage pour le web
  • Gérer les catégories : lister, ajouter, modifier et supprimer
  • Gérer les portefeuilles : lister, ajouter, modifier et supprimer
  • Gérer les transactions d'un compte : lister, ajouter, modifier et supprimer
  • Authentification avec Supabase
  • Dynamiser toute l'app avec Supabase

Modèle de données

Pour mettre en place les fonctionnalités nous allons avoir besoin des entités suivantes :

  • Wallet, un portefeuille qui a un solde négatif ou positif (par exemple on peut avoir le portefeuille "Compte Principal Julien" qui a un solde positif de 1000€)
  • Category, des catégories servant à préciser le contexte des transactions faites (par exemple on a les catégories "Maison", "Restaurants" et "Divertissements")
  • Transaction, les transactions sont liées à un portefeuille et à une catégorie pour savoir où l'argent est transférée (par exemple on a une transaction du portefeuille "Compte Principal Julien" de 50€ sur la catégorie "Restaurants")

Mise en place du monorepo avec NX

Initialisation du projet

Nous allons utiliser les commandes de Nx pour initialiser notre projet.

➜ npx create-nx-workspace@latest

✔ Where would you like to create your workspace? · broney
✔ Which stack do you want to use? · none
✔ Package-based monorepo, integrated monorepo, or standalone project? · package-based
✔ Enable distributed caching to make your CI faster · Yes


Avec cette commande nous avons le projet Nx configuré de base et sans libs pour le moment. Nous allons travailler avec le style Package-Based Repos qui nous offre plus de liberté en limitant le couplage avec Nx si jamais on souhaite changer facilement d'outil de monorepo. Cela permet également d'avoir des node_modules différents pour chaque app ou lib du projet. En savoir plus sur les différents style d'implémentation de Nx.

Création de la lib core

Nous allons maintenant ajouter notre première lib, la plus importante : core. En effet, c'est dans cette lib que nous allons mettre notre Architecture Hexagonale et la logique métier qui sera utilisée par nos applications Web et Mobile.

➜ nx g @nx/js:lib libs/core

✔ Which unit test runner would you like to use? · vitest
✔ Which bundler would you like to use to build the library? Choose 'none' to skip build setup. · rollup

Cette commande nous a généré une lib avec le framework de test Vitest, une config eslint et prettier que l'on peut adapter à nos preferences que je ne détaillerai pas ici.

Il est possible de compiler notre lib avec la commande nx core build et d'executer les tests avec nx core test.

Mise en place de la CI

Maintenant que nous avons les tests setup ainsi que prettier et eslint, il est pertinent de mettre en place une CI pour avoir du feedback régulier sur la bonne tenue du code. Pour la CI nous allons simplement suivre la documentation de Nx et utiliser les GitHub Actions.

Nous allons donc simplement ajouter un fichier .github/workflows/ci.yml assez simple qui peut être étoffé.

name: CI
on:
	push:
	branches:
	- main
	pull_request:

jobs:
	main:
		runs-on: ubuntu-latest
		steps:
			- uses: actions/checkout@v4
				with:
					fetch-depth: 0
			# Cache node_modules
			- uses: actions/setup-node@v3
				with:
					node-version: 20
					cache: 'yarn'
			- run: yarn --no-progress --frozen-lockfile
			- uses: nrwl/nx-set-shas@v4.0.4

			- run: npx nx format:check
			- run: npx nx affected -t lint,test,build --parallel=3

Cette simple CI permet vérifier le bon formatage prettier, d'effectuer les validations eslint et de build et de s'assurer que les tests sont sans erreurs.

Structure du projet

Rentrons plus en détails dans ce que l'on vise comme structure de projet une fois les apps mise en place et notre lib core développée avec l'architecture hexagonale.

- apps

    - mobile : notre application React Native développée avec Expo
    - web
: notre application React développée avec React

- libs
    - ui
: nos composants React et React Native utilisés par les apps web et mobile
    - tailwind
: notre configuration tailwind utilisée par les apps web et mobile ainsi que la lib ui
    - core
: notre architecture hexagonale qui contient le coeur de notre application et toute la logique métier réutilisable par les apps web et mobile

Pour aller plus loin, on peut très bien envisager d'avoir une app en plus pour un Storybook.

La lib qui va nous intéresser et la lib core évidemment. Elle sera structurée de cette manière :

- libs
    - core
         - src
              - wallet
                   - tests
                        - wallet.service.test.ts
: la logique métier testées
                        - wallet.test.ts
: les règles métiers testées
                   - domain
                        - wallet.ts
: l'entité qui représente les portefeuilles et qui contient des règles métiers
                        - wallet.repository.ts
: le contrat qui détermine comment manipuler l'entité pour lister, ajouter, etc.
                        - wallet.service.ts : le service qui consume une implémentation de contrat

                   - infrastructure
                        - in-memory-wallet.repository.ts
: une implémentation du contrat
                        - local-storage-wallet.repository.ts
: idem
                        - supabase-wallet.repository.ts : idem
                   - user-interface
                        - wallet.store.ts :
un store zustand vanilla, utilisable dans n'importe quel environnement javascript et qui sera utilisé dans nos apps
              - category
                   - ...
           - ...

Nous verrons le contenu de chaque fichiers ainsi que les détails du fonctionnement de ces derniers dans le prochain article !

Conclusion

Nous avons terminé le premier article de cette série sur le développement d'une application web et mobile avec l'Architecture Hexagonale et le partage de la logique métier et des composants UI.

Dans cette première partie nous avons vu comment mettre un place un monorepo et nous avons pourquoi et comment ce monorepo va nous aider à partager la logique métier entre nos différentes applications. Nous avons également bien délimité le périmètre et les fonctionnalités attendues pour notre première version, le MVP, de broney.

Enfin, à la fin de cet article nous avons commencé à entrevoir la structure du projet en mettant en évidence l'Architecture Hexagonale, ce sera le thème de la deuxième partie : Développer sans UI avec l'Architecture Hexagonale.

Échangeons
sur votre projet !

Nous contacter

Simulateur

Bienvenue dans le
simulateur d’estimation

Sélectionnez
vos besoins

Sélectionnez un ou plusieurs choix

Définissez les
fonctionnalités

Sélectionnez un ou plusieurs choix

Dernière
étape !

Renseignez votre adresse mail pour recevoir l’estimation !
Obtenez l’estimation
Précédent
Suivant

Bravo ! Vous avez terminé
l’estimation de votre future app !

Vous recevrez dans votre boite mail l’estimation personnalisé. Une estimation vous offre la possibilité de vous projeter dans un budget, vous permettant ainsi de planifier en toute confiance. Néanmoins, chez Yield, nous adoptons une approche agile, prêts à remettre en question et ajuster nos évaluations en fonction de l'évolution de vos besoins et des spécificités de votre projet.
Retour au site
Oops! Something went wrong while submitting the form.