Passer au contenu du pied de page
.NET AIDE

FiddlerCore .NET (Comment ça fonctionne pour les développeurs)

Two vital .NET libraries that significantly improve web development and document management capabilities are FiddlerCore and IronPDF. Avec FiddlerCore, les développeurs peuvent intégrer des fonctionnalités de capture et d'inspection du trafic HTTP/HTTPS dans leurs applications. Cet outil open-source est dérivé du proxy système de débogage web bien connu, Fiddler. Il offre un contrôle complet sur le trafic réseau pour aider au débogage, aux tests et à l'optimisation des interactions en ligne.

Inversement, IronPDF est une bibliothèque logicielle de manipulation de PDF flexible pour créer, modifier et organiser des fichiers PDF. Il simplifie la création de PDF de haute qualité à partir de fichiers HTML, ASPX, et d'images. IronPDF simplifie la manipulation complexe de PDF avec des capacités telles que la division, la fusion et l'ajout d'annotations.

En intégrant FiddlerCore avec IronPDF, les développeurs peuvent concevoir des applications qui produisent des rapports PDF complets en plus de surveiller et d'analyser le trafic web. Ensemble, ils fournissent un système de gestion de documents solide et une solution de débogage en ligne puissante qui améliore le flux de travail de développement global.

Qu'est-ce que FiddlerCore ?

FiddlerCore est un puissant package .NET basé sur le célèbre proxy de débogage web, Fiddler. Il permet aux développeurs d'incorporer les fonctionnalités robustes de capture et d'inspection du trafic HTTP/HTTPS de Fiddler dans leurs applications. Comme Fiddler UI, il permet également de modifier les requêtes HTTP. Cette bibliothèque est une ressource essentielle pour le débogage, les tests et l'amélioration des interactions web puisqu'elle permet une surveillance, un enregistrement et une modification complets du trafic web.

FiddlerCore donne aux développeurs un contrôle total sur le trafic réseau, leur permettant d'intercepter, de décoder et de modifier les requêtes et les réponses. Cela permet de trouver et de corriger plus facilement les problèmes des applications en ligne, tels que les ralentissements de performance et les failles de sécurité. L'API de FiddlerCore permet des options d'intégration approfondie, rendant possibles des processus personnalisés et des opérations automatisées.

En général, FiddlerCore améliore le processus de développement en offrant une vue interactive et complète du trafic web, un outil nécessaire pour construire des applications web fiables et efficaces.

FiddlerCore .NET (Comment cela fonctionne pour les développeurs) : Figure 1

Fonctionnalités de FiddlerCore

FiddlerCore fournit un ensemble de fonctionnalités étendu destiné à améliorer l'optimisation, le débogage et la surveillance du trafic en ligne. Parmi les caractéristiques saillantes :

Capture complète du trafic HTTP/HTTPS

Avec l'aide de FiddlerCore, le trafic web peut être vu en détail en permettant l'interception, l'enregistrement et le décryptage des données HTTP et HTTPS.

Inspection détaillée du trafic

Pour aider à l'identification et à la résolution des problèmes, les développeurs peuvent examiner et analyser les données des requêtes et réponses, y compris les en-têtes, les cookies et les charges utiles.

Manipulation dynamique du trafic

Avec FiddlerCore, vous pouvez facilement modifier les requêtes et les réponses, simulant divers scénarios et réponses de réseau pour tester et déboguer efficacement les applications.

Scripts et automatisation avancés

Les solides fonctionnalités de script de FiddlerCore permettent aux utilisateurs d'automatiser des processus et de créer des flux de travail et des règles complexes pour manipuler le trafic, augmentant la production et l'efficacité.

Tests de performance

En évaluant le trafic web, calculant le débit et les temps de charge des réponses, et identifiant les goulots d'étranglement de la performance, la bibliothèque aide à optimiser la performance des applications.

Tests de sécurité robustes

Afin de tester les vulnérabilités et d'améliorer la sécurité des applications, FiddlerCore est nécessaire pour les évaluations de sécurité car il permet le décryptage et l'analyse des communications protégées.

Stockage et relecture des sessions

Le débogage peut être accompli plus efficacement en permettant un examen et une réplication complets des défauts par l'enregistrement et la relecture des sessions de trafic capturées.

Filtrage et recherche efficaces

Les développeurs peuvent trouver rapidement des sessions de trafic pertinentes avec les fonctionnalités de filtrage et de recherche de FiddlerCore, qui se concentrent sur certains motifs ou types pour un examen ciblé.

