Photo de José Hernández
Full-Stack Product Engineer

José Hernández

Je construis des logiciels qui résolvent de vrais problèmes, de l'architecture jusqu'au dernier pixel.

Je suis développeur autodidacte avec une approche rigoureuse de l'architecture logicielle et du code propre. Je travaille avec la stack web moderne pour livrer des produits fonctionnels avec agilité, du premier commit jusqu'au déploiement en production.

Tech Stack

Outils et technologies que j'utilise au quotidien pour construire des produits de bout en bout.

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS

Backend & Base de Données

  • Node.js
  • PostgreSQL
  • Supabase

Outils & Cloud

  • Git
  • Docker
  • Vercel
  • Vitest

Projets Phares

Projets construits de bout en bout, du design à la base de données.

PagoMovilOCR

Open Source / Paquet npm

Librairie npm qui extrait, normalise et valide les reçus de Pago Móvil vénézuéliens par OCR.

Problème

Au Venezuela, confirmer un paiement Pago Móvil implique souvent de demander une capture d'écran au client et de la lire à la main (montant, référence, date, banque), ce qui est lent, source d'erreurs humaines, et ne passe pas à l'échelle pour une entreprise traitant beaucoup de paiements par jour.

Solution

PagoMovilOCR automatise cette lecture : elle reçoit l'image du reçu et retourne des données structurées accompagnées d'un ensemble de validations de cohérence, sans backend propre et sans jamais envoyer l'image à un serveur.

Engineering

  • J'ai conçu un pipeline en 4 étapes indépendantes et testables séparément : OCR → normalisation → parsing → validation.
  • J'ai implémenté un moteur OCR interchangeable (Tesseract.js par défaut, exécuté à 100 % côté client/local via WebAssembly).
  • J'ai construit un système de profils bancaires enregistrables (`registerBankProfile`) pour détecter, et quand c'est fiable, parser le format de chaque banque.
  • J'ai développé un module de conversion USD/VES utilisant le taux officiel de la BCV (via pydolarve.org), avec cache en mémoire configurable et gestion explicite des données `stale`.
  • J'ai couvert toute la logique avec des tests unitaires et d'intégration Vitest : normalisation, parsers, validateurs individuels, module de devise avec providers simulés, et `verifyPayment` de bout en bout avec un OCR simulé.

Tech Stack

Node.jsTypeScriptVitestTesseract.jsOCR

Site Auditor

SEO & Performance Tooling

Analyse la santé SEO et les performances de n'importe quelle URL en quelques secondes.

Problème

Détecter les problèmes de SEO technique et les métadonnées cassées demande généralement de vérifier manuellement plusieurs outils dispersés, ce qui ralentit les audits rapides.

Solution

Site Auditor centralise l'analyse : il reçoit une URL, évalue ses balises OpenGraph et ses temps de réponse HTTP, et génère un rapport visuel synthétique sur un seul écran.

Engineering

  • Implémenté des Server Actions Next.js pour orchestrer le scraping et l'analyse sans exposer de endpoint API public.
  • Conçu le parseur de balises OpenGraph et de métadonnées HTML, gérant les cas incomplets ou mal formés.
  • Construit la visualisation des résultats avec Recharts, en associant chaque vérification à un statut (correct / avertissement / erreur).
  • Validé et assaini les URL saisies pour éviter les requêtes vers des domaines non sûrs.

Tech Stack

Next.jsServer ActionsTypeScriptTailwind CSSRecharts

DocuExtract

OCR & Document Automation

Extrait automatiquement les données fiscales clés des factures et tickets.

Problème

La saisie manuelle des données de facturation pour la comptabilité est lente et sujette aux erreurs humaines, et les entreprises ont besoin d'un flux fiable même quand l'OCR n'est pas sûr du résultat.

Solution

DocuExtract permet d'importer une facture ou un ticket et utilise l'OCR pour en extraire les données fiscales clés, prêtes pour la comptabilité. Quand la confiance de la reconnaissance est faible, le document passe par un flux de révision humaine plutôt que d'enregistrer des données peu fiables.

