Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Build, test and publish the page to GitHub Pages at
# https://abap2ui5.github.io/test-docs/.
#
# On a pull request it builds and tests only. On main it also deploys; the
# weekly run picks up the counted figures from the framework README
# (src/lib/facts.mjs), which change without a commit here.
# On a pull request it builds and tests only. On main it also deploys.
#
# Needs Settings → Pages → Source: "GitHub Actions" once.
name: pages
Expand All @@ -12,8 +10,6 @@ on:
push:
branches: [main]
pull_request:
schedule:
- cron: "17 6 * * 1"
workflow_dispatch:

permissions:
Expand Down
13 changes: 7 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# AGENTS.md

Evaluate abap2UI5: one static page for the people who approve abap2UI5,
published at https://abap2ui5.github.io/test-docs/ by GitHub Pages. A
abap2UI5 for decision makers: one static page that presents abap2UI5 to IT
management and product owners - what it can build, why it beats every other
UI5 solution on SAP (commercial ones included), what it costs - published at https://abap2ui5.github.io/test-docs/ by GitHub Pages. A
standalone site — its own repository, build and deployment — and nothing in
it depends on abap2UI5/docs or abap2UI5/playground at build time.

Expand All @@ -11,13 +12,12 @@ it depends on abap2UI5/docs or abap2UI5/playground at build time.
| --- | --- |
| `src/pages/index.astro` | The page: the text of every section, as data at the top and markup below |
| `src/layouts/Page.astro` | The document: head, the Content-Security-Policy, the header with the section links, the foot |
| `src/components/` | `Stats` (the figures under the hero), `CostCalculator` (the sheet, after the manual's), `Icon` (inline marks) |
| `src/components/` | `Stats` (the headline tiles under the hero), `CostCalculator` (the sheet, after the manual's), `Icon` (inline marks) |
| `public/calc.js` | The cost calculator in the browser - the page's one script; the calculator reads correctly without it |
| `src/lib/facts.mjs` | Reads the counted figures from the framework README's `facts:start` block at build time (`EVALUATE_README` names a local file, else raw GitHub); a failed read costs the counts, never the build |
| `src/styles/global.css` | The one stylesheet; light and dark follow the system |
| `public/` | Font (Inter, self-hosted), logo, icons, the screenshot |
| `test/site.test.mjs` | `node:test` over the built `dist/index.html` |
| `.github/workflows/pages.yml` | Build + test on every PR; deploy on main and weekly (the figures move without a commit here) |
| `.github/workflows/pages.yml` | Build + test on every PR; deploy on main |

## Commands

Expand All @@ -41,7 +41,8 @@ npm run check # build + test, what CI runs
page. No inline `style=""` either (`style-src 'self'`) — a class in `global.css`.
- **Nothing from another origin.** No CDN, no web font service, no analytics;
the font and the images are in `public/`.
- **No number typed by hand.** The counts come from the framework README.
- **Written for managers.** No technical counts (tests, specs, gates) and no
"evaluate" or "problem" in the visible text - `test/site.test.mjs` checks the latter.
- **Toolchain:** Node 22 (`.nvmrc`, `engines`), every dependency pinned
exactly (astro 7.3.8), actions pinned to commits.
- The site is written for people. Links into the manual are absolute
Expand Down
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Evaluate abap2UI5
# abap2UI5 for decision makers

The page for the people who approve abap2UI5 rather than build with it — IT
management, architecture boards, product owners, SAP Basis and internal audit:
the problem it answers, when to use it and when RAP, what your organization
keeps, where it runs, what it costs, the objections a review board raises, and
how to evaluate it on one real screen in a week.
The page that presents abap2UI5 to IT management, product owners and
architecture boards: what you can build with it, why it beats every other way
to build UI5 apps on SAP — commercial platforms included — what your
organization keeps, where it runs, what it costs, and how to start with one
real screen.

**→ https://abap2ui5.github.io/test-docs/**

Expand All @@ -22,8 +22,7 @@ npm run dev # http://localhost:4321/test-docs/
npm run check # build + tests, what CI runs
```

Edit the text in `src/pages/index.astro`. The counted figures under the hero
are read at build time from the framework README and are never typed here.
Edit the text in `src/pages/index.astro`.

## License

Expand Down
2 changes: 1 addition & 1 deletion astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Evaluate abap2UI5 - one static page, published by GitHub Pages at
// abap2UI5 for decision makers - one static page, published by GitHub Pages at
// https://abap2ui5.github.io/test-docs/ (.github/workflows/pages.yml).
//
// Static output only: no client component, no island. The page's one script
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "abap2ui5-evaluate",
"name": "abap2ui5-decision-makers",
"version": "1.0.0",
"private": true,
"description": "Evaluate abap2UI5 - the page for the people who approve it",
"description": "abap2UI5 for decision makers",
"license": "MIT",
"type": "module",
"engines": {
Expand Down
Binary file added public/apps/z2ui5_cl_smp_app_070.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smp_app_530.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smp_app_540.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smpc_app_024.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smpc_app_089.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smpc_app_108.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smpc_app_291.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smpc_app_329.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apps/z2ui5_cl_smpc_app_517.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/components/CostCalculator.astro
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const lines = [
const give = [
["Star the repository.", `One click on <a href="https://github.com/abap2UI5/abap2UI5">GitHub</a>, and the next visitor sees a project rather than an experiment.`],
["Answer somebody.", `One reply under an <a href="https://github.com/abap2UI5/abap2UI5/issues">issue</a> or in <a href="https://abapgit.slack.com/join/shared_invite/zt-46tqufaht-QlrxTzlDqlx85CWbeUnOqg#/shared-invite/email">Slack</a> saves somebody else an afternoon of searching.`],
["Report what broke.", `An <a href="https://github.com/abap2UI5/abap2UI5/issues">issue</a> with a class that reproduces the problem is half of the fix already.`],
["Report what broke.", `An <a href="https://github.com/abap2UI5/abap2UI5/issues">issue</a> with a class that reproduces the bug is half of the fix already.`],
["Post about it.", `A short post that mentions <a href="https://www.linkedin.com/company/abap2ui5">the page</a> and carries <b>#abap2UI5</b> is how the word gets around.`],
["Add your company.", `One row in <a href="${DOCS}resources/who_uses">Who Uses abap2UI5?</a> is what answers <i>is anybody actually running this?</i>`],
["Sponsor the work.", `<a href="${DOCS}resources/sponsor">The contributors</a>, and the open-source projects it stands on - the smallest amount is a real one.`],
Expand Down
7 changes: 7 additions & 0 deletions src/components/Icon.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ const PATHS = {
key: '<circle cx="8" cy="15" r="4"/><path d="m11 12 8.5-8.5M16 7l2.5 2.5"/>',
db: '<ellipse cx="12" cy="6" rx="7" ry="2.8"/><path d="M5 6v12c0 1.5 3.1 2.8 7 2.8s7-1.3 7-2.8V6M5 12c0 1.5 3.1 2.8 7 2.8s7-1.3 7-2.8"/>',
log: '<path d="M6 3.5h9l3.5 3.5v13.5H6zM9 11h6M9 15h6"/>',
box: '<path d="M3.5 7.5 12 3.5l8.5 4v9L12 20.5l-8.5-4zM3.5 7.5 12 11.5l8.5-4M12 11.5v9"/>',
wrench: '<path d="M14.5 4a4.5 4.5 0 0 0-4.2 6.1L4 16.4 7.6 20l6.3-6.3A4.5 4.5 0 0 0 20 9.5l-2.8 2.8-3.5-.8-.8-3.5L15.7 5.2A4.5 4.5 0 0 0 14.5 4z"/>',
factory: '<path d="M3.5 20V10l5 3V10l5 3V5h4v15zM3.5 20h17"/>',
check: '<rect x="4" y="4" width="16" height="16" rx="3"/><path d="m8.5 12.2 2.4 2.4 4.6-5"/>',
form: '<rect x="5" y="3.5" width="14" height="17" rx="2"/><path d="M8.5 8h7M8.5 12h7M8.5 16h4"/>',
phone: '<rect x="7" y="2.5" width="10" height="19" rx="2"/><path d="M11 18h2"/>',
spark: '<path d="M12 3.5 13.8 10.2 20.5 12l-6.7 1.8L12 20.5l-1.8-6.7L3.5 12l6.7-1.8zM18.5 3.5v3M17 5h3"/>',
leaf: '<path d="M5 19c0-8 5-13 14-14-1 9-6 14-14 14zM5 19l7-7"/>',
};
const { name } = Astro.props;
Expand Down
24 changes: 12 additions & 12 deletions src/components/Stats.astro
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
---
/* The size of the thing, under the hero. The counts are read at build time
* from the framework README (src/lib/facts.mjs), never typed; the last two
* tiles are the release spans and the license, which are the project's
* claims rather than counts. Without the README the counts are left out and
* the two claims stay. */
import { readFacts } from "../lib/facts.mjs";
const facts = await readFacts();
/* The headline under the hero: what a decision maker takes away in five
* seconds. Claims, not counts - the technical figures (tests, specs, gates)
* belong to the framework's README, not to this page. */
const tiles = [
["0 €", "license fees - now and later, for any number of users"],
["1 class", "per app - no frontend project, no extra platform"],
["Minutes", "to a first screen, built by the ABAP team you have"],
["7.02 → Cloud", "every SAP release, from one source"],
["100 % yours", "open source, no vendor, no lock-in"],
];
---
<div class="stats wrap" aria-label="abap2UI5 in figures">
<div class="stats wrap" aria-label="abap2UI5 at a glance">
<ul>
{facts.map((f) => <li><b>{f.value}</b><span>{f.label}</span></li>)}
<li><b>7.02 → Cloud</b><span>one source for every ABAP release</span></li>
<li><b>MIT</b><span>no license fee, no per-user cost</span></li>
{tiles.map(([value, label]) => <li><b>{value}</b><span>{label}</span></li>)}
</ul>
{facts.length > 0 && <p>Counted from the framework repository at build time.</p>}
</div>
13 changes: 7 additions & 6 deletions src/layouts/Page.astro
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,15 @@ const CSP = [
"form-action 'none'",
].join("; ");
const sections = [
["the-problem-it-answers", "Problem"],
["when-to-use-it-and-when-not", "Fit"],
["the-problem-it-answers", "Use cases"],
["when-to-use-it-and-when-not", "Comparison"],
["ai", "AI"],
["what-you-keep", "Governance"],
["no-strings-attached", "No strings"],
["where-it-runs", "Platform"],
["what-it-costs", "Cost"],
["the-objections", "Objections"],
["how-to-evaluate-it-in-a-week", "One week"],
["the-objections", "FAQ"],
["how-to-evaluate-it-in-a-week", "Get started"],
];
---
<!doctype html>
Expand All @@ -47,7 +48,7 @@ const sections = [
<meta property="og:description" content={description}>
<meta property="og:url" content={canonical}>
<meta property="og:image" content={new URL(`${base}walkthrough-preview.webp`, Astro.site).href}>
<meta name="theme-color" content="#0b1220">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href={`${base}favicon.png`}>
<link rel="apple-touch-icon" href={`${base}apple-touch-icon.png`}>
<link rel="preload" href={`${base}fonts/inter-roman-latin.woff2`} as="font" type="font/woff2" crossorigin>
Expand All @@ -56,7 +57,7 @@ const sections = [
<a class="skip" href="#main">Skip to content</a>
<header class="top">
<div class="wrap">
<a class="mark" href={base}><img src={`${base}logo.png`} alt="" width="28" height="28"> abap2UI5 <span>Evaluate</span></a>
<a class="mark" href={base}><img src={`${base}logo.png`} alt="" width="28" height="28"> abap2UI5 <span>for decision makers</span></a>
<nav class="nav" aria-label="Sections">
{sections.map(([id, text]) => <a href={`#${id}`}>{text}</a>)}
</nav>
Expand Down
51 changes: 0 additions & 51 deletions src/lib/facts.mjs

This file was deleted.

Loading
Loading