Support Multiplateforme

FiddlerCore garantit une intégration fluide dans une gamme de paramètres de développement en étant compatible avec plusieurs environnements .NET, tels que .NET Framework, .NET Core, et .NET 5+.

Créer et configurer FiddlerCore

Ces étapes doivent être suivies pour créer et configurer FiddlerCore dans une application .NET :

Configurez votre projet

Assurez-vous que votre projet .NET est préparé en premier lieu. À l'aide de la CLI .NET ou de Visual Studio, vous pouvez en créer un nouveau.

dotnet new console -n FiddlerCoreExample
cd FiddlerCoreExample
dotnet new console -n FiddlerCoreExample
cd FiddlerCoreExample
SHELL

Installez FiddlerCore

L'installation du package NuGet de FiddlerCore est requise. Utilisez la CLI .NET ou le gestionnaire de packages NuGet pour l'ajouter à votre projet.

dotnet add package FiddlerCore
dotnet add package FiddlerCore
SHELL

Configuration de base

Voici un exemple de configuration et de lancement de FiddlerCore dans un programme console basique.

using Fiddler;
using System;

namespace FiddlerCoreExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Attach event handler for the BeforeRequest event
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                session.bBufferResponse = true; // Buffer response to manipulate it if needed
            };

            // Attach event handler for the BeforeResponse event
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
                .RegisterAsSystemProxy()
                .ListenOnPort(8888)
                .Build());
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");
        }
    }
}
using Fiddler;
using System;

namespace FiddlerCoreExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Attach event handler for the BeforeRequest event
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                session.bBufferResponse = true; // Buffer response to manipulate it if needed
            };

            // Attach event handler for the BeforeResponse event
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
                .RegisterAsSystemProxy()
                .ListenOnPort(8888)
                .Build());
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");
        }
    }
}
Imports Fiddler
Imports System

Namespace FiddlerCoreExample
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Attach event handler for the BeforeRequest event
			AddHandler FiddlerApplication.BeforeRequest, Sub(session)
				Console.WriteLine("Before Request for: " & session.fullUrl)
				session.bBufferResponse = True ' Buffer response to manipulate it if needed
			End Sub

			' Attach event handler for the BeforeResponse event
			AddHandler FiddlerApplication.BeforeResponse, Sub(session)
				Console.WriteLine("Before Response for: " & session.fullUrl)
			End Sub

			' Start FiddlerCore
			FiddlerApplication.Startup((New FiddlerCoreStartupSettingsBuilder()).RegisterAsSystemProxy().ListenOnPort(8888).Build())
			Console.WriteLine("FiddlerCore started. Press any key to stop...")
			Console.ReadKey()

			' Shutdown FiddlerCore
			FiddlerApplication.Shutdown()
			Console.WriteLine("FiddlerCore stopped.")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Explication

  • FiddlerApplication.BeforeRequest : Déclenche avant qu'une requête ne soit envoyée au serveur.
  • FiddlerApplication.BeforeResponse : Déclenche avant qu'une réponse ne soit envoyée au client.

Démarrage de FiddlerCore

FiddlerApplication.Startup(settings) : Utilise les paramètres de démarrage donnés pour lancer FiddlerCore sur le port spécifié. Le port par défaut est 8888.

Arrêt de FiddlerCore

FiddlerApplication.Shutdown() : Arrête FiddlerCore et libère les ressources.

Configuration supplémentaire

FiddlerCore peut être configuré davantage pour répondre à vos besoins en modifiant les FiddlerCoreStartupFlags ou les comportements de session à l'intérieur des gestionnaires d'événements.

FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
    .RegisterAsSystemProxy()
    .ListenOnPort(3000)
    .DecryptSSL()
    .AllowRemoteClients()
    .Build());
FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
    .RegisterAsSystemProxy()
    .ListenOnPort(3000)
    .DecryptSSL()
    .AllowRemoteClients()
    .Build());
FiddlerApplication.Startup((New FiddlerCoreStartupSettingsBuilder()).RegisterAsSystemProxy().ListenOnPort(3000).DecryptSSL().AllowRemoteClients().Build())
$vbLabelText   $csharpLabel
  • DecryptSSL : Permet le décryptage du trafic HTTPS.
  • AllowRemoteClients : Permet aux clients distants de se connecter à FiddlerCore.

Commencer avec IronPDF

