Public Access
A filtered-out directory card stayed visible. The card is targeted by an
id-based ready-state selector (`.js #directory[data-dir-state="ready"]
#dirGrid > .dev-card`, two ids), which outranked the old per-element patch
`.dev-card[hidden] { display:none }` — so `card.hidden = true` set the
attribute and every card stayed on screen while the count line correctly
read "Showing 1 of 4".
Fix: one rule, `[hidden] { display:none !important }`, early in /style.css.
A class- or id-based `display` can no longer beat the attribute, so this
cannot recur with the next class that sets `display`. The per-element
`[hidden]` patches are removed so a single mechanism governs:
- odoo-community-developers: cards + filter row + pager + modal
(load-bearing — each sets `display`); focus-sliders/noscript (redundant)
- index/de/es `.hero-notice[hidden]`, odoo-black-friday `.ads-consent[hidden]`
(redundant — those elements set no `display`)
Re-fingerprint local assets (style.css changed): /style.css?v 3332fbba93 ->
061517baef across 51 pages.
Measured in a real browser (local harness, stubbed webhook; no record created,
no probe write) — computed display + geometry, never the `hidden` property:
- filtered to one card: the other three report display:none and height 0;
the visible set (1) equals the count line ("Showing 1 of 4") — 1 == 1
- HEAD (pre-fix) reproduces the defect: 3 cards hidden=true yet display:flex,
height 599.38 each; 4 visible vs the count's 1
- pager: display:none height 0 with one page; display:flex height 66.83 with
12 cards (Page 1 of 2); page 2 hides page-1 cards (display:none)
- modals closed: display:none height 0; load state: cards 0, pager/empty
display:none, filter row visibility:hidden by design
- 375 px: same result, no horizontal overflow; avatar ask-row top identical
across a row (2053.97 / links 2086.91)
97 lines
6.1 KiB
HTML
97 lines
6.1 KiB
HTML
<!doctype html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>From a Spreadsheet to a Running ERP in Ten Thursday Sessions | ODOO4projects</title>
|
||
<meta name="description" content="Most small businesses do not run on an ERP. They run on a spreadsheet, a messaging group, and one person's memory. It works — until that person is on holiday." />
|
||
<link rel="canonical" href="https://odoo4projects.com/blog/posts/from-a-spreadsheet-to-a-running-erp.html" />
|
||
<meta property="og:title" content="From a Spreadsheet to a Running ERP in Ten Thursday Sessions" />
|
||
<meta property="og:description" content="Most small businesses do not run on an ERP. They run on a spreadsheet, a messaging group, and one person's memory. It works — until that person is on holiday." />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="og:image" content="https://image.office.odoo4projects.com/img/screencast.png" />
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<link rel="icon" href="../../images/favicon.ico" />
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Inter+Tight:wght@500;600;700;800&display=swap" rel="stylesheet" />
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
|
||
<link rel="stylesheet" href="../../style.css?v=061517baef" />
|
||
<style>
|
||
body { background: #0d1b2e; }
|
||
.blog-post { max-width: 720px; margin: 0 auto; padding: 3rem 1.5rem 6rem; color: #171c26; background: #faf7f1; min-height: 100vh; }
|
||
.blog-post h1 { font-family: 'Marcellus', Georgia, serif; font-size: 2.4rem; font-weight: 400; margin: 0 0 0.5rem; color: #0d1b2e; }
|
||
.blog-post .post-meta { font-family: Inter, sans-serif; font-size: 0.82rem; color: rgba(23,28,38,0.6); margin-bottom: 2rem; }
|
||
.blog-post .post-meta .badge { display: inline-block; font-size: 0.68rem; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase; color: #c9a227; margin-right: 0.75rem; }
|
||
.blog-post .post-image { width: 100%; border-radius: 0.75rem; margin-bottom: 2rem; box-shadow: 0 2px 8px rgba(13,27,46,0.08); }
|
||
.blog-post p { font-family: Inter, sans-serif; font-size: 1rem; line-height: 1.7; margin-bottom: 1.2rem; }
|
||
.blog-post ul { font-family: Inter, sans-serif; font-size: 1rem; line-height: 1.7; margin-bottom: 1.2rem; padding-left: 1.5rem; }
|
||
.blog-post li { margin-bottom: 0.3rem; }
|
||
.blog-post a { color: #8a6f1f; text-decoration: underline; }
|
||
.blog-post strong { font-weight: 600; }
|
||
.back-link { display: inline-block; margin-top: 2rem; font-family: 'Marcellus', Georgia, serif; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.04em; color: #c9a227; text-decoration: none; }
|
||
.back-link:hover { text-decoration: underline; }
|
||
@media (max-width: 600px) { .blog-post h1 { font-size: 1.7rem; } .blog-post { padding: 2rem 1rem 4rem; } }
|
||
</style>
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BlogPosting",
|
||
"headline": "From a Spreadsheet to a Running ERP in Ten Thursday Sessions",
|
||
"datePublished": "2026-11-02",
|
||
"dateModified": "2026-11-02",
|
||
"url": "https://odoo4projects.com/blog/posts/from-a-spreadsheet-to-a-running-erp.html",
|
||
"image": "https://image.office.odoo4projects.com/img/screencast.png",
|
||
"author": {
|
||
"@type": "Organization",
|
||
"name": "ODOO4projects",
|
||
"url": "https://odoo4projects.com/"
|
||
},
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "ODOO4projects",
|
||
"url": "https://odoo4projects.com/",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "https://odoo4projects.com/images/logo.png"
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<!-- Privacy-friendly analytics by Plausible -->
|
||
<script async src="https://plausible.office.odoo4projects.com/js/pa-NhA7Rf-79VopXFQXhSS4e.js"></script>
|
||
<script>
|
||
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
|
||
plausible.init()
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<main class="blog-post">
|
||
<span class="badge">news</span>
|
||
<h1>From a Spreadsheet to a Running ERP in Ten Thursday Sessions</h1>
|
||
<div class="post-meta">November 2, 2026 · News</div>
|
||
<img src="https://image.office.odoo4projects.com/img/screencast.png" alt="From a Spreadsheet to a Running ERP in Ten Thursday Sessions" class="post-image" loading="lazy" />
|
||
<div class="post-body">
|
||
<p>Most small businesses do not run on an ERP. They run on a spreadsheet, a messaging group, and one person's memory. It works — until that person is on holiday.</p>
|
||
|
||
<p>The <strong>Odoo ERP Automation Bootcamp</strong> is ten live Thursday sessions where you build a working system for your own company: your products, your customers, your quotes, your invoices, your stock.</p>
|
||
|
||
<p>No programming. No server to install. If you can run your business on a spreadsheet, you can do this.</p>
|
||
|
||
<p><strong>What you get</strong></p>
|
||
<ul>
|
||
<li>Ten live sessions, one hour each — Thursdays, 18:00–19:00 Central Time</li>
|
||
<li>Starts Thursday 21 January 2027</li>
|
||
<li>You build on a live system from the first session, not on slides</li>
|
||
<li><strong>One year of hosted Odoo Community Edition included</strong> — you automate on a real instance, not a sandbox you set up once and forget</li>
|
||
<li>A group capped at six, so everyone gets seen</li>
|
||
</ul>
|
||
|
||
<p>You finish with an ERP you actually use, and the judgement to keep it running yourself.</p>
|
||
|
||
<p>USD 595.00. Details and the full ten lessons: <a href="https://odoo4projects.com/odoo-erp-automation-bootcamp/?utm_source=linkedin&utm_medium=social&utm_campaign=bootcamp-jan2027">odoo4projects.com/odoo-erp-automation-bootcamp</a></p>
|
||
</div>
|
||
<a href="../../index.html#blog" class="back-link">← Back to the Blog</a>
|
||
</main>
|
||
</body>
|
||
</html> |