Compare commits
82 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d4c8760007 | |||
| b8fc96ea0a | |||
| 966441e6aa | |||
| 43d66fd295 | |||
| 5afda4e953 | |||
| c6d3e2516e | |||
| 3ac4e9bb4a | |||
| eb2f6802fd | |||
| 8bb70a9af0 | |||
| 8755db3305 | |||
| 2fa1a5eb3a | |||
| 75fc2ccc3b | |||
| e44d99c7e7 | |||
| dedec93e23 | |||
| 9a120ab0d6 | |||
| 6079039f21 | |||
| 2cf4dcbdae | |||
| e9dc4a6a0d | |||
| f488a103c8 | |||
| df5eeeb00c | |||
| b581601064 | |||
| 77bc63de24 | |||
| a86684f6d1 | |||
| b82c04ce51 | |||
| df20b2fb51 | |||
| 77aaa9989e | |||
| c5a862f7ba | |||
| 3bf0060439 | |||
| a5b3b9d36f | |||
| 440cc084d3 | |||
| f9a263dd8c | |||
| fdc1a1a215 | |||
| 10ac10a92a | |||
| a9ea122ac5 | |||
| f865d549d1 | |||
| 3215694f5c | |||
| 8594393664 | |||
| b0dde481cf | |||
| 5172bfe62c | |||
| d518ad2ae4 | |||
| 62c4aee24c | |||
| d92c72a6cd | |||
| 3005e53d6e | |||
| afb5a2ac20 | |||
| 3afcf77a16 | |||
| e542bbd44a | |||
| a626defcfd | |||
| b2cb2a1a8e | |||
| 3549e8757e | |||
| 2b2baf6851 | |||
| e649373118 | |||
| f3cb8ca848 | |||
| acec840d91 | |||
| 0d5205ac94 | |||
| 1a4a9542f5 | |||
| bd319d05a5 | |||
| 2a0af148c8 | |||
| ad7a531ea0 | |||
| fd91306cb0 | |||
| 4ea7586a7f | |||
| 671ddb2b75 | |||
| 7d447bee93 | |||
| 5cc4486ab7 | |||
| 6e4b1c891c | |||
| f1f67b29dd | |||
| d568a365df | |||
| 4781e84ebc | |||
| be09564a25 | |||
| 0fc5b59d5f | |||
| 5526873a41 | |||
| d111b55de0 | |||
| 5bd3c7b398 | |||
| 3627c2c73d | |||
| 4d2f57c20c | |||
| 05719aae4e | |||
| b2a41d1a7b | |||
| 4bdef11b3c | |||
| aafb99460c | |||
| a74de43248 | |||
| 819665225f | |||
| 3dd49559ac | |||
| c81565749a |
+21
@@ -0,0 +1,21 @@
|
||||
# Dependencies
|
||||
node_modules/
|
||||
|
||||
# Tailwind build temp
|
||||
tmp.json
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Editor
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
@@ -0,0 +1,233 @@
|
||||
# AGENTS.md — NGO Landing Page
|
||||
|
||||
Read this file fully before taking any action.
|
||||
|
||||
---
|
||||
|
||||
## Project Context
|
||||
|
||||
Single-page static landing page for an NGO ERP product.
|
||||
|
||||
| Item | Detail |
|
||||
|---|---|
|
||||
| Pages | `index.html` — the only HTML file |
|
||||
| Styling | Tailwind CSS v3 · source `src/input.css` → compiled `assets/site.css` |
|
||||
| Data | `blog.json` — flat array of blog posts, loaded at runtime by inline JS |
|
||||
| i18n | Inline `translations` object inside `index.html` (EN / ES / DE) |
|
||||
| Blog renderer | Inline `<script>` in `index.html` — no external JS files |
|
||||
| Dev server | `./start` (runs `live-server`) |
|
||||
| Git remote | `git@git.odoo4projects.com:Oliver/NGO.git` |
|
||||
|
||||
### File map
|
||||
|
||||
```
|
||||
index.html ← only HTML file — layout + all inline JS + i18n
|
||||
src/input.css ← Tailwind source (edit here, then rebuild)
|
||||
assets/site.css ← compiled output — DO NOT edit by hand
|
||||
blog.json ← English blog posts (canonical + fallback)
|
||||
blog.es.json ← Spanish blog posts
|
||||
blog.de.json ← German blog posts
|
||||
tailwind.config.js ← design tokens (colors, fonts, shadows)
|
||||
```
|
||||
|
||||
### Design tokens (from `tailwind.config.js`)
|
||||
|
||||
| Token | Hex | Usage |
|
||||
|---|---|---|
|
||||
| `brand-ink` | `#201824` | default text / dark backgrounds |
|
||||
| `brand-primary` | `#603F57` | section labels, bullet accents |
|
||||
| `brand-accent` | `#F762B4` | CTA buttons, links |
|
||||
| `brand-sunrise` | `#F8B84A` | hero highlights, hover states |
|
||||
| `brand-emerald` | `#39B982` | positive indicators |
|
||||
| `brand-snow` | `#F5F2F7` | page background |
|
||||
| `brand-smoke` | `#E5DCE8` | borders, subtle dividers |
|
||||
|
||||
NEVER use raw hex values in HTML — always use the token class names above.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Goal
|
||||
|
||||
- Deliver an **SEO-optimised, fast-loading, responsive** single-page site.
|
||||
- Keep all edits **minimal and targeted** — preserve design, structure, and functionality.
|
||||
- NEVER introduce new frameworks, libraries, or external dependencies.
|
||||
|
||||
### Quality bar for every change
|
||||
|
||||
| Concern | Rule |
|
||||
|---|---|
|
||||
| SEO | Keep all existing meta tags, `ld+json`, `alt` attributes, and heading hierarchy |
|
||||
| Performance | No comments in production HTML, no unused CSS classes, no render-blocking additions |
|
||||
| Responsive | Every element must work on mobile (375 px), tablet (768 px), and desktop (1280 px+) |
|
||||
| Consistency | Use only brand token classes; match existing spacing and rounding patterns |
|
||||
|
||||
---
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# Build CSS after editing src/input.css or tailwind.config.js
|
||||
npm run build:css
|
||||
|
||||
# Watch CSS during active development
|
||||
npm run watch:css
|
||||
|
||||
# Validate blog.json
|
||||
jq empty blog.json && echo "JSON valid"
|
||||
|
||||
# Start dev server
|
||||
./start
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Git Rules
|
||||
|
||||
- ALWAYS work on **`main`** branch.
|
||||
- Pull before every session:
|
||||
```bash
|
||||
git pull origin main
|
||||
```
|
||||
- Commit messages must follow the pattern:
|
||||
- `blog: add post – <title>`
|
||||
- `fix: <short description>`
|
||||
- `content: <short description>`
|
||||
- Push immediately after committing — never leave unpushed commits.
|
||||
- Branch creation is permitted ONLY under the **Branch Handling Exception** (see bottom).
|
||||
|
||||
---
|
||||
|
||||
## File Safety Rules
|
||||
|
||||
- ONLY modify files required for the task.
|
||||
- NEVER delete or restructure content unrelated to the task.
|
||||
- NEVER remove existing blog posts from `blog.json`.
|
||||
- NEVER edit `assets/site.css` directly — always rebuild from `src/input.css`.
|
||||
|
||||
---
|
||||
|
||||
## Blog Post Schema
|
||||
|
||||
### Language-to-file mapping
|
||||
|
||||
| Language | File loaded | Fallback |
|
||||
|---|---|---|
|
||||
| English (`en`) | `blog.json` | — |
|
||||
| Spanish (`es`) | `blog.es.json` | `blog.json` |
|
||||
| German (`de`) | `blog.de.json` | `blog.json` |
|
||||
|
||||
The loader in `index.html` fetches the language-specific file automatically when the visitor switches language. If a language file is missing or returns an error, it falls back to `blog.json` silently.
|
||||
|
||||
`blog.json` is always the **English source and fallback**. Keep all three files structurally identical — same number of posts, same order, translated content only.
|
||||
|
||||
---
|
||||
|
||||
`blog.json` (and every language variant) is a root-level JSON array. Every post object contains **exactly these five fields**:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"area": "Automation",
|
||||
"date": "2026-03-25",
|
||||
"title": "Article title as plain text",
|
||||
"teaser": "<p>One or two sentences visible before 'Read more'.</p>",
|
||||
"content": "<h3>Section</h3><p>Full article as HTML.</p>"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
| Field | Type | Constraint |
|
||||
|---|---|---|
|
||||
| `area` | plain string | Category label rendered above the title |
|
||||
| `date` | ISO 8601 (`YYYY-MM-DD`) | Used by `Intl.DateTimeFormat` |
|
||||
| `title` | plain string | Rendered as `<h3>` — no HTML |
|
||||
| `teaser` | HTML string | Always visible — wrap in `<p>` tags |
|
||||
| `content` | HTML string | Revealed by "Read more" toggle — use `<h3>`, `<p>`, `<ul>`, `<li>` |
|
||||
|
||||
NEVER add extra fields (`slug`, `author`, `tags`, `excerpt`, `hero_image`, etc.) — they are ignored by the renderer and pollute the file.
|
||||
|
||||
### Adding a new blog post (jq method)
|
||||
|
||||
> Add to **all three files** in the same session. A post that exists in English but not in Spanish/German will silently fall back to the English version for those visitors — which is acceptable temporarily but should be resolved promptly.
|
||||
|
||||
```bash
|
||||
# 1. Pull latest
|
||||
git pull origin main
|
||||
|
||||
# 2. Backup all blog files once per session
|
||||
mkdir -p /backup
|
||||
for f in blog.json blog.es.json blog.de.json; do
|
||||
cp $f /backup/$f.$(date +%Y%m%d%H%M%S)
|
||||
done
|
||||
|
||||
# 3. Prepend new post to each language file
|
||||
# $NEW_EN, $NEW_ES, $NEW_DE must each be a valid single post object
|
||||
jq --argjson new "$NEW_EN" '. = [$new] + .' blog.json > tmp.json && mv tmp.json blog.json
|
||||
jq --argjson new "$NEW_ES" '. = [$new] + .' blog.es.json > tmp.json && mv tmp.json blog.es.json
|
||||
jq --argjson new "$NEW_DE" '. = [$new] + .' blog.de.json > tmp.json && mv tmp.json blog.de.json
|
||||
|
||||
# 4. Validate all three
|
||||
jq empty blog.json && echo "blog.json OK"
|
||||
jq empty blog.es.json && echo "blog.es.json OK"
|
||||
jq empty blog.de.json && echo "blog.de.json OK"
|
||||
|
||||
# 5. Commit and push
|
||||
git add blog.json blog.es.json blog.de.json
|
||||
git commit -m "blog: add post – <title>"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
NEVER use Python, Node scripts, or manual text editing to modify `blog.json`.
|
||||
|
||||
---
|
||||
|
||||
## Execution Workflow
|
||||
|
||||
Follow this order for every task:
|
||||
|
||||
1. `git pull origin main`
|
||||
2. Identify the exact files to change — nothing else.
|
||||
3. Apply minimal edits.
|
||||
4. If `src/input.css` or `tailwind.config.js` were changed → rebuild CSS.
|
||||
5. Validate: `jq empty blog.json` for JSON; visual check for HTML.
|
||||
6. Commit with a descriptive message.
|
||||
7. `git push origin main`
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- Changes are minimal, validated, and committed.
|
||||
- `blog.json` is a valid array with exactly five fields per post.
|
||||
- `assets/site.css` reflects any CSS changes (rebuilt, not hand-edited).
|
||||
- HTML passes a visual check — layout and design unchanged except for the intended edit.
|
||||
- All commits pushed to `main`.
|
||||
|
||||
---
|
||||
|
||||
## Failure Conditions
|
||||
|
||||
These actions constitute a failure:
|
||||
|
||||
- Refusing to act due to perceived access restrictions.
|
||||
- Failing to push after committing.
|
||||
- Adding undeclared fields to `blog.json`.
|
||||
- Removing or overwriting existing blog posts.
|
||||
- Editing `assets/site.css` by hand.
|
||||
- Modifying files outside the scope of the task.
|
||||
- Leaving a branch open without merging.
|
||||
|
||||
---
|
||||
|
||||
## Branch Handling Exception
|
||||
|
||||
Branch creation is permitted **only** when:
|
||||
|
||||
- The task explicitly requires a feature branch, **or**
|
||||
- A direct push to `main` is blocked by branch protection.
|
||||
|
||||
If a branch is created it **must**:
|
||||
|
||||
- Follow the naming convention `<type>/<short-description>` (e.g. `fix/blog-json-schema`).
|
||||
- Be merged into `main` via PR immediately after the task is complete.
|
||||
- Be deleted after merge — never abandoned.
|
||||
@@ -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.
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
# 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`
|
||||
File diff suppressed because one or more lines are too long
@@ -1,22 +0,0 @@
|
||||
[
|
||||
{
|
||||
"area": "Donor Management",
|
||||
"title": "From Notebooks to Night Off: How One NGO Cut Reconciliation Time in Half",
|
||||
"teaser": "<p>Ana replaced stacks of notebooks with a single shared ledger and reclaimed her evenings.</p>",
|
||||
"content": "\"Ana used to sit under a single lamp with three notebooks stacked and the weight of every donor question on her shoulders. When a donor called she fumbled through pages and felt her chest tighten.\"\n\nAn ERP creates a single source of truth for every donation: each peso is recorded once and linked to allocations, program expenses, receipts, and impact notes, eliminating duplicated spreadsheets and manual cross-checks. Shared dashboards, ownership fields, and due-date tracking make reconciliation predictable and reduce the time teams spend hunting for evidence.\n\nWith Odoo and n8n, donors submit a simple webform that triggers an n8n workflow to create the donation card in Odoo, attach receipts, apply tags, and notify the approver. Approval buttons in Odoo, automated reminder sequences, and scheduled exports or AI summaries transform reconciliation into a short weekly routine and let audit packets assemble automatically.\n\n\"Now Ana closes her laptop at 7 p.m., answers donor queries in seconds from a shared dashboard, and walks home without the knot in her chest — the night no longer belongs to reconciliation but to rest.\"\n\nGet a free trial: https://ngo.odoo4projects.com",
|
||||
"date": "2026-03-24",
|
||||
"slug": "from-notebooks-to-night-off",
|
||||
"author": "Odoo4Projects NGO",
|
||||
"categories": [
|
||||
"Donor Management",
|
||||
"Efficiency"
|
||||
],
|
||||
"tags": [
|
||||
"Odoo",
|
||||
"n8n",
|
||||
"reconciliation",
|
||||
"donor-management"
|
||||
],
|
||||
"meta_description": "How one NGO replaced stacked notebooks with a shared ledger and cut reconciliation time in half using Odoo + n8n."
|
||||
}
|
||||
]
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1 @@
|
||||
google-site-verification: google261cafffa78d8c3d.html
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-1152,-256)">
|
||||
<rect id="Icons" x="0" y="0" width="1280" height="800" style="fill:none;"/>
|
||||
<g id="Icons1" serif:id="Icons">
|
||||
<g id="Strike">
|
||||
</g>
|
||||
<g id="H1">
|
||||
</g>
|
||||
<g id="H2">
|
||||
</g>
|
||||
<g id="H3">
|
||||
</g>
|
||||
<g id="list-ul">
|
||||
</g>
|
||||
<g id="hamburger-1">
|
||||
</g>
|
||||
<g id="hamburger-2">
|
||||
</g>
|
||||
<g id="list-ol">
|
||||
</g>
|
||||
<g id="list-task">
|
||||
</g>
|
||||
<g id="trash">
|
||||
</g>
|
||||
<g id="vertical-menu">
|
||||
</g>
|
||||
<g id="horizontal-menu">
|
||||
</g>
|
||||
<g id="sidebar-2">
|
||||
</g>
|
||||
<g id="Pen">
|
||||
</g>
|
||||
<g id="Pen1" serif:id="Pen">
|
||||
</g>
|
||||
<g id="clock">
|
||||
</g>
|
||||
<g id="external-link">
|
||||
</g>
|
||||
<g id="hr">
|
||||
</g>
|
||||
<g id="info">
|
||||
</g>
|
||||
<g id="warning">
|
||||
</g>
|
||||
<g id="plus-circle">
|
||||
</g>
|
||||
<g id="minus-circle">
|
||||
</g>
|
||||
<g id="vue">
|
||||
</g>
|
||||
<g id="cog">
|
||||
</g>
|
||||
<g id="logo">
|
||||
</g>
|
||||
<g id="radio-check">
|
||||
</g>
|
||||
<g id="eye-slash">
|
||||
</g>
|
||||
<g id="eye">
|
||||
</g>
|
||||
<g id="toggle-off">
|
||||
</g>
|
||||
<g id="shredder">
|
||||
</g>
|
||||
<g id="spinner--loading--dots-" serif:id="spinner [loading, dots]">
|
||||
</g>
|
||||
<g id="react">
|
||||
</g>
|
||||
<g id="check-selected">
|
||||
</g>
|
||||
<g id="turn-off">
|
||||
</g>
|
||||
<g id="code-block">
|
||||
</g>
|
||||
<g id="user">
|
||||
</g>
|
||||
<g id="coffee-bean">
|
||||
</g>
|
||||
<g transform="matrix(0.638317,0.368532,-0.368532,0.638317,785.021,-208.975)">
|
||||
<g id="coffee-beans">
|
||||
<g id="coffee-bean1" serif:id="coffee-bean">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="coffee-bean-filled" transform="matrix(0.866025,0.5,-0.5,0.866025,717.879,-387.292)">
|
||||
<g transform="matrix(1,0,0,1,0,-0.699553)">
|
||||
<path d="M737.673,328.231C738.494,328.056 739.334,328.427 739.757,329.152C739.955,329.463 740.106,329.722 740.106,329.722C740.106,329.722 745.206,338.581 739.429,352.782C737.079,358.559 736.492,366.083 738.435,371.679C738.697,372.426 738.482,373.258 737.89,373.784C737.298,374.31 736.447,374.426 735.735,374.077C730.192,371.375 722.028,365.058 722.021,352C722.015,340.226 728.812,330.279 737.673,328.231Z"/>
|
||||
</g>
|
||||
<g transform="matrix(-1,0,0,-1,1483.03,703.293)">
|
||||
<path d="M737.609,328.246C738.465,328.06 739.344,328.446 739.785,329.203C739.97,329.49 740.106,329.722 740.106,329.722C740.106,329.722 745.206,338.581 739.429,352.782C737.1,358.507 736.503,365.948 738.383,371.527C738.646,372.304 738.415,373.164 737.796,373.703C737.177,374.243 736.294,374.356 735.56,373.989C730.02,371.241 722.028,364.92 722.021,352C722.016,340.255 728.779,330.328 737.609,328.246Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.638317,0.368532,-0.368532,0.638317,913.062,-208.975)">
|
||||
<g id="coffee-beans-filled">
|
||||
<g id="coffee-bean2" serif:id="coffee-bean">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="clipboard">
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,128.011,1.35415)">
|
||||
<g id="clipboard-paste">
|
||||
</g>
|
||||
</g>
|
||||
<g id="clipboard-copy">
|
||||
</g>
|
||||
<g id="Layer1">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
@@ -0,0 +1,224 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
|
||||
<svg
|
||||
fill="#000000"
|
||||
width="800px"
|
||||
height="800px"
|
||||
viewBox="0 0 64 64"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
|
||||
id="svg6"
|
||||
sodipodi:docname="bean_dark_Roast.svg"
|
||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:serif="http://www.serif.com/"><defs
|
||||
id="defs6" /><sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="1.075"
|
||||
inkscape:cx="400"
|
||||
inkscape:cy="400"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1129"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg6" />
|
||||
<g
|
||||
transform="matrix(1,0,0,1,-1152,-256)"
|
||||
id="g6">
|
||||
<rect
|
||||
id="Icons"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1280"
|
||||
height="800"
|
||||
style="fill:none;" />
|
||||
<g
|
||||
id="Icons1"
|
||||
serif:id="Icons">
|
||||
<g
|
||||
id="Strike">
|
||||
</g>
|
||||
<g
|
||||
id="H1">
|
||||
</g>
|
||||
<g
|
||||
id="H2">
|
||||
</g>
|
||||
<g
|
||||
id="H3">
|
||||
</g>
|
||||
<g
|
||||
id="list-ul">
|
||||
</g>
|
||||
<g
|
||||
id="hamburger-1">
|
||||
</g>
|
||||
<g
|
||||
id="hamburger-2">
|
||||
</g>
|
||||
<g
|
||||
id="list-ol">
|
||||
</g>
|
||||
<g
|
||||
id="list-task">
|
||||
</g>
|
||||
<g
|
||||
id="trash">
|
||||
</g>
|
||||
<g
|
||||
id="vertical-menu">
|
||||
</g>
|
||||
<g
|
||||
id="horizontal-menu">
|
||||
</g>
|
||||
<g
|
||||
id="sidebar-2">
|
||||
</g>
|
||||
<g
|
||||
id="Pen">
|
||||
</g>
|
||||
<g
|
||||
id="Pen1"
|
||||
serif:id="Pen">
|
||||
</g>
|
||||
<g
|
||||
id="clock">
|
||||
</g>
|
||||
<g
|
||||
id="external-link">
|
||||
</g>
|
||||
<g
|
||||
id="hr">
|
||||
</g>
|
||||
<g
|
||||
id="info">
|
||||
</g>
|
||||
<g
|
||||
id="warning">
|
||||
</g>
|
||||
<g
|
||||
id="plus-circle">
|
||||
</g>
|
||||
<g
|
||||
id="minus-circle">
|
||||
</g>
|
||||
<g
|
||||
id="vue">
|
||||
</g>
|
||||
<g
|
||||
id="cog">
|
||||
</g>
|
||||
<g
|
||||
id="logo">
|
||||
</g>
|
||||
<g
|
||||
id="radio-check">
|
||||
</g>
|
||||
<g
|
||||
id="eye-slash">
|
||||
</g>
|
||||
<g
|
||||
id="eye">
|
||||
</g>
|
||||
<g
|
||||
id="toggle-off">
|
||||
</g>
|
||||
<g
|
||||
id="shredder">
|
||||
</g>
|
||||
<g
|
||||
id="spinner--loading--dots-"
|
||||
serif:id="spinner [loading, dots]">
|
||||
</g>
|
||||
<g
|
||||
id="react">
|
||||
</g>
|
||||
<g
|
||||
id="check-selected">
|
||||
</g>
|
||||
<g
|
||||
id="turn-off">
|
||||
</g>
|
||||
<g
|
||||
id="code-block">
|
||||
</g>
|
||||
<g
|
||||
id="user">
|
||||
</g>
|
||||
<g
|
||||
id="coffee-bean">
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.638317,0.368532,-0.368532,0.638317,785.021,-208.975)"
|
||||
id="g1">
|
||||
<g
|
||||
id="coffee-beans">
|
||||
<g
|
||||
id="coffee-bean1"
|
||||
serif:id="coffee-bean">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="coffee-bean-filled"
|
||||
transform="matrix(0.866025,0.5,-0.5,0.866025,717.879,-387.292)">
|
||||
<g
|
||||
transform="matrix(1,0,0,1,0,-0.699553)"
|
||||
id="g2">
|
||||
<path
|
||||
d="M737.673,328.231C738.494,328.056 739.334,328.427 739.757,329.152C739.955,329.463 740.106,329.722 740.106,329.722C740.106,329.722 745.206,338.581 739.429,352.782C737.079,358.559 736.492,366.083 738.435,371.679C738.697,372.426 738.482,373.258 737.89,373.784C737.298,374.31 736.447,374.426 735.735,374.077C730.192,371.375 722.028,365.058 722.021,352C722.015,340.226 728.812,330.279 737.673,328.231Z"
|
||||
id="path1"
|
||||
style="fill:#3e2723;fill-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-1,0,0,-1,1483.03,703.293)"
|
||||
id="g3">
|
||||
<path
|
||||
d="M737.609,328.246C738.465,328.06 739.344,328.446 739.785,329.203C739.97,329.49 740.106,329.722 740.106,329.722C740.106,329.722 745.206,338.581 739.429,352.782C737.1,358.507 736.503,365.948 738.383,371.527C738.646,372.304 738.415,373.164 737.796,373.703C737.177,374.243 736.294,374.356 735.56,373.989C730.02,371.241 722.028,364.92 722.021,352C722.016,340.255 728.779,330.328 737.609,328.246Z"
|
||||
id="path2"
|
||||
style="stroke:#3e2723;stroke-opacity:1;fill:#3e2723;fill-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.638317,0.368532,-0.368532,0.638317,913.062,-208.975)"
|
||||
id="g4">
|
||||
<g
|
||||
id="coffee-beans-filled">
|
||||
<g
|
||||
id="coffee-bean2"
|
||||
serif:id="coffee-bean">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="clipboard">
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1,0,0,1,128.011,1.35415)"
|
||||
id="g5">
|
||||
<g
|
||||
id="clipboard-paste">
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="clipboard-copy">
|
||||
</g>
|
||||
<g
|
||||
id="Layer1">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,224 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
|
||||
<svg
|
||||
fill="#000000"
|
||||
width="800px"
|
||||
height="800px"
|
||||
viewBox="0 0 64 64"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
|
||||
id="svg6"
|
||||
sodipodi:docname="bean_light_brown.svg"
|
||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:serif="http://www.serif.com/"><defs
|
||||
id="defs6" /><sodipodi:namedview
|
||||
id="namedview6"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="1.075"
|
||||
inkscape:cx="400"
|
||||
inkscape:cy="400"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1129"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg6" />
|
||||
<g
|
||||
transform="matrix(1,0,0,1,-1152,-256)"
|
||||
id="g6">
|
||||
<rect
|
||||
id="Icons"
|
||||
x="0"
|
||||
y="0"
|
||||
width="1280"
|
||||
height="800"
|
||||
style="fill:none;" />
|
||||
<g
|
||||
id="Icons1"
|
||||
serif:id="Icons">
|
||||
<g
|
||||
id="Strike">
|
||||
</g>
|
||||
<g
|
||||
id="H1">
|
||||
</g>
|
||||
<g
|
||||
id="H2">
|
||||
</g>
|
||||
<g
|
||||
id="H3">
|
||||
</g>
|
||||
<g
|
||||
id="list-ul">
|
||||
</g>
|
||||
<g
|
||||
id="hamburger-1">
|
||||
</g>
|
||||
<g
|
||||
id="hamburger-2">
|
||||
</g>
|
||||
<g
|
||||
id="list-ol">
|
||||
</g>
|
||||
<g
|
||||
id="list-task">
|
||||
</g>
|
||||
<g
|
||||
id="trash">
|
||||
</g>
|
||||
<g
|
||||
id="vertical-menu">
|
||||
</g>
|
||||
<g
|
||||
id="horizontal-menu">
|
||||
</g>
|
||||
<g
|
||||
id="sidebar-2">
|
||||
</g>
|
||||
<g
|
||||
id="Pen">
|
||||
</g>
|
||||
<g
|
||||
id="Pen1"
|
||||
serif:id="Pen">
|
||||
</g>
|
||||
<g
|
||||
id="clock">
|
||||
</g>
|
||||
<g
|
||||
id="external-link">
|
||||
</g>
|
||||
<g
|
||||
id="hr">
|
||||
</g>
|
||||
<g
|
||||
id="info">
|
||||
</g>
|
||||
<g
|
||||
id="warning">
|
||||
</g>
|
||||
<g
|
||||
id="plus-circle">
|
||||
</g>
|
||||
<g
|
||||
id="minus-circle">
|
||||
</g>
|
||||
<g
|
||||
id="vue">
|
||||
</g>
|
||||
<g
|
||||
id="cog">
|
||||
</g>
|
||||
<g
|
||||
id="logo">
|
||||
</g>
|
||||
<g
|
||||
id="radio-check">
|
||||
</g>
|
||||
<g
|
||||
id="eye-slash">
|
||||
</g>
|
||||
<g
|
||||
id="eye">
|
||||
</g>
|
||||
<g
|
||||
id="toggle-off">
|
||||
</g>
|
||||
<g
|
||||
id="shredder">
|
||||
</g>
|
||||
<g
|
||||
id="spinner--loading--dots-"
|
||||
serif:id="spinner [loading, dots]">
|
||||
</g>
|
||||
<g
|
||||
id="react">
|
||||
</g>
|
||||
<g
|
||||
id="check-selected">
|
||||
</g>
|
||||
<g
|
||||
id="turn-off">
|
||||
</g>
|
||||
<g
|
||||
id="code-block">
|
||||
</g>
|
||||
<g
|
||||
id="user">
|
||||
</g>
|
||||
<g
|
||||
id="coffee-bean">
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.638317,0.368532,-0.368532,0.638317,785.021,-208.975)"
|
||||
id="g1">
|
||||
<g
|
||||
id="coffee-beans">
|
||||
<g
|
||||
id="coffee-bean1"
|
||||
serif:id="coffee-bean">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="coffee-bean-filled"
|
||||
transform="matrix(0.866025,0.5,-0.5,0.866025,717.879,-387.292)">
|
||||
<g
|
||||
transform="matrix(1,0,0,1,0,-0.699553)"
|
||||
id="g2">
|
||||
<path
|
||||
d="M737.673,328.231C738.494,328.056 739.334,328.427 739.757,329.152C739.955,329.463 740.106,329.722 740.106,329.722C740.106,329.722 745.206,338.581 739.429,352.782C737.079,358.559 736.492,366.083 738.435,371.679C738.697,372.426 738.482,373.258 737.89,373.784C737.298,374.31 736.447,374.426 735.735,374.077C730.192,371.375 722.028,365.058 722.021,352C722.015,340.226 728.812,330.279 737.673,328.231Z"
|
||||
id="path1"
|
||||
style="fill:#5d4037;fill-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-1,0,0,-1,1483.03,703.293)"
|
||||
id="g3">
|
||||
<path
|
||||
d="M737.609,328.246C738.465,328.06 739.344,328.446 739.785,329.203C739.97,329.49 740.106,329.722 740.106,329.722C740.106,329.722 745.206,338.581 739.429,352.782C737.1,358.507 736.503,365.948 738.383,371.527C738.646,372.304 738.415,373.164 737.796,373.703C737.177,374.243 736.294,374.356 735.56,373.989C730.02,371.241 722.028,364.92 722.021,352C722.016,340.255 728.779,330.328 737.609,328.246Z"
|
||||
id="path2"
|
||||
style="stroke:#5d4037;stroke-opacity:1;fill:#5d4037;fill-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.638317,0.368532,-0.368532,0.638317,913.062,-208.975)"
|
||||
id="g4">
|
||||
<g
|
||||
id="coffee-beans-filled">
|
||||
<g
|
||||
id="coffee-bean2"
|
||||
serif:id="coffee-bean">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="clipboard">
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1,0,0,1,128.011,1.35415)"
|
||||
id="g5">
|
||||
<g
|
||||
id="clipboard-paste">
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="clipboard-copy">
|
||||
</g>
|
||||
<g
|
||||
id="Layer1">
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
+116
@@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="124.8711mm"
|
||||
height="31.440542mm"
|
||||
viewBox="0 0 124.8711 31.440542"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||
sodipodi:docname="logo.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="0.70021044"
|
||||
inkscape:cx="329.90082"
|
||||
inkscape:cy="345.61039"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1046"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-17.727083,-56.885417)">
|
||||
<g
|
||||
id="g5"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-67.310852,25.675979)">
|
||||
<text
|
||||
id="text5"
|
||||
xml:space="preserve"
|
||||
transform="matrix(1.3333333,0,0,1.3333333,316.00667,186.29426)"><tspan
|
||||
id="tspan5"
|
||||
style="font-variant:normal;font-weight:700;font-size:65.991px;font-family:'Noto Sans';writing-mode:lr-tb;fill:#3e2723;fill-opacity:1;fill-rule:nonzero;stroke:#3e2723;stroke-width:2.19965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="0"
|
||||
y="0">my</tspan></text>
|
||||
<text
|
||||
id="text6"
|
||||
xml:space="preserve"
|
||||
transform="matrix(1.3333333,0,0,1.3333333,452.48533,186.29426)"><tspan
|
||||
id="tspan6"
|
||||
style="font-variant:normal;font-weight:700;font-size:65.991px;font-family:'Noto Sans';writing-mode:lr-tb;fill:#e65100;fill-opacity:1;fill-rule:nonzero;stroke:#e65100;stroke-width:2.19965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="0"
|
||||
y="0">-</tspan></text>
|
||||
<text
|
||||
id="text7"
|
||||
xml:space="preserve"
|
||||
transform="matrix(1.3333333,0,0,1.3333333,480.79333,186.29426)"><tspan
|
||||
id="tspan7"
|
||||
style="font-variant:normal;font-weight:700;font-size:65.991px;font-family:'Noto Sans';writing-mode:lr-tb;fill:#3e2723;fill-opacity:1;fill-rule:nonzero;stroke:#3e2723;stroke-width:2.19965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="0"
|
||||
y="0">biz</tspan></text>
|
||||
<text
|
||||
id="text8"
|
||||
xml:space="preserve"
|
||||
transform="matrix(1.3333333,0,0,1.3333333,606.236,186.29426)"><tspan
|
||||
id="tspan8"
|
||||
style="font-variant:normal;font-weight:700;font-size:65.991px;font-family:'Noto Sans';writing-mode:lr-tb;fill:#e65100;fill-opacity:1;fill-rule:nonzero;stroke:#e65100;stroke-width:2.19965;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="0"
|
||||
y="0">.app</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g8"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-67.310852,25.675979)">
|
||||
<path
|
||||
id="path8"
|
||||
d="M 249.449,279.212 H 391.181"
|
||||
style="fill:none;stroke:#e65100;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,595.27559)" />
|
||||
</g>
|
||||
<g
|
||||
id="g9"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-67.310852,25.675979)">
|
||||
<path
|
||||
id="path9"
|
||||
d="M 442.205,279.212 H 583.937"
|
||||
style="fill:none;stroke:#e65100;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,595.27559)" />
|
||||
</g>
|
||||
<g
|
||||
id="g10"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-67.310852,25.675979)">
|
||||
<path
|
||||
id="path10"
|
||||
d="m 420.661,289.332 c 0.369,-0.114 0.596,-0.454 0.596,-0.822 0.028,-0.171 0.028,-0.284 0.028,-0.284 0,0 -0.028,-4.535 -5.386,-8.702 -2.182,-1.701 -4.053,-4.451 -4.564,-7.03 -0.056,-0.34 -0.311,-0.624 -0.652,-0.681 -0.368,-0.085 -0.708,0.057 -0.907,0.369 -1.53,2.268 -3.259,6.491 -0.368,11.48 2.608,4.536 7.427,6.832 11.253,5.67 z"
|
||||
style="fill:#3e2723;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,595.27559)" />
|
||||
<path
|
||||
id="path11"
|
||||
d="m 413.121,269.376 c -0.368,0.141 -0.623,0.482 -0.623,0.85 0,0.17 0,0.284 0,0.284 0,0 0,4.535 5.357,8.702 2.154,1.672 4.054,4.394 4.564,6.945 0.057,0.368 0.34,0.623 0.709,0.708 0.34,0.057 0.708,-0.085 0.907,-0.396 1.53,-2.268 3.174,-6.463 0.34,-11.424 -2.608,-4.507 -7.399,-6.803 -11.254,-5.669 z"
|
||||
style="fill:#3e2723;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,595.27559)" />
|
||||
<path
|
||||
id="path12"
|
||||
d="m 413.121,269.376 c -0.368,0.141 -0.623,0.482 -0.623,0.85 0,0.17 0,0.284 0,0.284 0,0 0,4.535 5.357,8.702 2.154,1.672 4.054,4.394 4.564,6.945 0.057,0.368 0.34,0.623 0.709,0.708 0.34,0.057 0.708,-0.085 0.907,-0.396 1.53,-2.268 3.174,-6.463 0.34,-11.424 -2.608,-4.507 -7.399,-6.803 -11.254,-5.669 z"
|
||||
style="fill:none;stroke:#3e2723;stroke-width:0.4428;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,595.27559)" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
+4551
-503
File diff suppressed because it is too large
Load Diff
Generated
-1027
File diff suppressed because it is too large
Load Diff
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"name": "ngo",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@git.odoo4projects.com:Oliver/NGO.git"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"devDependencies": {
|
||||
"tailwindcss": "^3.4.17"
|
||||
}
|
||||
}
|
||||
+47
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"area": "CRM", "Vertical": "NGO", "date": "2026-05-04", "title": "Impact Reporting in Minutes", "teaser": "Small NGOs waste countless hours turning donor data into reports—instead of serving those they’re meant to help.", "content": "<article>\n<h2>Impact Reporting in Minutes</h2>\n<p style=\"margin: 0; color: #374151;\">— \"Maria stared at her screen at 11 p.m., three days before the grant deadline. Her donor database had 872 entries. Excel had 14 tabs. She hadnt slept in 36 hours. Every email from a donor—How was the clean water project?—demanded a new report. She couldnt tell them. Not without weeks of work. <strong>Spreadsheets</strong> were drowning her. <strong>Manual reporting</strong> was stealing her purpose. And worst of all—she knew donors were slipping away, not because her work wasn’t impactful, but because she couldn’t prove it.\" —</p>\n\n<p style=\"margin: 0; color: #374151;\">Modern digital tools can transform how NGOs capture and communicate impact. Automated systems can pull data from donations, program logs, and field reports into unified dashboards. Reports once built by hand can now be generated with a single click, reducing errors, saving weeks of labor, and preserving the emotional integrity of the stories behind the numbers.</p>\n\n<h3>Stop drowning in spreadsheets. Start telling stories.</h3>\n<p style=\"margin: 0; color: #374151;\">When your team spends 20 hours a week just compiling donor data, you’re not serving beneficiaries—you’re serving Excel. Automated reporting tools reset that balance. They sync with your existing donation platforms, track program outcomes across locations, and turn fragmented inputs into cohesive, real-time narratives that donors actually read.</p>\n\n<h3>Trust isn’t built with PDFs. It’s built with clarity.</h3>\n<p style=\"margin: 0; color: #374151;\">Donors don’t want line items. They want to know lives changed. A clean, automated dashboard shows a child’s progress in school, not just the $50 spent on textbooks. When you can show, not tell, donors see their values reflected in real results. That’s how <strong>retention grows</strong>—not through emails begging for more, but through transparency that feels genuine.</p>\n\n<h3>Proof that matters. Without the panic.</h3>\n<p style=\"margin: 0; color: #374151;\">Grant applications and board reviews require compliance—not creativity. When audit season rolls around, having pre-built, audit-ready templates means your finance lead isn’t working through the night. No more frantic last-minute data fixes. Just a few clicks, and your compliance is done. That peace of mind? It’s priceless.</p>\n\n<div class=\"video-container\" style=\"display: flex; margin: 2rem 0; gap: 2rem;\">\n <div class=\"video-text\" style=\"flex: 1;\">\n <p style=\"margin: 0; color: #374151;\">This is how you generate an impact report for your donors—no more spreadsheets, no more stress. Just one click, and your story goes live.</p>\n </div>\n <div class=\"video-player\" style=\"flex: 1; min-width: 300px; height: 300px;\">\n <iframe width=\"100%\" height=\"100%\"\n src=\"https://www.youtube.com/embed/huVrXvkCAqg\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n style=\"width: 100%; height: 100%; border-radius: 8px;\">\n </iframe>\n </div>\n</div>\n\n<p style=\"margin: 0; color: #374151;\"><em>Remember: Every hour you spend wrestling with data is an hour taken from the field, the classroom, the clinic.</em></p>\n\n<a class=\"cta\" href=\"https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3DDbaiHFlhNhWySszAQoPXE_H73QLqYT3w7H9IYWC76RA_TgNIhLESjb4N7ep_D2D_OyW9q4-c\">When you want to explore how this could work for your organization, you can book a meeting here:</a>\n</article>", "image": "ngo_office3"}
|
||||
@@ -1,17 +0,0 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
body {
|
||||
font-family: 'Inter', 'Segoe UI', system-ui, sans-serif;
|
||||
}
|
||||
|
||||
#lang-selector {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#lang-selector:focus,
|
||||
#lang-selector:focus-visible {
|
||||
color: #201824;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
+1630
File diff suppressed because it is too large
Load Diff
@@ -1,27 +0,0 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: ['./index.html'],
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
'brand-ink': '#201824',
|
||||
'brand-primary': '#603F57',
|
||||
'brand-accent': '#F762B4',
|
||||
'brand-sunrise': '#F8B84A',
|
||||
'brand-emerald': '#39B982',
|
||||
'brand-snow': '#F5F2F7',
|
||||
'brand-smoke': '#E5DCE8'
|
||||
},
|
||||
fontFamily: {
|
||||
brand: ['Inter', 'Segoe UI', 'system-ui', 'sans-serif']
|
||||
},
|
||||
boxShadow: {
|
||||
brand: '0 20px 60px rgba(32, 24, 36, 0.15)'
|
||||
},
|
||||
backgroundImage: {
|
||||
'hero-gradient': 'radial-gradient(circle at top left, rgba(247,98,180,0.35), rgba(32,24,36,0.95))'
|
||||
}
|
||||
}
|
||||
},
|
||||
plugins: []
|
||||
};
|
||||
Reference in New Issue
Block a user