Lorsque vous intégrez FiddlerCore et IronPDF dans une application .NET, vous pouvez surveiller et contrôler le trafic web et utiliser les données collectées pour créer des rapports PDF complets. Voici un tutoriel étape par étape sur l'utilisation d'IronPDF et FiddlerCore :

Qu'est-ce que IronPDF?

Les programmes C# peuvent utiliser la bibliothèque .NET riche en fonctionnalités IronPDF pour produire, lire et éditer des documents PDF. Les développeurs peuvent facilement créer des PDF de haute qualité, prêts à être imprimés, à partir de contenu en HTML, CSS et JavaScript avec cet utilitaire. L'ajout d'en-têtes et de pieds de page, la division et la combinaison de PDF, l'ajout de filigranes aux documents, et la conversion de HTML en PDF sont quelques-unes des fonctions essentielles. IronPDF prend en charge à la fois .NET Framework et .NET Core, le rendant utile pour un large éventail d'applications.

Parce que les PDF offrent une richesse de contenu et sont conviviaux, les développeurs peuvent facilement les intégrer dans leurs programmes. Les PDF produits par IronPDF ressemblent étroitement au contenu HTML source puisqu'il peut facilement gérer des mises en page et un formatage complexes.

FiddlerCore .NET (Comment cela fonctionne pour les développeurs) : Figure 2

Fonctionnalités d'IronPDF

Génération de PDF à partir de HTML

Convertissez du HTML, CSS, et JavaScript en PDF. IronPDF prend en charge deux normes web modernes : les requêtes média et le design réactif. Cela le rend pratique pour utiliser HTML et CSS pour décorer dynamiquement les documents, rapports et factures PDF.

Édition de PDF

Il est possible d'ajouter du texte, des images, et d'autres contenus à des PDF déjà existants. Extraire du texte et des images à partir de fichiers PDF. Fusionner plusieurs PDFs en un seul fichier. Diviser les fichiers PDF en plusieurs documents distincts. Ajouter des en-têtes, pieds de page, annotations, et filigranes.

Conversion de PDF

IronPDF peut convertir une variété de types de fichiers, tels que Word, Excel et les fichiers d'image, en PDF. Il facilite la conversion de PDF en image (PNG, JPEG, etc.).

Performance et fiabilité

Dans les contextes industriels, les hautes performances et la fiabilité sont des attributs de design souhaitables. IronPDF gère facilement de grands ensembles de documents.

Installer IronPDF

Installez le package IronPDF pour obtenir les outils dont vous avez besoin pour travailler avec des PDFs dans les projets .NET.

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

FiddlerCore avec IronPDF

Le code ci-dessous est un exemple de configuration et de fonctionnement de FiddlerCore, capturant le trafic web, puis utilisant IronPDF pour créer un rapport PDF.

using Fiddler;
using IronPdf;
using System;
using System.Text;

namespace FiddlerCoreIronPDFExample
{
    class Program
    {
        // StringBuilder to store traffic details
        static StringBuilder sb = new StringBuilder();

        static void Main(string[] args)
        {
            // Initialize FiddlerCore event handlers
            FiddlerApplication.OnNotification += (sender, oNEA) => {
                Console.WriteLine("Notification: " + oNEA.NotifyString);
            };
            FiddlerApplication.OnLogString += (sender, oLEA) => {
                Console.WriteLine("Log: " + oLEA.LogString);
            };
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                sb.AppendLine($"Request: {session.fullUrl}");
                session.bBufferResponse = true; // Buffer response
            };
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
                sb.AppendLine($"Response: {session.GetResponseBodyAsString()}");
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default);
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");

            // Generate PDF report
            GeneratePdfReport(sb.ToString());
        }

        // Method to generate PDF report from captured traffic
        static void GeneratePdfReport(string content)
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf($"<html><body><pre>{content}</pre></body></html>");
            pdf.SaveAs("TrafficReport.pdf");
            Console.WriteLine("PDF report generated: TrafficReport.pdf");
        }
    }
}
using Fiddler;
using IronPdf;
using System;
using System.Text;

namespace FiddlerCoreIronPDFExample
{
    class Program
    {
        // StringBuilder to store traffic details
        static StringBuilder sb = new StringBuilder();

        static void Main(string[] args)
        {
            // Initialize FiddlerCore event handlers
            FiddlerApplication.OnNotification += (sender, oNEA) => {
                Console.WriteLine("Notification: " + oNEA.NotifyString);
            };
            FiddlerApplication.OnLogString += (sender, oLEA) => {
                Console.WriteLine("Log: " + oLEA.LogString);
            };
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                sb.AppendLine($"Request: {session.fullUrl}");
                session.bBufferResponse = true; // Buffer response
            };
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
                sb.AppendLine($"Response: {session.GetResponseBodyAsString()}");
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default);
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");

