Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 05719aae4e | |||
| b2a41d1a7b | |||
| 4bdef11b3c | |||
| aafb99460c | |||
| a74de43248 | |||
| 819665225f | |||
| 3dd49559ac | |||
| c81565749a |
@@ -1,26 +0,0 @@
|
|||||||
Rollback and Recovery Changelog
|
|
||||||
|
|
||||||
Timestamp: ${TS}
|
|
||||||
|
|
||||||
Actions performed:
|
|
||||||
- Reset main branch (working tree and HEAD) to commit 6127867d51c9f0e4e86d1d8390081208f45136ab and force-pushed to origin/main.
|
|
||||||
- Confirmed README.md content matches version at commit 6127867d51.
|
|
||||||
- Investigated deleted backups: located backups in parent commit 5189b23 and extracted available files into recovered_backups/ directory in the working tree (not yet committed).
|
|
||||||
- Created this changelog and saved recovered backup files under recovered_backups/ for review.
|
|
||||||
|
|
||||||
Recovered backup files:
|
|
||||||
- backups/index.html.20260324164129.bak -> recovered_backups/index.html.20260324164129.bak (extracted from commit 5189b23)
|
|
||||||
- backups/index.html.bak.20260324164053 -> recovered_backups/index.html.bak.20260324164053 (extracted from commit 5189b23)
|
|
||||||
|
|
||||||
Notes on recovery:
|
|
||||||
- The deleted backup files were present in previous commits and have been extracted from git history into recovered_backups/.
|
|
||||||
- Additional backup files referencing other timestamps exist in git history (e.g., backups/index.html.20260324164556.bak and backups/index.html.20260324164626.bak). These can be extracted on request.
|
|
||||||
|
|
||||||
Suspicious findings:
|
|
||||||
- Commit 6127867d51 (message: "Deleted Backups and changed readme") removed backup files. Author: Oliver. This commit may be responsible for missing backups. Please confirm whether this deletion was authorized.
|
|
||||||
|
|
||||||
Remaining tasks / recommendations:
|
|
||||||
- Decide whether to reintroduce recovered backups into main branch. Restoring them to main will create a new commit on top of 6127867d51 (this changelog can be used), or they can be provided in a separate branch or as artifacts.
|
|
||||||
- If you want me to commit the recovered_backups/ content and this changelog to the repository and push, confirm and I will proceed.
|
|
||||||
- If you prefer the repository to remain exactly at 6127867d51 (no additional commits), I will not commit recovered files; instead I will provide them separately (download/attach) and leave main at the rollback state.
|
|
||||||
|
|
||||||
@@ -5,12 +5,24 @@
|
|||||||
**Stack:** Static HTML · Tailwind CSS · Vanilla JS
|
**Stack:** Static HTML · Tailwind CSS · Vanilla JS
|
||||||
|
|
||||||
---
|
---
|
||||||
|
## BLOG POSTS
|
||||||
|
Blog posts live in `blog.json` — do not create separate backup files.
|
||||||
|
To add a blog post customize this command
|
||||||
|
jq '.arrays[0] = [$NEW_JSON] + .arrays[0]' blog.json > tmp.json && mv tmp.json blog.json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Repository Rules
|
## Repository Rules
|
||||||
|
- Do not touch this readme
|
||||||
- Blog posts live in `blog.json` — do not create separate backup files.
|
- Keep the seperation of Site and the blogposts in blog.json
|
||||||
- No backup files in the repo.
|
Example of JSON structure for blog.json
|
||||||
- Update this README with every commit.
|
{
|
||||||
|
"area": "Transparency",
|
||||||
|
"title": "Every Peso on the Page: Ana's Ledger Story",
|
||||||
|
"teaser": "<p>Ana replaced five notebooks with a four-stop impact ledger and now answers donor questions in seconds.</p>",
|
||||||
|
"content": "<h3>Every peso needs a map</h3>\n<p>Ana used to juggle five notebooks and still felt blind when a donor asked where their coin landed.</p>\n<h3>Pressure points</h3>\n<p without late nights.</p>\n",
|
||||||
|
"date": "2026-03-22"
|
||||||
|
},
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -26,22 +38,6 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CI Checks (required on every push)
|
|
||||||
|
|
||||||
- **HTML lint** — valid markup, no broken anchors
|
|
||||||
- **JS lint** — no errors, no `console.error` left in production paths
|
|
||||||
- **Tailwind build** — `npx tailwindcss -i ./src/input.css -o ./assets/site.css --minify` must exit 0
|
|
||||||
- **Corporate design compliance:**
|
|
||||||
- No CSS gradients — `gradient`, `bg-*-gradient`, `linear-gradient`, `radial-gradient` are forbidden
|
|
||||||
- No CSS animations or keyframes — `animate-*`, `@keyframes`, transform-based `hover:translate-*` are forbidden
|
|
||||||
- No blur or glassmorphism effects — `backdrop-blur`, `backdrop-filter` are forbidden
|
|
||||||
- Colors must use the approved brand palette only: `brand-ink · brand-primary · brand-accent · brand-sunrise · brand-emerald · brand-snow · brand-smoke`
|
|
||||||
- Images must be served from `odoo4projects.com`, `images.unsplash.com`, or local `assets/`
|
|
||||||
- **Accessibility** — heading hierarchy (one `<h1>` per page), `alt` on all images, sufficient contrast (WCAG AA)
|
|
||||||
- **Performance budget** — total page weight ≤ 200 KB (excluding cached fonts); critical render path ≤ 1 s on fast 3G
|
|
||||||
- **SEO** — `<title>`, `<meta name="description">`, `<h1>`, canonical `<link>`, and JSON-LD structured data must be present
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Languages
|
## Languages
|
||||||
|
|
||||||
@@ -52,9 +48,3 @@
|
|||||||
| `de` | Deutsch |
|
| `de` | Deutsch |
|
||||||
|
|
||||||
All UI strings are managed via the inline `translations` object in `index.html`.
|
All UI strings are managed via the inline `translations` object in `index.html`.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Focus Keywords
|
|
||||||
|
|
||||||
`NGO donor management` · `transparent donations` · `Odoo for NGOs` · `donor communication` · `minimal admin for charities`
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 8.9 KiB |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 8.9 KiB |
+2
-19
@@ -6,7 +6,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title> NGO ERP Landingpage | ODOO4projects</title>
|
<title>OPENCODEis NOICE</title>
|
||||||
<meta name="description" content="Purpose-built ERP platform for NGOs. Centralize programs, automate donor and grant reporting, and launch in weeks with ODOO4projects." />
|
<meta name="description" content="Purpose-built ERP platform for NGOs. Centralize programs, automate donor and grant reporting, and launch in weeks with ODOO4projects." />
|
||||||
<meta name="keywords" content="NGO ERP system, nonprofit management software, ERP for NGOs, NGO operations platform, ODOO for nonprofits" />
|
<meta name="keywords" content="NGO ERP system, nonprofit management software, ERP for NGOs, NGO operations platform, ODOO for nonprofits" />
|
||||||
<link rel="icon" href="https://odoo4projects.com/web/image/website/1/favicon?unique=725c3af" />
|
<link rel="icon" href="https://odoo4projects.com/web/image/website/1/favicon?unique=725c3af" />
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
<div class="max-w-6xl mx-auto px-6 py-16 grid md:grid-cols-2 gap-12 items-center">
|
<div class="max-w-6xl mx-auto px-6 py-16 grid md:grid-cols-2 gap-12 items-center">
|
||||||
<div>
|
<div>
|
||||||
<p class="text-brand-sunrise font-semibold mb-4" data-i18n="hero-pill"></p>
|
<p class="text-brand-sunrise font-semibold mb-4" data-i18n="hero-pill"></p>
|
||||||
<h1 class="text-4xl md:text-5xl font-semibold leading-tight mb-6"><span class=\"emoji\" aria-hidden=\"true\"></span> <span data-i18n=\"hero-headline\"></span></h1>
|
<h1 class="text-4xl md:text-5xl font-semibold leading-tight mb-6">OPENCODEis NOICE</h1>
|
||||||
<p class="text-lg text-white/80 mb-8" data-i18n="hero-subheadline"></p>
|
<p class="text-lg text-white/80 mb-8" data-i18n="hero-subheadline"></p>
|
||||||
<div class="flex flex-wrap gap-4">
|
<div class="flex flex-wrap gap-4">
|
||||||
<a href="#trial" class="px-6 py-3 bg-brand-accent hover:bg-brand-sunrise text-brand-ink font-semibold rounded-full transition" data-i18n="cta-trial" data-event="cta:hero-trial"></a>
|
<a href="#trial" class="px-6 py-3 bg-brand-accent hover:bg-brand-sunrise text-brand-ink font-semibold rounded-full transition" data-i18n="cta-trial" data-event="cta:hero-trial"></a>
|
||||||
@@ -124,23 +124,6 @@
|
|||||||
<button id="blog-toggle" type="button" class="text-brand-accent font-semibold hover:underline underline-offset-4">Browse all articles →</button>
|
<button id="blog-toggle" type="button" class="text-brand-accent font-semibold hover:underline underline-offset-4">Browse all articles →</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="blog-grid" class="grid gap-6 md:grid-cols-3"></div>
|
<div id="blog-grid" class="grid gap-6 md:grid-cols-3"></div>
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"headline": "How to Automate Grant Reporting for Small NGOs — Step‑by‑Step with Odoo + n8n",
|
|
||||||
"datePublished": "2026-03-25",
|
|
||||||
"author": {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Odoo4Projects NGO Team"
|
|
||||||
},
|
|
||||||
"description": "Automate grant reporting for small NGOs with Odoo and n8n — reduce errors, save time, and simplify compliance.",
|
|
||||||
"mainEntityOfPage": "https://ngo.odoo4projects.com/automate-grant-reporting-odoo-n8n",
|
|
||||||
"keywords": "automate grant reporting, Odoo grants, n8n automation NGO, grant compliance automation, NGO reporting software"
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<p id="blog-error" class="text-sm text-brand-ink/70 mt-6 hidden"></p>
|
<p id="blog-error" class="text-sm text-brand-ink/70 mt-6 hidden"></p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
Reference in New Issue
Block a user