Engineering

  • Conçu le pipeline de traitement (import → OCR/extraction → parsing → persistance) en séparant le traitement côté serveur de l'UI.
  • Intégré Tesseract.js (espagnol + anglais) pour l'OCR sur images, et l'extraction de la couche de texte native des PDF avec pdf-parse.
  • Construit un système de confiance combinant la fiabilité de l'OCR et les champs fiscaux détectés, qui bascule automatiquement vers une révision humaine en dessous d'un seuil configurable.
  • Implémenté des expressions régulières spécialisées pour identifier les identifiants fiscaux (NIT/RIF/CUIT/RFC/RUC), les dates (numériques et en texte) et les montants selon des mots-clés comptables.
  • Isolé les données par entreprise avec la Row Level Security de Supabase, et servi les documents originaux via des URL signées de courte durée depuis un bucket de stockage privé.
  • Conservé la `service_role key` de Supabase exclusivement dans des Route Handlers côté serveur, jamais exposée au navigateur.

Tech Stack

Next.jsTypeScriptNode.jsTesseract.jsTailwind CSSSupabase

TrimLink

URL Shortener & Analytics

Raccourcit les liens et enregistre des métriques de clics, pays et appareil.

Problème

Les liens longs sont difficiles à partager et n'offrent aucune visibilité sur qui interagit avec eux.

Solution

TrimLink transforme les URL longues en liens courts uniques et enregistre de façon anonyme les clics, le pays (par IP) et le type d'appareil.

Engineering

  • Implémenté la redirection des liens courts via le Middleware Next.js au niveau edge.
  • Conçu le schéma analytique dans Supabase pour enregistrer les clics sans stocker de données personnelles identifiables.
  • Construit la résolution du pays par IP et la détection du type d'appareil à partir du user-agent.
  • Généré des identifiants courts uniques avec vérification des collisions.

Tech Stack

Next.jsMiddlewareTypeScriptTailwind CSSSupabase

LexChain

LegalTech & Blockchain

Génère des contrats juridiques dynamiques et vérifie leur intégrité via une empreinte blockchain.

Problème

Les freelances travaillant avec des clients dans différents pays ont besoin de contrats adaptés à chaque juridiction sans dépendre d'un avocat pour chaque cas simple, et doivent pouvoir prouver que le document signé n'a pas été modifié par la suite.

Solution

LexChain génère des contrats dynamiques selon la juridiction sélectionnée et calcule une empreinte numérique du document, enregistrée sur un testnet Ethereum, permettant de vérifier à tout moment que le contrat n'a pas été modifié.

Engineering

  • Implémenté la génération de PDF dynamiques avec pdf-lib à partir de modèles par juridiction.
  • Intégré ethers.js pour calculer le hash du contrat et l'enregistrer sur un testnet Ethereum.
  • Conçu le système de modèles de contrat paramétrables par pays et type d'accord.
  • Validé les données saisies dans le formulaire pour garantir la cohérence du contrat généré.

Tech Stack

Next.jsTypeScriptTailwind CSSpdf-libethers.jsTestnet Ethereum

Résultats

  • 2 juridictions prises en charge (Espagne, Venezuela)

Expérience Professionnelle

Ceci est un travail que j'ai réellement réalisé pour une entreprise réelle, pas un projet personnel.

Développeur Full-Stack / Product Engineer

RE/MAX Arena

2025 — 2026

J'ai développé et maintenu des solutions numériques pour une entreprise immobilière réelle, couvrant à la fois le produit destiné aux clients et les outils internes de l'équipe.

Responsabilités

  • Développé et maintenu le site web de l'entreprise, avant de piloter une refonte complète avec rebranding.
  • Construit des tableaux de bord internes et des outils CRUD sur mesure pour digitaliser les processus de l'équipe.
  • Mis en place la génération de PDF et des flux d'export pour les rapports internes.
  • Intégré des API d'intelligence artificielle et de géolocalisation dans les outils internes.
  • Déployé et maintenu les applications en production, y compris l'administration du serveur.
  • Contribué à la stratégie de SEO local et à la réputation en ligne, aidant à construire une base de plus de 100 avis positifs sur Google.
  • Migré et administré le réseau LAN du bureau ; le support technique des postes était une responsabilité complémentaire au sein de l'infrastructure.

Stack

PHPJavaScriptSQLAPI RESTLinux / ServeursRéseauxSEO technique

On construit quelque chose ensemble ?

Disponible pour rejoindre une équipe. Si vous cherchez un profil full-stack capable de mener un produit de l'architecture jusqu'au déploiement, parlons-en.