openvibers/openvibe.work Commits
Work: the tagline says what it does today (find work on open job boards) (#23)
Changes
@@@ -1,6 +1,6 @@# OpenVibe.Work--> Find work, with an agent on your side.++> Find work on open job boards.**Status:** the listings and the search are live (listings gathered from three public job boards, search, savedsearches, an API and the pages around them). The agent pillar — help preparing and tracking an application — is not@@@ -18,7 +18,7 @@ const store = require('../jobs/store');const sources = require('../jobs/sources');const SITE_NAME = 'OpenVibe.Work';--const DESCRIPTION = 'OpenVibe.Work — Find work, with an agent on your side. Job listings from open boards with their source, searchable and free to read.';++const DESCRIPTION = 'OpenVibe.Work — Find work on open job boards. Every listing names its source; searchable and free to read, no account needed.';const DISALLOW = ['/auth/', '/api/', '/saved'];const SITEMAP_JOBS = 1000;@@@ -75,7 +75,7 @@ function createDiscoveryRoutes(ctx) {details: 'Every page is server-rendered and readable without JavaScript. Listings come from public job boards under their terms: the source is named and the original listing is linked; only a short excerpt is kept here.',sections: [{ title: 'Start here', links: [-- { title: 'OpenVibe.Work', url: abs('/'), note: 'Find work, with an agent on your side.' },++ { title: 'OpenVibe.Work', url: abs('/'), note: 'Find work on open job boards.' },{ title: 'Search the listings', url: abs('/jobs'), note: 'Filter by words, workplace, job type and location.' },{ title: 'Where the listings come from', url: abs('/sources'), note: `${sources.SOURCES.map((x) => x.name).join(', ')}, with the terms each is used under.` },{ title: 'What shipped on OpenVibe.Work', url: abs('/updates') },@@@ -23,7 +23,7 @@ const store = require('../jobs/store');const sources = require('../jobs/sources');const SITE_NAME = 'OpenVibe.Work';--const TAGLINE = 'Find work, with an agent on your side.';++const TAGLINE = 'Find work on open job boards.';function createPageRoutes(ctx) {const { config, s } = ctx;@@@ -20,7 +20,7 @@ const { html, raw, esc } = require('./html');const NETWORK_URL = 'https://openvibe.network';const SITE_NAME = 'OpenVibe.Work';--const TAGLINE = 'Find work, with an agent on your side.';++const TAGLINE = 'Find work on open job boards.';const PUBLIC_DIR = path.join(__dirname, '..', '..', 'public');// The product's own navigation: one entry per public page it serves.const NAV = [@@@ -38,7 +38,7 @@ const BOOST = /<script src="\/shared\/boost\.js\?v=[0-9a-f]{12}" data-main="#maiassert.strictEqual(r.status, 200);const head = r.text.slice(0, r.text.indexOf('</head>'));assert.strictEqual((r.text.match(/<title>/g) || []).length, 1, 'exactly one <title>');-- assert.ok(head.includes('<title>OpenVibe.Work: Find work, with an agent on your side.</title>'), 'home title');++ assert.ok(head.includes('<title>OpenVibe.Work: Find work on open job boards.</title>'), 'home title');assert.ok(head.includes('<link rel="canonical" href="https://openvibe.work/">'), 'canonical');assert.ok(head.includes('<meta name="robots" content="index, follow">'), 'robots');const ld = [...head.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)].map((m) => JSON.parse(m[1])['@type']);@@@ -61,7 +61,7 @@ const BOOST = /<script src="\/shared\/boost\.js\?v=[0-9a-f]{12}" data-main="#maiassert.strictEqual(r.status, 200, r.text.slice(0, 300));assert.match(r.headers.get('content-type'), /^text\/html/);assert.ok(r.text.includes('OpenVibe.Work'), 'the service name is on the page');-- assert.ok(r.text.includes('Find work, with an agent on your side.'), 'the tagline is on the page');++ assert.ok(r.text.includes('Find work on open job boards.'), 'the tagline is on the page');assert.ok(r.text.includes('/shared/showcase.css'), 'the showcase stylesheet');assert.ok(!r.text.includes('/home/') && !r.text.includes('/mnt/'), 'no local filesystem path on the page');});
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
# OpenVibe.Work
# OpenVibe.Work
-> Find work, with an agent on your side.
+> Find work on open job boards.
**Status:** the listings and the search are live (listings gathered from three public job boards, search, saved
**Status:** the listings and the search are live (listings gathered from three public job boards, search, saved
searches, an API and the pages around them). The agent pillar — help preparing and tracking an application — is not
searches, an API and the pages around them). The agent pillar — help preparing and tracking an application — is not
@@ -18,7 +18,7 @@ const store = require('../jobs/store');
@@ -18,7 +18,7 @@ const store = require('../jobs/store');
const sources = require('../jobs/sources');
const sources = require('../jobs/sources');
const SITE_NAME = 'OpenVibe.Work';
const SITE_NAME = 'OpenVibe.Work';
-const DESCRIPTION = 'OpenVibe.Work — Find work, with an agent on your side. Job listings from open boards with their source, searchable and free to read.';
+const DESCRIPTION = 'OpenVibe.Work — Find work on open job boards. Every listing names its source; searchable and free to read, no account needed.';
const DISALLOW = ['/auth/', '/api/', '/saved'];
const DISALLOW = ['/auth/', '/api/', '/saved'];
const SITEMAP_JOBS = 1000;
const SITEMAP_JOBS = 1000;
@@ -75,7 +75,7 @@ function createDiscoveryRoutes(ctx) {
@@ -75,7 +75,7 @@ function createDiscoveryRoutes(ctx) {
details: 'Every page is server-rendered and readable without JavaScript. Listings come from public job boards under their terms: the source is named and the original listing is linked; only a short excerpt is kept here.',
details: 'Every page is server-rendered and readable without JavaScript. Listings come from public job boards under their terms: the source is named and the original listing is linked; only a short excerpt is kept here.',
sections: [
sections: [
{ title: 'Start here', links: [
{ title: 'Start here', links: [
- { title: 'OpenVibe.Work', url: abs('/'), note: 'Find work, with an agent on your side.' },
+ { title: 'OpenVibe.Work', url: abs('/'), note: 'Find work on open job boards.' },
{ title: 'Search the listings', url: abs('/jobs'), note: 'Filter by words, workplace, job type and location.' },
{ title: 'Search the listings', url: abs('/jobs'), note: 'Filter by words, workplace, job type and location.' },
{ title: 'Where the listings come from', url: abs('/sources'), note: `${sources.SOURCES.map((x) => x.name).join(', ')}, with the terms each is used under.` },
{ title: 'Where the listings come from', url: abs('/sources'), note: `${sources.SOURCES.map((x) => x.name).join(', ')}, with the terms each is used under.` },
{ title: 'What shipped on OpenVibe.Work', url: abs('/updates') },
{ title: 'What shipped on OpenVibe.Work', url: abs('/updates') },
@@ -23,7 +23,7 @@ const store = require('../jobs/store');
@@ -23,7 +23,7 @@ const store = require('../jobs/store');
const sources = require('../jobs/sources');
const sources = require('../jobs/sources');
const SITE_NAME = 'OpenVibe.Work';
const SITE_NAME = 'OpenVibe.Work';
-const TAGLINE = 'Find work, with an agent on your side.';
+const TAGLINE = 'Find work on open job boards.';
function createPageRoutes(ctx) {
function createPageRoutes(ctx) {
const { config, s } = ctx;
const { config, s } = ctx;
@@ -20,7 +20,7 @@ const { html, raw, esc } = require('./html');
@@ -20,7 +20,7 @@ const { html, raw, esc } = require('./html');
const NETWORK_URL = 'https://openvibe.network';
const NETWORK_URL = 'https://openvibe.network';
const SITE_NAME = 'OpenVibe.Work';
const SITE_NAME = 'OpenVibe.Work';
-const TAGLINE = 'Find work, with an agent on your side.';
+const TAGLINE = 'Find work on open job boards.';
const PUBLIC_DIR = path.join(__dirname, '..', '..', 'public');
const PUBLIC_DIR = path.join(__dirname, '..', '..', 'public');
// The product's own navigation: one entry per public page it serves.
// The product's own navigation: one entry per public page it serves.
const NAV = [
const NAV = [
@@ -38,7 +38,7 @@ const BOOST = /<script src="\/shared\/boost\.js\?v=[0-9a-f]{12}" data-main="#mai
@@ -38,7 +38,7 @@ const BOOST = /<script src="\/shared\/boost\.js\?v=[0-9a-f]{12}" data-main="#mai
assert.strictEqual(r.status, 200);
assert.strictEqual(r.status, 200);
const head = r.text.slice(0, r.text.indexOf('</head>'));
const head = r.text.slice(0, r.text.indexOf('</head>'));
assert.strictEqual((r.text.match(/<title>/g) || []).length, 1, 'exactly one <title>');
assert.strictEqual((r.text.match(/<title>/g) || []).length, 1, 'exactly one <title>');
- assert.ok(head.includes('<title>OpenVibe.Work: Find work, with an agent on your side.</title>'), 'home title');
+ assert.ok(head.includes('<title>OpenVibe.Work: Find work on open job boards.</title>'), 'home title');
assert.ok(head.includes('<link rel="canonical" href="https://openvibe.work/">'), 'canonical');
assert.ok(head.includes('<link rel="canonical" href="https://openvibe.work/">'), 'canonical');
assert.ok(head.includes('<meta name="robots" content="index, follow">'), 'robots');
assert.ok(head.includes('<meta name="robots" content="index, follow">'), 'robots');
const ld = [...head.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)].map((m) => JSON.parse(m[1])['@type']);
const ld = [...head.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)].map((m) => JSON.parse(m[1])['@type']);
@@ -61,7 +61,7 @@ const BOOST = /<script src="\/shared\/boost\.js\?v=[0-9a-f]{12}" data-main="#mai
@@ -61,7 +61,7 @@ const BOOST = /<script src="\/shared\/boost\.js\?v=[0-9a-f]{12}" data-main="#mai
assert.strictEqual(r.status, 200, r.text.slice(0, 300));
assert.strictEqual(r.status, 200, r.text.slice(0, 300));
assert.match(r.headers.get('content-type'), /^text\/html/);
assert.match(r.headers.get('content-type'), /^text\/html/);
assert.ok(r.text.includes('OpenVibe.Work'), 'the service name is on the page');
assert.ok(r.text.includes('OpenVibe.Work'), 'the service name is on the page');
- assert.ok(r.text.includes('Find work, with an agent on your side.'), 'the tagline is on the page');
+ assert.ok(r.text.includes('Find work on open job boards.'), 'the tagline is on the page');
assert.ok(r.text.includes('/shared/showcase.css'), 'the showcase stylesheet');
assert.ok(r.text.includes('/shared/showcase.css'), 'the showcase stylesheet');
assert.ok(!r.text.includes('/home/') && !r.text.includes('/mnt/'), 'no local filesystem path on the page');
assert.ok(!r.text.includes('/home/') && !r.text.includes('/mnt/'), 'no local filesystem path on the page');
});
});