{"id":23153,"date":"2026-03-14T19:55:31","date_gmt":"2026-03-14T19:55:31","guid":{"rendered":"https:\/\/localhostdigital.ca\/?page_id=23153"},"modified":"2026-03-14T19:56:55","modified_gmt":"2026-03-14T19:56:55","slug":"useful-ressources","status":"publish","type":"page","link":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/","title":{"rendered":"Useful Ressources"},"content":{"rendered":"\n<style>\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700;800&family=Inter:wght@400;500&display=swap');\n\n  .lhd-blog * { box-sizing: border-box; margin: 0; padding: 0; }\n  .lhd-blog {\n    font-family: 'Inter', sans-serif;\n    color: #1B1B2F;\n    width: 100vw;\n    position: relative;\n    left: 50%;\n    right: 50%;\n    margin-left: -50vw;\n    margin-right: -50vw;\n    overflow-x: hidden;\n    --red: #E8372C;\n    --orange: #F5941E;\n    --dark: #1B1B2F;\n    --gray: #F7F8FC;\n    --text: #444460;\n    --border: #E8EAF0;\n  }\n\n  .lhd-blog-wrap {\n    max-width: 1100px;\n    margin: 0 auto;\n    padding: 0 20px;\n  }\n\n  \/* \u2500\u2500 GRID \u2500\u2500 *\/\n  .lhd-blog-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 28px;\n  }\n  @media (max-width: 900px) {\n    .lhd-blog-grid { grid-template-columns: repeat(2, 1fr); }\n  }\n  @media (max-width: 580px) {\n    .lhd-blog-grid { grid-template-columns: 1fr; }\n  }\n\n  \/* \u2500\u2500 CARD \u2500\u2500 *\/\n  .lhd-blog-card {\n    background: #fff;\n    border: 1px solid var(--border);\n    border-radius: 16px;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n    transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;\n  }\n  .lhd-blog-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 16px 48px rgba(27, 27, 47, 0.1);\n    border-color: rgba(232, 55, 44, 0.25);\n  }\n\n  \/* \u2500\u2500 IMAGE \u2500\u2500 *\/\n  .lhd-blog-img-wrap {\n    position: relative;\n    width: 100%;\n    padding-top: 56%;\n    overflow: hidden;\n    background: #e8eaf0;\n    flex-shrink: 0;\n  }\n  .lhd-blog-img-wrap img {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform 0.4s ease;\n  }\n  .lhd-blog-card:hover .lhd-blog-img-wrap img {\n    transform: scale(1.04);\n  }\n  .lhd-blog-img-placeholder {\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(135deg, #2d2d4e, #1B1B2F);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n  .lhd-blog-img-placeholder svg {\n    opacity: 0.2;\n  }\n\n  \/* \u2500\u2500 CATEGORY BADGE \u2500\u2500 *\/\n  .lhd-blog-cat {\n    display: inline-block;\n    background: linear-gradient(90deg, rgba(232,55,44,0.12), rgba(245,148,30,0.12));\n    color: var(--red);\n    font-family: 'Poppins', sans-serif;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    text-transform: uppercase;\n    padding: 4px 10px;\n    border-radius: 50px;\n    border: 1px solid rgba(232,55,44,0.2);\n    margin-bottom: 10px;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    max-width: 100%;\n  }\n\n  \/* \u2500\u2500 CARD BODY \u2500\u2500 *\/\n  .lhd-blog-body {\n    padding: 22px 24px 24px;\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n  }\n\n  .lhd-blog-title {\n    font-family: 'Poppins', sans-serif;\n    font-size: 17px;\n    font-weight: 700;\n    color: var(--dark);\n    line-height: 1.35;\n    margin-bottom: 10px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n  }\n\n  .lhd-blog-excerpt {\n    font-size: 14px;\n    color: var(--text);\n    line-height: 1.65;\n    margin-bottom: 18px;\n    display: -webkit-box;\n    -webkit-line-clamp: 3;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    flex: 1;\n  }\n  .lhd-blog-excerpt p { margin: 0; }\n\n  \/* \u2500\u2500 META \u2500\u2500 *\/\n  .lhd-blog-meta {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 18px;\n  }\n  .lhd-blog-avatar {\n    width: 32px;\n    height: 32px;\n    border-radius: 50%;\n    object-fit: cover;\n    border: 2px solid var(--border);\n    flex-shrink: 0;\n    background: #e8eaf0;\n  }\n  .lhd-blog-meta-text {\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n  }\n  .lhd-blog-author {\n    font-family: 'Poppins', sans-serif;\n    font-size: 12px;\n    font-weight: 600;\n    color: var(--dark);\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n  .lhd-blog-date {\n    font-size: 12px;\n    color: #888;\n  }\n\n  \/* \u2500\u2500 READ MORE \u2500\u2500 *\/\n  .lhd-blog-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    background: linear-gradient(90deg, #E8372C, #F5941E);\n    color: #fff;\n    font-family: 'Poppins', sans-serif;\n    font-weight: 600;\n    font-size: 13px;\n    padding: 10px 20px;\n    border-radius: 8px;\n    text-decoration: none;\n    transition: box-shadow 0.2s, transform 0.2s;\n    align-self: flex-start;\n    white-space: nowrap;\n  }\n  .lhd-blog-btn:hover {\n    box-shadow: 0 6px 20px rgba(232,55,44,0.35);\n    transform: translateY(-1px);\n  }\n  .lhd-blog-btn svg {\n    transition: transform 0.2s;\n  }\n  .lhd-blog-btn:hover svg {\n    transform: translateX(3px);\n  }\n\n  \/* \u2500\u2500 SKELETON \u2500\u2500 *\/\n  @keyframes lhd-shimmer {\n    0% { background-position: -600px 0; }\n    100% { background-position: 600px 0; }\n  }\n  .lhd-skel {\n    background: linear-gradient(90deg, #e8eaf0 25%, #f0f2f7 50%, #e8eaf0 75%);\n    background-size: 600px 100%;\n    animation: lhd-shimmer 1.4s infinite linear;\n    border-radius: 6px;\n  }\n  .lhd-blog-card-skeleton {\n    background: #fff;\n    border: 1px solid var(--border);\n    border-radius: 16px;\n    overflow: hidden;\n  }\n  .lhd-skel-img { width: 100%; padding-top: 56%; position: relative; }\n  .lhd-skel-img .lhd-skel { position: absolute; inset: 0; border-radius: 0; }\n  .lhd-skel-body { padding: 22px 24px 24px; }\n  .lhd-skel-badge { height: 20px; width: 80px; margin-bottom: 12px; }\n  .lhd-skel-title-1 { height: 18px; width: 90%; margin-bottom: 8px; }\n  .lhd-skel-title-2 { height: 18px; width: 60%; margin-bottom: 16px; }\n  .lhd-skel-line { height: 13px; margin-bottom: 7px; }\n  .lhd-skel-line:last-of-type { width: 75%; }\n  .lhd-skel-meta { display: flex; align-items: center; gap: 10px; margin: 16px 0; }\n  .lhd-skel-avatar { width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0; }\n  .lhd-skel-meta-text { flex: 1; }\n  .lhd-skel-meta-a { height: 12px; width: 100px; margin-bottom: 5px; }\n  .lhd-skel-meta-b { height: 11px; width: 70px; }\n  .lhd-skel-btn { height: 36px; width: 110px; border-radius: 8px; }\n\n  \/* \u2500\u2500 ERROR STATE \u2500\u2500 *\/\n  .lhd-blog-error {\n    grid-column: 1 \/ -1;\n    text-align: center;\n    padding: 48px 20px;\n    color: var(--text);\n    font-size: 15px;\n  }\n  .lhd-blog-error strong {\n    display: block;\n    font-family: 'Poppins', sans-serif;\n    font-size: 18px;\n    color: var(--dark);\n    margin-bottom: 8px;\n  }\n<\/style>\n\n<div class=\"lhd-blog\">\n  <div class=\"lhd-blog-wrap\">\n    <div class=\"lhd-blog-grid\" id=\"lhd-blog-grid\">\n\n      <!-- Skeleton cards shown while loading -->\n      <div class=\"lhd-blog-card-skeleton\" aria-hidden=\"true\">\n        <div class=\"lhd-skel-img\"><div class=\"lhd-skel\"><\/div><\/div>\n        <div class=\"lhd-skel-body\">\n          <div class=\"lhd-skel lhd-skel-badge\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-1\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-2\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel-meta\">\n            <div class=\"lhd-skel lhd-skel-avatar\"><\/div>\n            <div class=\"lhd-skel-meta-text\">\n              <div class=\"lhd-skel lhd-skel-meta-a\"><\/div>\n              <div class=\"lhd-skel lhd-skel-meta-b\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lhd-skel lhd-skel-btn\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"lhd-blog-card-skeleton\" aria-hidden=\"true\">\n        <div class=\"lhd-skel-img\"><div class=\"lhd-skel\"><\/div><\/div>\n        <div class=\"lhd-skel-body\">\n          <div class=\"lhd-skel lhd-skel-badge\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-1\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-2\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel-meta\">\n            <div class=\"lhd-skel lhd-skel-avatar\"><\/div>\n            <div class=\"lhd-skel-meta-text\">\n              <div class=\"lhd-skel lhd-skel-meta-a\"><\/div>\n              <div class=\"lhd-skel lhd-skel-meta-b\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lhd-skel lhd-skel-btn\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"lhd-blog-card-skeleton\" aria-hidden=\"true\">\n        <div class=\"lhd-skel-img\"><div class=\"lhd-skel\"><\/div><\/div>\n        <div class=\"lhd-skel-body\">\n          <div class=\"lhd-skel lhd-skel-badge\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-1\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-2\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel-meta\">\n            <div class=\"lhd-skel lhd-skel-avatar\"><\/div>\n            <div class=\"lhd-skel-meta-text\">\n              <div class=\"lhd-skel lhd-skel-meta-a\"><\/div>\n              <div class=\"lhd-skel lhd-skel-meta-b\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lhd-skel lhd-skel-btn\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"lhd-blog-card-skeleton\" aria-hidden=\"true\">\n        <div class=\"lhd-skel-img\"><div class=\"lhd-skel\"><\/div><\/div>\n        <div class=\"lhd-skel-body\">\n          <div class=\"lhd-skel lhd-skel-badge\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-1\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-2\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel-meta\">\n            <div class=\"lhd-skel lhd-skel-avatar\"><\/div>\n            <div class=\"lhd-skel-meta-text\">\n              <div class=\"lhd-skel lhd-skel-meta-a\"><\/div>\n              <div class=\"lhd-skel lhd-skel-meta-b\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lhd-skel lhd-skel-btn\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"lhd-blog-card-skeleton\" aria-hidden=\"true\">\n        <div class=\"lhd-skel-img\"><div class=\"lhd-skel\"><\/div><\/div>\n        <div class=\"lhd-skel-body\">\n          <div class=\"lhd-skel lhd-skel-badge\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-1\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-2\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel-meta\">\n            <div class=\"lhd-skel lhd-skel-avatar\"><\/div>\n            <div class=\"lhd-skel-meta-text\">\n              <div class=\"lhd-skel lhd-skel-meta-a\"><\/div>\n              <div class=\"lhd-skel lhd-skel-meta-b\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lhd-skel lhd-skel-btn\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"lhd-blog-card-skeleton\" aria-hidden=\"true\">\n        <div class=\"lhd-skel-img\"><div class=\"lhd-skel\"><\/div><\/div>\n        <div class=\"lhd-skel-body\">\n          <div class=\"lhd-skel lhd-skel-badge\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-1\"><\/div>\n          <div class=\"lhd-skel lhd-skel-title-2\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel lhd-skel-line\"><\/div>\n          <div class=\"lhd-skel-meta\">\n            <div class=\"lhd-skel lhd-skel-avatar\"><\/div>\n            <div class=\"lhd-skel-meta-text\">\n              <div class=\"lhd-skel lhd-skel-meta-a\"><\/div>\n              <div class=\"lhd-skel lhd-skel-meta-b\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lhd-skel lhd-skel-btn\"><\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function () {\n\n  \/* \u2500\u2500\u2500 CONFIG \u2014 change only this block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const SITE_URL    = 'https:\/\/localhostdigital.ca';   \/\/ your WP root, no trailing slash\n  const POSTS_COUNT = 16;\n  const READ_MORE   = 'Read More';\n  \/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n  const API = `${SITE_URL}\/wp-json\/wp\/v2\/posts?_embed&per_page=${POSTS_COUNT}&orderby=date&order=desc`;\n\n  \/* \u2500\u2500 Helpers \u2500\u2500 *\/\n  function formatDate(iso) {\n    try {\n      return new Date(iso).toLocaleDateString('en-CA', { year: 'numeric', month: 'short', day: 'numeric' });\n    } catch (e) { return ''; }\n  }\n\n  function stripHtml(html) {\n    const d = document.createElement('div');\n    d.innerHTML = html;\n    return d.textContent || d.innerText || '';\n  }\n\n  function truncate(str, max) {\n    const s = stripHtml(str).trim();\n    return s.length > max ? s.slice(0, max).replace(\/\\s+\\S*$\/, '') + '\u2026' : s;\n  }\n\n  \/* \u2500\u2500 Build one card \u2500\u2500 *\/\n  function buildCard(post) {\n    const embedded = post._embedded || {};\n\n    \/\/ Featured image\n    const media    = embedded['wp:featuredmedia'];\n    const imgUrl   = media && media[0] && media[0].source_url ? media[0].source_url : null;\n    const imgAlt   = media && media[0] && media[0].alt_text   ? media[0].alt_text   : stripHtml(post.title.rendered);\n\n    \/\/ Category \u2014 first non-\"Uncategorized\" term wins, else first term\n    const terms    = embedded['wp:term'] || [];\n    const cats     = terms[0] || [];\n    const catObj   = cats.find(t => t.name !== 'Uncategorized') || cats[0];\n    const catName  = catObj ? catObj.name : '';\n\n    \/\/ Author\n    const authors   = embedded['author'] || [];\n    const author    = authors[0] || {};\n    const authorName= author.name || '';\n    const avatars   = author.avatar_urls || {};\n    const avatarUrl = avatars['48'] || avatars['24'] || avatars['96'] || '';\n\n    \/\/ Texts\n    const title     = stripHtml(post.title.rendered) || 'Untitled';\n    const excerpt   = truncate(post.excerpt ? post.excerpt.rendered : '', 120);\n    const date      = formatDate(post.date);\n    const link      = post.link || '#';\n\n    return `\n      <article class=\"lhd-blog-card\">\n        <a href=\"${link}\" label=\"${title}\" tabindex=\"-1\" class=\"broken_link\">\n          <div class=\"lhd-blog-img-wrap\">\n            ${imgUrl\n              ? `<img src=\"${imgUrl}\" alt=\"${imgAlt}\" loading=\"lazy\" decoding=\"async\">`\n              : `<div class=\"lhd-blog-img-placeholder\">\n                   <svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.5\">\n                     <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><path d=\"m3 9 4-4 4 4 4-6 4 6\"\/>\n                     <circle cx=\"7.5\" cy=\"14.5\" r=\"1.5\"\/>\n                   <\/svg>\n                 <\/div>`\n            }\n          <\/div>\n        <\/a>\n        <div class=\"lhd-blog-body\">\n          ${catName ? `<span class=\"lhd-blog-cat\">${catName}<\/span>` : ''}\n          <a href=\"${link}\" style=\"text-decoration:none;\" class=\"broken_link\">\n            <h3 class=\"lhd-blog-title\">${title}<\/h3>\n          <\/a>\n          <p class=\"lhd-blog-excerpt\">${excerpt}<\/p>\n          <div class=\"lhd-blog-meta\">\n            ${avatarUrl\n              ? `<img decoding=\"async\" class=\"lhd-blog-avatar\" src=\"${avatarUrl}\" alt=\"${authorName}\" loading=\"lazy\">`\n              : `<div class=\"lhd-blog-avatar\" style=\"background:linear-gradient(135deg,#E8372C,#F5941E);display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Poppins',sans-serif;font-size:13px;font-weight:700;\">${authorName.charAt(0).toUpperCase()}<\/div>`\n            }\n            <div class=\"lhd-blog-meta-text\">\n              ${authorName ? `<span class=\"lhd-blog-author\">${authorName}<\/span>` : ''}\n              ${date       ? `<span class=\"lhd-blog-date\">${date}<\/span>` : ''}\n            <\/div>\n          <\/div>\n          <a href=\"${link}\" class=\"lhd-blog-btn broken_link\">\n            ${READ_MORE}\n            <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/>\n            <\/svg>\n          <\/a>\n        <\/div>\n      <\/article>`;\n  }\n\n  \/* \u2500\u2500 Error state \u2500\u2500 *\/\n  function showError(grid, message) {\n    grid.innerHTML = `\n      <div class=\"lhd-blog-error\">\n        <strong>Could not load posts<\/strong>\n        ${message || 'Please check back shortly.'}\n      <\/div>`;\n  }\n\n  \/* \u2500\u2500 Fetch & render \u2500\u2500 *\/\n  async function loadPosts() {\n    const grid = document.getElementById('lhd-blog-grid');\n    if (!grid) return;\n\n    try {\n      const res = await fetch(API, { headers: { 'Accept': 'application\/json' } });\n      if (!res.ok) throw new Error(`HTTP ${res.status}`);\n\n      const posts = await res.json();\n      if (!Array.isArray(posts) || posts.length === 0) {\n        showError(grid, 'No posts found.');\n        return;\n      }\n\n      grid.innerHTML = posts.map(buildCard).join('');\n\n    } catch (err) {\n      console.warn('[LHD Blog] Fetch error:', err);\n      showError(grid, 'Unable to reach the server. Please try again later.');\n    }\n  }\n\n  \/* \u2500\u2500 Init \u2500\u2500 *\/\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', loadPosts);\n  } else {\n    loadPosts();\n  }\n\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":22741,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-23153","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Useful Ressources - LocalHost Digital - Best Web and Digital Agency in Canada<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Useful Ressources - LocalHost Digital - Best Web and Digital Agency in Canada\" \/>\n<meta property=\"og:url\" content=\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/\" \/>\n<meta property=\"og:site_name\" content=\"LocalHost Digital - Best Web and Digital Agency in Canada\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/localhostdigital\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-14T19:56:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimation du temps de lecture\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/\",\"url\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/\",\"name\":\"Useful Ressources - LocalHost Digital - Best Web and Digital Agency in Canada\",\"isPartOf\":{\"@id\":\"https:\/\/localhostdigital.ca\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg\",\"datePublished\":\"2026-03-14T19:55:31+00:00\",\"dateModified\":\"2026-03-14T19:56:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#primaryimage\",\"url\":\"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg\",\"contentUrl\":\"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg\",\"width\":1920,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/localhostdigital.ca\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Useful Ressources\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/localhostdigital.ca\/fr\/#website\",\"url\":\"https:\/\/localhostdigital.ca\/fr\/\",\"name\":\"LocalHost Digital - Best Web and Digital Agency in Canada\",\"description\":\"LocalHost Digital builds fast, secure websites, web apps, and growth marketing for Canadian businesses\u2014bilingual, SEO-driven, conversion-focused. Results first.\",\"publisher\":{\"@id\":\"https:\/\/localhostdigital.ca\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/localhostdigital.ca\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/localhostdigital.ca\/fr\/#organization\",\"name\":\"LocalHost Digital - Best Web and Digital Agency in Canada\",\"url\":\"https:\/\/localhostdigital.ca\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\/\/localhostdigital.ca\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/09\/logo-lhd-canada-red-01-2.png\",\"contentUrl\":\"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/09\/logo-lhd-canada-red-01-2.png\",\"width\":1821,\"height\":895,\"caption\":\"LocalHost Digital - Best Web and Digital Agency in Canada\"},\"image\":{\"@id\":\"https:\/\/localhostdigital.ca\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/localhostdigital\",\"https:\/\/www.linkedin.com\/in\/durrell-ngouanet\/\",\"https:\/\/www.youtube.com\/@localhostdigital\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Useful Ressources - LocalHost Digital - Best Web and Digital Agency in Canada","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/","og_locale":"fr_CA","og_type":"article","og_title":"Useful Ressources - LocalHost Digital - Best Web and Digital Agency in Canada","og_url":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/","og_site_name":"LocalHost Digital - Best Web and Digital Agency in Canada","article_publisher":"https:\/\/facebook.com\/localhostdigital","article_modified_time":"2026-03-14T19:56:55+00:00","og_image":[{"width":1920,"height":768,"url":"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimation du temps de lecture":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/","url":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/","name":"Useful Ressources - LocalHost Digital - Best Web and Digital Agency in Canada","isPartOf":{"@id":"https:\/\/localhostdigital.ca\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#primaryimage"},"image":{"@id":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#primaryimage"},"thumbnailUrl":"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg","datePublished":"2026-03-14T19:55:31+00:00","dateModified":"2026-03-14T19:56:55+00:00","breadcrumb":{"@id":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/localhostdigital.ca\/fr\/useful-ressources\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#primaryimage","url":"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg","contentUrl":"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/10\/b8aa0ca993dfbeb7953149c9054ace675917a6a2.jpg","width":1920,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/localhostdigital.ca\/fr\/useful-ressources\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/localhostdigital.ca\/fr\/"},{"@type":"ListItem","position":2,"name":"Useful Ressources"}]},{"@type":"WebSite","@id":"https:\/\/localhostdigital.ca\/fr\/#website","url":"https:\/\/localhostdigital.ca\/fr\/","name":"LocalHost Digital - Best Web and Digital Agency in Canada","description":"LocalHost Digital builds fast, secure websites, web apps, and growth marketing for Canadian businesses\u2014bilingual, SEO-driven, conversion-focused. Results first.","publisher":{"@id":"https:\/\/localhostdigital.ca\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/localhostdigital.ca\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"},{"@type":"Organization","@id":"https:\/\/localhostdigital.ca\/fr\/#organization","name":"LocalHost Digital - Best Web and Digital Agency in Canada","url":"https:\/\/localhostdigital.ca\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/localhostdigital.ca\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/09\/logo-lhd-canada-red-01-2.png","contentUrl":"https:\/\/localhostdigital.ca\/wp-content\/uploads\/2025\/09\/logo-lhd-canada-red-01-2.png","width":1821,"height":895,"caption":"LocalHost Digital - Best Web and Digital Agency in Canada"},"image":{"@id":"https:\/\/localhostdigital.ca\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/localhostdigital","https:\/\/www.linkedin.com\/in\/durrell-ngouanet\/","https:\/\/www.youtube.com\/@localhostdigital"]}]}},"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/pages\/23153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/comments?post=23153"}],"version-history":[{"count":2,"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/pages\/23153\/revisions"}],"predecessor-version":[{"id":23155,"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/pages\/23153\/revisions\/23155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/media\/22741"}],"wp:attachment":[{"href":"https:\/\/localhostdigital.ca\/fr\/wp-json\/wp\/v2\/media?parent=23153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}