Files
oc-guy/index.html
T
The OC Guy 77d3f00072 Warm styleguide homepage, JSON post feed from n8n, daily sync
- css/site.css: oat/espresso palette, Fraunces display, rounded surfaces, warm photo grade
- index.html: Module of the Month replaced by the blog; tips, blog and community sections render from data/posts.json
- js/feed.js: client-side feed + search over one manifest (blog/index.json technique)
- scripts/sync_posts.py: daily webhook fetch, image download, dedupe by id and content hash, non-image attachments skipped
- data/posts.json: manifest, one published post (Odoo 20 Community review)
2026-10-23 21:41:25 +00:00

209 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The OC Guy — Odoo Community tips, modules and community news</title>
<meta name="description" content="Welcome. Practical tips and tricks for Odoo Community, the open-source ERP: install it, back it up, extend it, and put AI on top. By The OC Guy, Oliver Arnold.">
<meta name="color-scheme" content="light">
<meta name="theme-color" content="#F2E9D6">
<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=Fraunces:ital,opsz,wght@0,9..144,300..700;1,9..144,300..600&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/site.css">
</head>
<body>
<a class="skip" href="#tips">Skip to the tips</a>
<header class="masthead">
<a class="wordmark" href="#top">The OC Guy</a>
<nav class="nav" aria-label="Sections">
<a href="#welcome">Welcome</a>
<a href="#tips">Tips</a>
<a href="#blog">Blog</a>
<a href="#community">Community</a>
<a href="#ask">About</a>
</nav>
<a class="nav-cta" href="#ask">Ask a question</a>
</header>
<main id="top">
<section class="lead" id="welcome" aria-labelledby="lead-title">
<div class="lead-side">
<div class="box">
<p class="box-kicker">Get the most out of Odoo Community</p>
<p class="box-lede">Install it, back it up, extend it, bolt AI on top — the notes I wish I had on day one.</p>
<a class="btn" href="#tips">Read the tips</a>
</div>
<ul class="side-list">
<li><span class="side-kicker">Written by</span> Oliver Arnold, 安雷威</li>
<li><span class="side-kicker">Since</span> 2024, in German, English and Spanish</li>
<li><span class="side-kicker">Contact</span> <a href="mailto:oliver@oc-guy.com">oliver@oc-guy.com</a></li>
</ul>
</div>
<figure class="lead-media">
<img src="assets/hero-aisle.jpg" alt="A long aisle of shelves in an archive, lit from above, running to a vanishing point" width="1280" height="853">
</figure>
<div class="lead-caption">
<p class="meta"><span>Guide</span><span>Odoo Community</span><time datetime="2026-10-23">23 Oct 2026</time></p>
<h1 id="lead-title">Welcome. Best tips and tricks for Odoo Community.</h1>
<p class="standfirst">Hey — you are in the right place. This is where I write down how to run the open-source
ERP that small companies own themselves: the install that holds, the backup that restores, the module
that already exists, and the AI that sits on top of your records instead of guessing at them.</p>
</div>
</section>
<section class="section" id="tips" aria-labelledby="tips-title">
<header class="section-head">
<span class="initial" aria-hidden="true">T</span>
<h2 class="section-title" id="tips-title"><span class="kicker">The latest in</span> <em>Tips &amp; Tricks</em></h2>
<a class="more" href="#blog">All posts</a>
</header>
<div class="feed-tools">
<label class="sr-only" for="tipsSearch">Search tips and tricks</label>
<input id="tipsSearch" class="feed-search" type="search" placeholder="Search the tips…" autocomplete="off">
<span class="feed-count"><span id="tipsCount">0</span> posts</span>
</div>
<div class="cards" id="tipsGrid" data-feed="tips"></div>
</section>
<section class="section" id="blog" aria-labelledby="blog-title">
<header class="section-head">
<span class="initial" aria-hidden="true">B</span>
<h2 class="section-title" id="blog-title"><span class="kicker">Everything</span> <em>The OC Guy blog</em></h2>
<a class="more" href="#community">Community news</a>
</header>
<div class="feed-tools">
<label class="sr-only" for="blogSearch">Search the blog</label>
<input id="blogSearch" class="feed-search" type="search" placeholder="Search every post…" autocomplete="off">
<span class="feed-count"><span id="blogCount">0</span> posts</span>
</div>
<div class="cards" id="blogGrid" data-feed="blog"></div>
</section>
<section class="section oca" id="oca" aria-labelledby="oca-title">
<header class="section-head">
<span class="initial" aria-hidden="true">O</span>
<h2 class="section-title" id="oca-title"><span class="kicker">The latest in</span> <em>OCA modules</em></h2>
<a class="more" href="https://github.com/OCA" target="_blank" rel="noopener">All OCA modules</a>
</header>
<table class="oca-table">
<caption class="sr-only">Top OCA modules, and whether each has a branch for Odoo 19.0 and 20.0</caption>
<thead>
<tr>
<th scope="col">Module</th>
<th scope="col">Area</th>
<th scope="col">19.0</th>
<th scope="col">20.0</th>
</tr>
</thead>
<tbody id="oca-rows">
<tr>
<td class="oca-name"><a href="https://github.com/OCA/mail/tree/18.0/mail_tracking" target="_blank" rel="noopener">Mail Tracker</a></td>
<td class="oca-area">Utilities</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
<tr>
<td class="oca-name"><a href="https://github.com/OCA/account-reconcile/tree/18.0/account_reconcile_oca" target="_blank" rel="noopener">Account Reconcilation</a></td>
<td class="oca-area">Accounting</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
<tr>
<td class="oca-name"><a href="https://github.com/OCA/bank-statement-import/tree/18.0/account_statement_import_base" target="_blank" rel="noopener">Account Statements</a></td>
<td class="oca-area">Accounting</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
<tr>
<td class="oca-name"><a href="https://github.com/oca/currency" target="_blank" rel="noopener">Currency Rate Update</a></td>
<td class="oca-area">Accounting</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
<tr>
<td class="oca-name"><a href="https://github.com/OCA/account-financial-tools/tree/18.0/account_usability" target="_blank" rel="noopener">Enable Accounting</a></td>
<td class="oca-area">Accounting</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
<tr>
<td class="oca-name"><a href="https://github.com/OCA/field-service" target="_blank" rel="noopener">Field Service</a></td>
<td class="oca-area">Field Service</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
<tr>
<td class="oca-name"><a href="https://github.com/oca/queue" target="_blank" rel="noopener">Job Que</a></td>
<td class="oca-area">System</td>
<td class="oca-status"><span class="mark is-on" aria-hidden="true">✓</span><span class="sr-only">has a 19.0 branch</span></td>
<td class="oca-status"><span class="mark" aria-hidden="true">—</span><span class="sr-only">no 20.0 branch yet</span></td>
</tr>
</tbody>
</table>
</section>
<section class="section" id="community" aria-labelledby="community-title">
<header class="section-head">
<span class="initial" aria-hidden="true">C</span>
<h2 class="section-title" id="community-title"><span class="kicker">The latest in</span> <em>Community news</em></h2>
<a class="more" href="https://github.com/OCA" target="_blank" rel="noopener">View all community news</a>
</header>
<div class="feed-tools">
<label class="sr-only" for="newsSearch">Search community news</label>
<input id="newsSearch" class="feed-search" type="search" placeholder="Search the news…" autocomplete="off">
<span class="feed-count"><span id="newsCount">0</span> posts</span>
</div>
<ul class="news" id="newsList" data-feed="news"></ul>
</section>
<section class="ask" id="ask" aria-labelledby="ask-title">
<div class="ask-inner">
<h2 id="ask-title">Ask a question</h2>
<p class="ask-lede">One question, one answer, by mail. No list, no tracking, no follow-up sequence.</p>
<form class="ask-form" action="mailto:oliver@oc-guy.com" method="post" enctype="text/plain">
<label for="ask-mail">Your email</label>
<input id="ask-mail" name="email" type="email" inputmode="email" placeholder="you@company.com" autocomplete="email" required>
<button class="btn" type="submit">Send the question</button>
</form>
</div>
</section>
</main>
<footer class="foot">
<p class="foot-name" aria-hidden="true">The OC Guy</p>
<div class="foot-cols">
<p class="foot-note">Odoo Community advocate. Written by Oliver Arnold, 安雷威 —
no partner programme, no licences sold.</p>
<nav class="foot-links" aria-label="Elsewhere">
<a href="https://www.odoo.com/documentation" target="_blank" rel="noopener">Documentation</a>
<a href="https://github.com/OCA" target="_blank" rel="noopener">OCA modules</a>
<a href="https://apps.odoo.com" target="_blank" rel="noopener">App store</a>
<a href="mailto:oliver@oc-guy.com">Email</a>
</nav>
</div>
<p class="foot-credits">
Photographs from <a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay</a>, used under the
<a href="https://pixabay.com/service/license-summary/" target="_blank" rel="noopener">Pixabay Content License</a>:
archive aisle, cardboard boxes, old books, workshop tools, warehouse shelving. No attribution required; credited anyway.
</p>
</footer>
<script src="js/site.js" defer></script>
<script src="js/feed.js" defer></script>
</body>
</html>