Outiref

Code source de l'URL : https://safwatrm.com

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Traitement de l'eau et de l'air en Tunisie | SAFWAT</title>
  <!-- Kept in sync with pageSeo('/') in src/lib/seo.js. scripts/prerender.mjs
       overwrites this per route when it runs, but this template's head is what
       gets served for anything it did not prerender — and for any deploy that
       skips it. 150 chars, inside the ~160 Google/Bing truncate at. -->
  <meta name="description" content="Traitement de l'eau et des eaux usées, traitement de l'air, instrumentation et maintenance industrielle en Tunisie. Solutions clés en main par SAFWAT." />


  <link rel="icon" type="image/png" href="/safwat-mark.png" />
  <link rel="preload" href="/safwat-mark.png" as="image" />
  <link rel="preload" href="/safwat-logo.png" as="image" />
  <link rel="preload" href="/hero-plant-poster.jpg" as="image" />
  <link rel="preconnect" href="https://fonts.googleapis.com" />
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
  <!-- Non-blocking font load: fetched at low priority via media="print", swapped
       to media="all" once loaded so it never blocks first paint (display=swap
       keeps text visible in fallback fonts meanwhile). -->
  <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet" media="print" onload="this.onload=null;this.media='all'" />
  <noscript>
    <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet" />
  </noscript>
  <style>
    html.ldr-lock, html.ldr-lock body { overflow: hidden; }
    .ldr {
      position: fixed; inset: 0; z-index: 9999;
      display: grid; place-items: center;
      background: #fff;
      background-image: radial-gradient(60% 55% at 50% 42%, rgba(28,147,189,.07), transparent 70%);
      transition: opacity .42s ease, transform .42s cubic-bezier(0.16, 1, 0.3, 1), filter .42s ease;
      will-change: opacity, transform, filter;
    }
    .ldr--exit {
      opacity: 0;
      transform: translateY(-14px);
      filter: blur(6px);
      pointer-events: none;
    }
    .ldr__brand {
      display: flex; flex-direction: column; align-items: center; gap: 26px;
      animation: ldrIn .42s cubic-bezier(0.16, 1, 0.3, 1) both;
    }
    .ldr--exit .ldr__brand {
      transform: scale(.94);
      transition: transform .42s cubic-bezier(0.16, 1, 0.3, 1);
    }
    .ldr__drop {
      position: relative;
      width: clamp(116px, 15vw, 150px);
      aspect-ratio: 150 / 188;
      filter: drop-shadow(0 14px 26px rgba(11,44,92,.14));
    }
    .ldr__ghost, .ldr__color {
      position: absolute; inset: 0;
      width: 100%; height: 100%;
      object-fit: contain;
    }
    .ldr__ghost { filter: grayscale(1) brightness(1.35) opacity(.16); }
    .ldr__fill {
      position: absolute; inset: 0;
      clip-path: inset(calc((100 - var(--p, 0)) * 1%) 0 0 0);
      -webkit-mask: var(--mark) center / contain no-repeat;
              mask: var(--mark) center / contain no-repeat;
      transition: clip-path .12s linear;
    }
    .ldr__color { filter: saturate(1.04); }
    .ldr__surface {
      position: absolute; left: 0; right: 0;
      height: 16px;
      top: calc((100 - var(--p, 0)) * 1%);
      transform: translateY(-50%);
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='16' viewBox='0 0 60 16'%3E%3Cpath d='M0 9 Q15 4 30 9 T60 9 V16 H0 Z' fill='%2328A9D6'/%3E%3C/svg%3E");
      background-size: 60px 16px;
      background-repeat: repeat-x;
      filter: drop-shadow(0 0 7px rgba(40,169,214,.7));
      animation: ldrWave 2.4s linear infinite;
    }
    .ldr__word {
      font-family: 'Space Grotesk', sans-serif;
      font-weight: 700;
      font-size: clamp(1.55rem, 4.4vw, 2.15rem);
      letter-spacing: .16em;
      color: #0B2C5C;
      line-height: 1;
      padding-left: .16em;
    }
    .ldr__word sup {
      font-size: .34em;
      font-weight: 600;
      letter-spacing: .04em;
      color: #127391;
      margin-left: .35em;
      top: -1.1em;
    }
    .ldr__meta {
      display: flex; align-items: center; gap: .85em;
      font-family: 'IBM Plex Mono', monospace;
      font-size: .72rem;
      letter-spacing: .26em;
      text-transform: uppercase;
      color: #52647A;
      font-variant-numeric: tabular-nums;
    }
    .ldr__meta-k { position: relative; padding-left: 26px; }
    .ldr__meta-k::before {
      content: ""; position: absolute; left: 0; top: 50%;
      width: 18px; height: 1.5px; background: #1C93BD;
      transform: translateY(-50%);
    }
    .ldr__meta-v { color: #127391; font-weight: 600; }
    @keyframes ldrWave {
      from { background-position-x: 0; }
      to { background-position-x: 60px; }
    }
    @keyframes ldrIn {
      from { opacity: 0; transform: translateY(10px) scale(.98); }
      to { opacity: 1; transform: translateY(0) scale(1); }
    }
    @media (prefers-reduced-motion: reduce) {
      /* The intro script removes #global-loader outright in this mode; these are
         belt-and-braces for a renderer that runs no script at all. */
      .ldr { display: none; }
      html.ldr-lock, html.ldr-lock body { overflow: visible; }
    }
  </style>
  <script type="module" crossorigin src="/assets/index-BBxIVI_-.js"></script>
  <link rel="stylesheet" crossorigin href="/assets/index-B_yKS4xM.css">
  <!-- prerender:head -->
  <link rel="canonical" href="https://safwatrm.com/" />
  <link rel="alternate" hreflang="fr" href="https://safwatrm.com/" />
  <link rel="alternate" hreflang="en" href="https://safwatrm.com/en" />
  <link rel="alternate" hreflang="x-default" href="https://safwatrm.com/" />
  <meta property="og:type" content="website" />
  <meta property="og:site_name" content="SAFWAT" />
  <meta property="og:locale" content="fr_FR" />
  <meta property="og:locale:alternate" content="en_GB" />
  <meta property="og:url" content="https://safwatrm.com/" />
  <meta property="og:title" content="Traitement de l'eau et de l'air en Tunisie | SAFWAT" />
  <meta property="og:description" content="Traitement de l'eau et des eaux usées, traitement de l'air, instrumentation et maintenance industrielle en Tunisie. Solutions clés en main par SAFWAT." />
  <meta property="og:image" content="https://safwatrm.com/og-safwat.jpg" />
  <meta property="og:image:secure_url" content="https://safwatrm.com/og-safwat.jpg" />
  <meta property="og:image:type" content="image/jpeg" />
  <meta property="og:image:width" content="1200" />
  <meta property="og:image:height" content="630" />
  <meta property="og:image:alt" content="SAFWAT — traitement de l'eau, de l'air et solutions industrielles en Tunisie" />
  <meta name="twitter:card" content="summary_large_image" />
  <meta name="twitter:title" content="Traitement de l'eau et de l'air en Tunisie | SAFWAT" />
  <meta name="twitter:description" content="Traitement de l'eau et des eaux usées, traitement de l'air, instrumentation et maintenance industrielle en Tunisie. Solutions clés en main par SAFWAT." />
  <meta name="twitter:image" content="https://safwatrm.com/og-safwat.jpg" />
  <meta name="twitter:image:alt" content="SAFWAT — traitement de l'eau, de l'air et solutions industrielles en Tunisie" />
  <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":["ProfessionalService","LocalBusiness"],"@id":"https://safwatrm.com/#organization","name":"SAFWAT","url":"https://safwatrm.com/","logo":{"@type":"ImageObject","url":"https://safwatrm.com/safwat-logo.png"},"image":"https://safwatrm.com/og-safwat.jpg","description":"SAFWAT conçoit, réalise et maintient des solutions de traitement de l'eau et des eaux usées, de traitement de l'air, d'instrumentation et de maintenance industrielle en Tunisie.","email":"contact.safwatrm@gmail.com","telephone":"+21652387289","foundingDate":"2015","address":{"@type":"PostalAddress","streetAddress":"28 Résidence El Médina, Cité Rabta","addressLocality":"Nouvelle Médina","postalCode":"2063","addressRegion":"Ben Arous","addressCountry":"TN"},"hasMap":"https://www.google.com/maps?cid=1424689774306952788","geo":{"@type":"GeoCoordinates","latitude":36.7367821,"longitude":10.2437169},"areaServed":{"@type":"Country","name":"Tunisie"},"knowsAbout":["Traitement de l'eau","Traitement des eaux usées","Osmose inverse","Ultrafiltration","Déminéralisation et échange d'ions","Traitement de l'air","Instrumentation industrielle","Maintenance industrielle"],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Services SAFWAT","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Traitement de l'eau industrielle","description":"Osmose inverse, ultrafiltration et déminéralisation pour produire une eau de process conforme à vos exigences.","url":"https://safwatrm.com/services/traitement-eau-industrielle","provider":{"@id":"https://safwatrm.com/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Traitement des eaux usées","description":"Stations de traitement biologique et recyclage des effluents industriels, du dimensionnement à l'exploitation.","url":"https://safwatrm.com/services/traitement-eaux-usees","provider":{"@id":"https://safwatrm.com/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Traitement de l'air","description":"Filtration, purification et contrôle de l'air pour des environnements de production sains et conformes.","url":"https://safwatrm.com/services/traitement-air","provider":{"@id":"https://safwatrm.com/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Instrumentation","description":"Fourniture, calibration et intégration des instruments de mesure et de contrôle de vos procédés.","url":"https://safwatrm.com/services/instrumentation","provider":{"@id":"https://safwatrm.com/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Maintenance industrielle","description":"Maintenance préventive et curative, pièces de rechange et assistance technique sur vos installations.","url":"https://safwatrm.com/services/maintenance-industrielle","provider":{"@id":"https://safwatrm.com/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Solutions industrielles","description":"Solutions clés en main et accompagnement sur l'ensemble de votre chaîne, de l'étude initiale à la mise en service.","url":"https://safwatrm.com/services/solutions-industrielles","provider":{"@id":"https://safwatrm.com/#organization"}}}]}},{"@type":"WebSite","@id":"https://safwatrm.com/#website","url":"https://safwatrm.com/","name":"SAFWAT","inLanguage":"fr","publisher":{"@id":"https://safwatrm.com/#organization"}}]}</script>
  <!-- /prerender:head -->
</head>
<body class="ldr-lock">
  <div id="global-loader" class="ldr">
    <div class="ldr__brand">
      <div class="ldr__drop" style="--p: 0;">
        <img class="ldr__ghost" src="" alt="" aria-hidden="true" />
        <div class="ldr__fill">
          <img class="ldr__color" src="" alt="" aria-hidden="true" />
          <span class="ldr__surface" aria-hidden="true"></span>
        </div>
      </div>
      <div class="ldr__word">SAFWAT<sup>RM</sup></div>
      <div class="ldr__meta">
        <span class="ldr__meta-k">Chargement</span>
        <span class="ldr__meta-v">000%</span>
      </div>
    </div>
  </div>
  <script>
    (function() {
      // The intro is a fixed-length brand animation, not a progress meter.
      //
      // It used to be one: five milestones (dom / logo / poster / fonts / load)
      // raised a target that the counter then glided toward asymptotically. That
      // made sense while every route served an empty <div id="root"> — there was
      // genuinely nothing to show until the bundle booted. scripts/prerender.mjs
      // now ships fully-formed HTML for every route, so the content behind this
      // overlay is complete and painted before the first frame of the animation;
      // waiting on `load` (which waits on the cross-origin Google Fonts request)
      // and then gliding at (target - current) * 0.08 was ~1.4s of holding real,
      // ready content off screen. Measured on the prerendered dist/ at 4x CPU:
      // milestones settled at ~720ms, the glide did not reach 100 until ~1450ms.
      //
      // So: run for INTRO_MS and get out of the way. easeOutCubic keeps the
      // droplet's fast-then-settling fill; the counter reaches 100 at ~83% of
      // the duration, which is where the animation ends.
      var INTRO_MS = 760;

      // No intro at all for users who asked for less motion — they get the
      // content immediately. Loader.jsx reads the same flag to skip the fade.
      var reduced = !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
      window.__loaderInstant = reduced;

      window.__loaderTargetProgress = 100;
      window.__loaderCurrentProgress = 0;

      // Nothing below may leave the loader up forever. #global-loader is
      // position:fixed/inset:0/#fff/z-index:9999 over the whole page, and by the
      // time it is showing, main.jsx has already replaced the prerendered
      // snapshot inside #root — so a loader that never reaches 100% renders the
      // site as a blank white screen. Headless renderers (Bingbot runs one) are
      // exactly where that happens: they throttle or skip requestAnimationFrame
      // entirely, so the animation below can stall at any frame. Two guards make
      // completion unconditional.
      function forceComplete(reason) {
        window.__loaderCurrentProgress = 100;
        finish(reason);
      }

      var finished = false;
      function finish() {
        if (finished) return;
        finished = true;
        if (window.__loaderOnComplete) {
          window.__loaderOnComplete();
          return;
        }
        // React has not mounted yet. Normally that is fine — Loader.jsx reads
        // __loaderCurrentProgress on mount and dismisses itself when it is
        // already 100 — but if the module bundle never executes at all (a
        // renderer that does not support type="module", a chunk that fails to
        // fetch) nothing would ever take the overlay down. Tear it down here in
        // plain ES5 so the page is readable no matter what.
        window.setTimeout(function () {
          if (window.__loaderOnComplete) return;
          var el = document.getElementById('global-loader');
          if (el && el.parentNode) el.parentNode.removeChild(el);
          document.documentElement.classList.remove('ldr-lock');
          document.body.classList.remove('ldr-lock');
        }, 1000);
      }

      // Reduced motion: no intro, and no waiting for React to mount before
      // taking the overlay down. Loader.jsx's "#global-loader is already gone"
      // branch fires onComplete on mount, so the hero still gets its cue.
      if (reduced) {
        finished = true;
        window.__loaderCurrentProgress = 100;
        var solo = document.getElementById('global-loader');
        if (solo && solo.parentNode) solo.parentNode.removeChild(solo);
        document.documentElement.classList.remove('ldr-lock');
        document.body.classList.remove('ldr-lock');
        return;
      }

      // Guard 1: a wall-clock cap that does not depend on rAF firing. Well past
      // INTRO_MS plus a slow first frame, so a human never sees it trip.
      window.setTimeout(function () { forceComplete('timeout'); }, 2500);

      var base = window.location.pathname.includes('/SafwatRM') ? '/SafwatRM/' : '/';
      var mark = base + 'safwat-mark.png';
      document.querySelector('.ldr__ghost').src = mark;
      document.querySelector('.ldr__color').src = mark;

      var drop = document.querySelector('.ldr__drop');
      drop.style.setProperty('--mark', 'url("' + mark + '")');

      var val = document.querySelector('.ldr__meta-v');

      function paint(pct) {
        drop.style.setProperty('--p', pct);
        val.textContent = (pct < 10 ? '00' : pct < 100 ? '0' : '') + pct + '%';
      }

      var t0 = 0;
      function tick(now) {
        if (!t0) t0 = now;
        var e = (now - t0) / INTRO_MS;
        if (e > 1) e = 1;
        var eased = 1 - Math.pow(1 - e, 3);
        window.__loaderCurrentProgress = eased * 100;

        var pct = Math.round(window.__loaderCurrentProgress);
        paint(pct);

        if (pct < 100) {
          requestAnimationFrame(tick);
        } else {
          window.__loaderCurrentProgress = 100;
          finish('done');
        }
      }
      // Guard 2: no rAF at all (a renderer that stubs it out) means no animation
      // to run — hand the page over immediately rather than waiting for Guard 1.
      if (typeof requestAnimationFrame === 'function') {
        requestAnimationFrame(tick);
      } else {
        paint(100);
        forceComplete('no-raf');
      }
    })();
  </script>
  <div id="root"><div id="prerendered-content"><h1>L'ingénierie au service de l'eau, de l'air et de l'industrie.</h1>
<p>Solutions complètes de traitement, d'instrumentation et de maintenance pour des installations fiables, performantes et sur mesure.</p>
<section><h2>Des solutions intégrées, de l'étude à la mise en service</h2><p>Six domaines de compétence pour répondre à l'ensemble de vos besoins industriels.</p><ul><li><a href="/services/traitement-eau-industrielle"><h3>Traitement de l'eau industrielle</h3></a><p>Conception et réalisation de stations sur mesure : osmose inverse, ultrafiltration et déminéralisation pour votre eau de process.</p><p>Une eau brute n'est presque jamais utilisable telle quelle : dureté, chlore, sels dissous et matières en suspension entartrent les échangeurs et encrassent les membranes. Nous dimensionnons la chaîne de traitement à partir d'une analyse réelle de votre eau et de vos débits, plutôt qu'à partir d'un catalogue — de 5 à 20 m³/j en osmose inverse compacte, et jusqu'à 150 m³/j en déminéralisation par échange d'ions, avec une conductivité résiduelle inférieure à 0,2 µS/cm.</p></li><li><a href="/services/traitement-eaux-usees"><h3>Traitement des eaux usées</h3></a><p>Stations de traitement biologique et recyclage des effluents industriels, du dimensionnement à l'exploitation.</p><p>Un effluent se traite pour deux raisons : la conformité de rejet, qui fixe un objectif minimal, et l'économie — au-delà d'un certain volume, l'eau traitée redevient une ressource. Boues activées, MBR/MBBR et filtration de polissage sont sélectionnés selon la charge réelle et sa variabilité. Notre station modulaire conteneurisée couvre 50 à 400 m³/j en boues activées avec filtration, sans génie civil lourd et déplaçable si votre site évolue.</p></li><li><a href="/services/traitement-air"><h3>Traitement de l'air</h3></a><p>Systèmes de filtration, de purification et de contrôle de l'air pour des environnements industriels sains et conformes aux normes.</p><p>Une filtration efficace se construit par étages : des préfiltres retiennent les particules grossières et préservent les filtres terminaux, ce qui décide autant du coût d'exploitation que de la performance. Nos systèmes atteignent une efficacité HEPA H13 — au moins 99,95 % des particules à la taille la plus pénétrante — pour un débit allant jusqu'à 10 000 m³/h, avec supervision à distance de la perte de charge pour remplacer au bon moment.</p></li><li><a href="/services/instrumentation"><h3>Instrumentation</h3></a><p>Fourniture, calibration et intégration d'instruments de mesure et de contrôle pour piloter vos procédés avec une précision absolue.</p><p>Une installation dérive lentement : une pression de membrane qui monte, une conductivité qui remonte, un pH hors plage. Ces écarts ne déclenchent aucun arrêt mais usent les équipements et dégradent la qualité. L'enjeu n'est donc pas d'ajouter des capteurs, mais d'installer les bons aux bons points, avec un plan de calibration — un instrument dont l'étalonnage n'est jamais vérifié finit par produire une mesure fausse, à laquelle on se fie.</p></li><li><a href="/services/maintenance-industrielle"><h3>Services de maintenance</h3></a><p>Maintenance préventive et curative, pièces de rechange et assistance technique pour garantir la disponibilité de vos installations.</p><p>Le préventif ne supprime pas la panne : il déplace l'intervention vers un moment choisi plutôt que subi. Le curatif, lui, dépend surtout de ce qui a été préparé en amont — disponibilité des membranes, résines et filtres, dont le délai d'approvisionnement dépasse souvent le temps d'intervention. Sur une station de traitement, l'arrêt ne se limite d'ailleurs jamais à l'équipement défaillant : il arrête la production qu'il alimente.</p></li><li><a href="/services/solutions-industrielles"><h3>Solutions industrielles</h3></a><p>Solutions clés en main et accompagnement sur l'ensemble de votre chaîne de production, de l'étude initiale à la mise en service.</p><p>Quatre étapes, sans rupture d'interlocuteur : étude et audit sur site, conception et dimensionnement sur mesure, réalisation et installation par nos équipes, puis mise en service avec formation de vos opérateurs. Fondée en 2015, SAFWAT réunit ces six métiers sous un même toit, ce qui évite d'avoir à coordonner plusieurs prestataires sur une même installation. Nous intervenons en agroalimentaire, en pharmaceutique, dans l'industrie et auprès des collectivités, sur toute la Tunisie — de Tunis à Sfax, Sousse, Bizerte, Gabès et Nabeul.</p></li></ul><p><a href="/services">Tous nos services</a></p></section>
<section><h2>Les procédés que nous mettons en œuvre</h2><ul><li><h3>Osmose inverse (RO)</h3><p>Production d'eau ultra-pure par membranes haute performance pour l'industrie.</p></li><li><h3>Ultrafiltration &amp; nanofiltration</h3><p>Séparation membranaire pour la clarification, la désinfection et le polissage.</p></li><li><h3>Déminéralisation &amp; échange d'ions</h3><p>Résines échangeuses pour eau de process, chaudières et eau déminéralisée.</p></li><li><h3>Traitement des eaux usées</h3><p>Boues activées, MBR/MBBR et recyclage des effluents industriels.</p></li><li><h3>Traitement &amp; filtration de l'air</h3><p>Purification et contrôle de l'air pour des environnements industriels conformes.</p></li><li><h3>Instrumentation &amp; contrôle</h3><p>Mesure, régulation et supervision des procédés avec une précision absolue.</p></li></ul></section>
<section><h2>De l'étude à la mise en service</h2><ul><li><h3>Étude &amp; audit</h3><p>Analyse de vos besoins, de vos contraintes et de la qualité de l'eau ou de l'air sur site.</p></li><li><h3>Conception &amp; ingénierie</h3><p>Dimensionnement et conception sur mesure de la solution la plus adaptée à vos procédés.</p></li><li><h3>Réalisation &amp; installation</h3><p>Fabrication, intégration et installation par nos équipes d’ingénieurs qualifiés.</p></li><li><h3>Mise en service &amp; suivi</h3><p>Démarrage, formation de vos équipes et plan de maintenance pour une performance durable.</p></li></ul></section>
<section><h2>Au service des industries les plus exigeantes</h2><ul><li><h3>Agroalimentaire</h3><p>Eaux de process et qualité sanitaire.</p></li><li><h3>Industrie &amp; usines</h3><p>Traitement et recyclage des effluents.</p></li><li><h3>Pharmaceutique</h3><p>Eau purifiée et air contrôlé.</p></li><li><h3>Collectivités</h3><p>Stations municipales &amp; potabilisation.</p></li></ul></section>
<section><h2>Produits</h2><ul><li><a href="/produits/systeme-filtration-air-industriel"><h3>Système de filtration d'air industriel</h3></a><p>Filtration multi-étage pour environnements de production sensibles.</p></li><li><a href="/produits/station-traitement-eaux-usees-modulaire"><h3>Station de traitement des eaux usées modulaire</h3></a><p>Solution modulaire pour le traitement biologique des effluents industriels.</p></li><li><a href="/produits/unite-osmose-inverse-compacte"><h3>Unité d'osmose inverse compacte</h3></a><p>Unité compacte pour la production d'eau purifiée en continu.</p></li><li><a href="/produits/unite-demineralisation-echange-ions"><h3>Unité de déminéralisation par échange d'ions</h3></a><p>Production d’eau déminéralisée pour chaudières et process sensibles.</p></li></ul></section>
<section><h2>Réalisations</h2><ul><li><a href="/realisations/station-osmose-inverse"><h3>Station d'osmose inverse</h3></a><p>Conception et réalisation clés en main pour une unité agroalimentaire.</p></li><li><a href="/realisations/recyclage-effluents-industriels"><h3>Recyclage des effluents industriels</h3></a><p>Traitement et réutilisation des eaux de process pour un site industriel.</p></li><li><a href="/realisations/filtration-purification-air"><h3>Filtration &amp; purification de l’air</h3></a><p>Système de filtration pour un environnement pharmaceutique contrôlé.</p></li><li><a href="/realisations/eau-demineralisee-chaudieres"><h3>Eau déminéralisée pour chaudières</h3></a><p>Chaîne de déminéralisation par échange d’ions pour production vapeur.</p></li><li><a href="/realisations/supervision-controle-procede"><h3>Supervision &amp; contrôle de procédé</h3></a><p>Intégration d’instrumentation et supervision pour pilotage des installations.</p></li><li><a href="/realisations/contrat-maintenance-pieces"><h3>Contrat de maintenance &amp; pièces</h3></a><p>Maintenance préventive et fourniture de pièces de rechange sur le long terme.</p></li></ul></section>
<section><h2>Un partenaire d'ingénierie de confiance</h2><p>Fondée en 2015, SAFWAT conçoit, réalise et maintient des solutions complètes de traitement de l'eau, de l'air et d'instrumentation pour l'industrie. Notre équipe d'ingénieurs accompagne chaque client avec des installations fiables et parfaitement adaptées à ses contraintes.</p><ul><li><h3>Interlocuteur unique</h3><p>De l'étude à la maintenance, un seul partenaire responsable de votre projet.</p></li><li><h3>Solutions sur mesure</h3><p>Chaque installation est dimensionnée selon vos procédés et contraintes.</p></li><li><h3>Ingénieurs experts</h3><p>Une équipe expérimentée en traitement de l’eau, de l’air et instrumentation.</p></li><li><h3>Réactivité &amp; proximité</h3><p>Un service rapide et un suivi de proximité pour garantir vos performances.</p></li></ul><p><a href="/a-propos">En savoir plus sur SAFWAT</a></p></section>
<section><h2>Contact</h2>
<p>SAFWAT — 28 Résidence El Médina, Cité Rabta, Nouvelle Médina, 2063 Ben Arous, Tunisie</p>
<p>Téléphone : +216 52 387 289 · +216 71 345 773 (Tél/Fax)</p>
<p>E-mail : <a href="mailto:contact.safwatrm@gmail.com">contact.safwatrm@gmail.com</a></p>
<p><a href="/contact">Demander un devis</a></p></section></div></div>
  <script>
    // Decode the path re-encoded by public/404.html (see comment there) before
    // React Router reads the URL, so deep links survive a GitHub Pages reload.
    (function (l) {
      if (l.search[1] === '/') {
        var decoded = l.search.slice(1).split('&').map(function (s) {
          return s.replace(/~and~/g, '&')
        }).join('?')
        window.history.replaceState(null, null, l.pathname.slice(0, -1) + decoded + l.hash)
      }
    })(window.location)
  </script>
</body>
</html>