Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b40959b5dd | |||
| cf511908b8 | |||
| fc33b7d5f6 | |||
| 7d5b7a3e14 | |||
| d5630b0df9 | |||
| 68a4f9544c | |||
| ecf4219897 | |||
| 84090fd562 | |||
| 76a47cc730 | |||
| 6127867d51 | |||
| 5189b232bc | |||
| 482847e89e | |||
| a7521ebdec | |||
| 60cbae30af | |||
| 86bc094587 | |||
| 739eee0f1c |
@@ -0,0 +1,26 @@
|
||||
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.
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
# NGO Website — ODOO4projects
|
||||
|
||||
**Project:** NGO marketing homepage and blog
|
||||
**URL:** [ngo.odoo4projects.com](https://ngo.odoo4projects.com)
|
||||
**Stack:** Static HTML · Tailwind CSS · Vanilla JS
|
||||
|
||||
---
|
||||
|
||||
## Repository Rules
|
||||
|
||||
- Blog posts live in `blog.json` — do not create separate backup files.
|
||||
- No backup files in the repo.
|
||||
- Update this README with every commit.
|
||||
|
||||
---
|
||||
|
||||
## Page Structure
|
||||
|
||||
| # | Block | Purpose |
|
||||
|---|-------|---------|
|
||||
| 1 | **Hero** | Headline, subheadline, free-trial CTA, key stats |
|
||||
| 2 | **Hot NGO Topics** | Three focused topic cards (transparency, communications, fundraising) |
|
||||
| 3 | **Blog** | Latest articles loaded dynamically from `blog.json` |
|
||||
| 4 | **Sign Up — Free Trial** | Email signup form, 4-week free trial, no credit card |
|
||||
| 5 | **Have a Meeting** | 30-minute consultation booking via Google Calendar |
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
|
||||
| Code | Language |
|
||||
|------|----------|
|
||||
| `en` | English (default) |
|
||||
| `es` | Español |
|
||||
| `de` | Deutsch |
|
||||
|
||||
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.
|
After Width: | Height: | Size: 8.9 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 8.9 KiB |
+30
-9
@@ -1,9 +1,12 @@
|
||||
</html>
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="scroll-smooth">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>NGO ERP Landingpage | ODOO4projects</title>
|
||||
<title> NGO ERP Landingpage | ODOO4projects</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="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" />
|
||||
@@ -40,7 +43,8 @@
|
||||
</script>
|
||||
<script defer data-domain="ngo.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
</head>
|
||||
|
||||
</head>
|
||||
<body class="bg-brand-snow text-brand-ink">
|
||||
<header class="bg-hero-gradient text-white">
|
||||
<div class="max-w-6xl mx-auto px-6 py-6 flex flex-wrap items-center justify-between gap-4">
|
||||
@@ -65,7 +69,7 @@
|
||||
<div class="max-w-6xl mx-auto px-6 py-16 grid md:grid-cols-2 gap-12 items-center">
|
||||
<div>
|
||||
<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" data-i18n="hero-headline"></h1>
|
||||
<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>
|
||||
<p class="text-lg text-white/80 mb-8" data-i18n="hero-subheadline"></p>
|
||||
<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>
|
||||
@@ -120,6 +124,23 @@
|
||||
<button id="blog-toggle" type="button" class="text-brand-accent font-semibold hover:underline underline-offset-4">Browse all articles →</button>
|
||||
</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>
|
||||
</div>
|
||||
</section>
|
||||
@@ -131,9 +152,9 @@
|
||||
<h2 class="text-3xl font-semibold mb-4" data-i18n="trial-heading"></h2>
|
||||
<p class="text-white/80 mb-6" data-i18n="trial-body"></p>
|
||||
<ul class="space-y-4 text-sm text-white/80">
|
||||
<li class="flex gap-3"><span class="text-brand-emerald">✔</span><span data-i18n="trial-bullet1"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-emerald">✔</span><span data-i18n="trial-bullet2"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-emerald">✔</span><span data-i18n="trial-bullet3"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-emerald" aria-hidden="true">•</span><span data-i18n="trial-bullet1"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-emerald" aria-hidden="true">•</span><span data-i18n="trial-bullet2"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-emerald" aria-hidden="true">•</span><span data-i18n="trial-bullet3"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<form class="bg-white text-brand-ink rounded-3xl p-8 shadow-brand space-y-5" data-event="form:trial">
|
||||
@@ -168,9 +189,9 @@
|
||||
<h2 class="text-3xl font-semibold mb-4" data-i18n="meeting-heading"></h2>
|
||||
<p class="text-brand-ink/80 mb-6" data-i18n="meeting-body"></p>
|
||||
<ul class="space-y-4 text-sm text-brand-ink/80">
|
||||
<li class="flex gap-3"><span class="text-brand-primary">◎</span><span data-i18n="meeting-bullet1"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-primary">◎</span><span data-i18n="meeting-bullet2"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-primary">◎</span><span data-i18n="meeting-bullet3"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-primary" aria-hidden="true">•</span><span data-i18n="meeting-bullet1"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-primary" aria-hidden="true">•</span><span data-i18n="meeting-bullet2"></span></li>
|
||||
<li class="flex gap-3"><span class="text-brand-primary" aria-hidden="true">•</span><span data-i18n="meeting-bullet3"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bg-brand-snow border border-brand-smoke rounded-3xl p-8 shadow-brand">
|
||||
|
||||
Reference in New Issue
Block a user