            // Generate PDF report
            GeneratePdfReport(sb.ToString());
        }

        // Method to generate PDF report from captured traffic
        static void GeneratePdfReport(string content)
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf($"<html><body><pre>{content}</pre></body></html>");
            pdf.SaveAs("TrafficReport.pdf");
            Console.WriteLine("PDF report generated: TrafficReport.pdf");
        }
    }
}
Imports Fiddler
Imports IronPdf
Imports System
Imports System.Text

Namespace FiddlerCoreIronPDFExample
	Friend Class Program
		' StringBuilder to store traffic details
		Private Shared sb As New StringBuilder()

		Shared Sub Main(ByVal args() As String)
			' Initialize FiddlerCore event handlers
			AddHandler FiddlerApplication.OnNotification, Sub(sender, oNEA)
				Console.WriteLine("Notification: " & oNEA.NotifyString)
			End Sub
			AddHandler FiddlerApplication.OnLogString, Sub(sender, oLEA)
				Console.WriteLine("Log: " & oLEA.LogString)
			End Sub
			AddHandler FiddlerApplication.BeforeRequest, Sub(session)
				Console.WriteLine("Before Request for: " & session.fullUrl)
				sb.AppendLine($"Request: {session.fullUrl}")
				session.bBufferResponse = True ' Buffer response
			End Sub
			AddHandler FiddlerApplication.BeforeResponse, Sub(session)
				Console.WriteLine("Before Response for: " & session.fullUrl)
				sb.AppendLine($"Response: {session.GetResponseBodyAsString()}")
			End Sub

			' Start FiddlerCore
			FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default)
			Console.WriteLine("FiddlerCore started. Press any key to stop...")
			Console.ReadKey()

			' Shutdown FiddlerCore
			FiddlerApplication.Shutdown()
			Console.WriteLine("FiddlerCore stopped.")

			' Generate PDF report
			GeneratePdfReport(sb.ToString())
		End Sub

		' Method to generate PDF report from captured traffic
		Private Shared Sub GeneratePdfReport(ByVal content As String)
			Dim renderer = New HtmlToPdf()
			Dim pdf = renderer.RenderHtmlAsPdf($"<html><body><pre>{content}</pre></body></html>")
			pdf.SaveAs("TrafficReport.pdf")
			Console.WriteLine("PDF report generated: TrafficReport.pdf")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Afin d'enregistrer le trafic en ligne et produire un rapport PDF, nous intégrons FiddlerCore et IronPDF dans une application console .NET dans cet exemple. FiddlerCore est initialisé par l'application, qui configure également des gestionnaires d'événements pour les requêtes et réponses HTTP.

Les données de trafic, qui incluent les URLs des requêtes et le contenu des réponses, sont recueillies à l'aide d'un StringBuilder. FiddlerCore est lancé sur le port 8888 et continue d'enregistrer le trafic en ligne jusqu'à ce que l'utilisateur appuie sur une touche pour mettre fin au programme. Après l'arrêt du programme, IronPDF est utilisé pour compiler les données de trafic en un rapport PDF.

FiddlerCore .NET (Comment cela fonctionne pour les développeurs) : Figure 3

Le journal de trafic, qui est formaté dans Comment créer un PDF en utilisant HTML avec IronPDF, est converti en un PDF en utilisant la fonction GeneratePdfReport et sauvegardé sous le nom "TrafficReport.pdf". Cela illustre comment les fonctionnalités robustes de création de PDF d'IronPDF et les capacités de surveillance du trafic en ligne de FiddlerCore fonctionnent ensemble sans heurts pour fournir une analyse et un rapport de trafic exhaustifs dans une seule application.

FiddlerCore .NET (Comment cela fonctionne pour les développeurs) : Figure 4

Conclusion

Un outil efficace pour rassembler, examiner et rapporter le trafic web est produit lorsque FiddlerCore et IronPDF sont intégrés dans une application .NET. Les développeurs peuvent efficacement déboguer et optimiser leurs applications en ligne tout en produisant des rapports informatifs en utilisant les fonctionnalités de production de PDF flexibles d'IronPDF en conjonction avec les puissantes capacités de surveillance et de manipulation du trafic de FiddlerCore. Cette combinaison simplifie les processus de développement et de dépannage en améliorant la visibilité des interactions d'applications web et en permettant une documentation et une analyse complètes.

Pour le développement d'applications web, la combinaison de FiddlerCore et IronPDF offre une solution complète qui améliore considérablement la productivité et la perspicacité, quelle que soit la nécessité de tests de performance, de vérifications de sécurité ou de surveillance complète du trafic.

Vous pouvez faire de l'OCR, interagir avec des codes-barres, générer des PDFs, vous connecter à Excel, et plus encore avec IronPDF et explorer d'autres bibliothèques Iron Software pour des capacités améliorées ainsi qu'un développement plus efficace à un prix de départ de $799. Il le fait en combinant les systèmes et la suite hautement adaptables d'Iron Software avec son support de base.

Les développeurs trouveront plus facile de choisir le meilleur modèle si les options de licences sont explicites et adaptées au projet. Grâce à ces avantages, les développeurs peuvent facilement, efficacement et de manière cohérente intégrer des solutions pour une variété de problèmes.

Questions Fréquemment Posées

Comment puis-je capturer le trafic HTTP/HTTPS dans une application .NET ?

Vous pouvez utiliser FiddlerCore pour capturer le trafic HTTP/HTTPS dans une application .NET. En intégrant FiddlerCore, vous obtenez la capacité de surveiller, de consigner et de manipuler le trafic Web, vous donnant un contrôle complet pour le débogage et les tests.

Quels sont les avantages de l'utilisation de FiddlerCore dans le développement Web ?

FiddlerCore améliore le développement Web en fournissant des fonctionnalités telles que la capture de trafic HTTP/HTTPS, l'inspection détaillée et la manipulation dynamique. Cela aide au débogage, aux tests et à l'optimisation des interactions Web, ainsi qu'à améliorer les tests de sécurité et l'analyse des performances.

Comment puis-je générer des rapports PDF à partir de données de trafic Web ?

En utilisant IronPDF, vous pouvez convertir les données de trafic Web capturées en rapports PDF. IronPDF vous permet de créer des documents structurés en convertissant HTML, CSS et JavaScript en PDF de haute qualité, qui peuvent ensuite être utilisés pour l'analyse et la documentation.

Quel est le processus pour configurer FiddlerCore dans un projet .NET ?

Pour configurer FiddlerCore dans un projet .NET, vous devez installer le package NuGet FiddlerCore et le configurer avec les paramètres de démarrage appropriés. Cette configuration vous permettra de capturer et de manipuler le trafic réseau selon les besoins de votre application.

FiddlerCore peut-il être utilisé pour les tests de sécurité ?

Oui, FiddlerCore peut être utilisé efficacement pour les tests de sécurité. Il vous permet de déchiffrer et d'analyser les communications sécurisées, aidant à identifier les vulnérabilités et à améliorer la sécurité des applications grâce à une inspection détaillée du trafic.

Quelles fonctionnalités IronPDF offre-t-il pour la manipulation de PDF ?

IronPDF offre une variété de fonctionnalités pour la manipulation de PDF, y compris la création de PDFs à partir de HTML, l'ajout de texte et d'images, la fusion et la division de PDFs, et l'ajout d'annotations et de filigranes. C'est un outil complet pour gérer les documents PDF dans les applications .NET.

Comment puis-je intégrer la génération de PDF avec la capture de trafic réseau ?

Vous pouvez intégrer la génération de PDF avec la capture de trafic réseau en utilisant FiddlerCore pour surveiller et consigner le trafic Web, puis en employant IronPDF pour transformer les données capturées en rapports PDF détaillés. Cette intégration offre une suite complète de capacités de débogage et de documentation.

Quelles sont les options de configuration disponibles dans FiddlerCore ?

FiddlerCore offre plusieurs options de configuration telles que le réglage du port d'écoute, l'activation du déchiffrement SSL et la permission des clients distants. Ces options peuvent être personnalisées à l'aide du FiddlerCoreStartupSettingsBuilder pour adapter la capture et la manipulation du trafic à vos besoins.

Comment la combinaison de FiddlerCore et IronPDF profite-t-elle aux développeurs Web ?

La combinaison de FiddlerCore et IronPDF profite aux développeurs Web en rationalisant le processus de débogage et en améliorant les capacités de gestion des documents. Cette intégration supporte la surveillance du trafic, le débogage et la production de rapports, conduisant à des flux de travail de développement améliorés et à une documentation complète.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite