Rebrand platform to DirectWire, add high-resolution and SVG favicons, update metadata and accessibility tags

This commit is contained in:
JobsBoard Deployer 2026-09-05 13:21:29 -04:00
parent de5fe3315a
commit b11256c8ae
13 changed files with 32 additions and 16 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

BIN
web/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

6
web/public/favicon.svg Normal file
View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<rect width="64" height="64" rx="14" fill="#1c1917"/>
<circle cx="16" cy="32" r="5" fill="#d97706"/>
<circle cx="48" cy="32" r="5" fill="#f59e0b"/>
<path d="M 16 32 L 28 32 L 34 20 L 38 44 L 44 32 L 48 32" fill="none" stroke="#ffffff" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 401 B

BIN
web/src/app/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -5,8 +5,14 @@ import { Footer } from "@/components/Footer";
import { BetaFeedbackModal } from "@/components/BetaFeedbackModal";
export const metadata = {
title: "JobsBoard — Private Job Aggregator & ATS Resume Platform",
description: "Self-hosted job aggregator for Connecticut & remote jobs with integrated ATS resume builder and local matching.",
title: "DirectWire — Verified Direct-From-Source Job Index & ATS Platform",
description: "Authentic nationwide job aggregator indexing directly from primary company career portals and ATS systems. Zero ghost postings, zero recruiter syndication.",
icons: {
icon: [
{ url: "/favicon.ico" },
{ url: "/favicon.svg", type: "image/svg+xml" },
],
},
};
export default function RootLayout({ children }: { children: React.ReactNode }) {

View file

@ -69,7 +69,7 @@ export default async function HomePage() {
</h1>
<p className="text-base sm:text-lg text-stone-700 max-w-2xl leading-relaxed">
JobsBoard indexes authentic job listings directly from primary career feeds and company applicant tracking systems. No recruiter spam. No ghost listings.
DirectWire indexes authentic job listings directly from primary career feeds and company applicant tracking systems. No recruiter spam. No ghost listings.
</p>
{/* Practical Search Input */}
@ -258,12 +258,12 @@ export default async function HomePage() {
</div>
</section>
{/* Why JobsBoard: Authentic Copywriting */}
{/* Why DirectWire: Authentic Copywriting */}
<section className="py-16 px-4 sm:px-6">
<div className="max-w-5xl mx-auto space-y-8">
<div className="border-b border-stone-300 pb-3">
<h2 className="font-serif-editorial text-2xl font-bold text-stone-950">
Why We Built JobsBoard
Why We Built DirectWire
</h2>
</div>

View file

@ -51,7 +51,7 @@ export default function PrivacyPolicyPage() {
<div>
<h2 className="text-xl font-semibold text-slate-900 mb-2">5. Contact Us</h2>
<p className="leading-relaxed">
If you have questions regarding this Privacy Policy or data privacy rights, please contact privacy@jobsboard.com.
If you have questions regarding this Privacy Policy or data privacy rights, please contact privacy@directwire.io.
</p>
</div>
</section>

View file

@ -14,7 +14,7 @@ export default function TermsOfServicePage() {
<div>
<h2 className="text-xl font-semibold text-slate-900 mb-2">1. Acceptance of Terms</h2>
<p className="leading-relaxed">
By creating an account or accessing the JobsBoard platform, you agree to comply with and be bound by these Terms of Service. If you do not agree, you must discontinue platform usage immediately.
By creating an account or accessing the DirectWire platform, you agree to comply with and be bound by these Terms of Service. If you do not agree, you must discontinue platform usage immediately.
</p>
</div>
@ -32,7 +32,7 @@ export default function TermsOfServicePage() {
<div>
<h2 className="text-xl font-semibold text-slate-900 mb-2">3. Content Ownership & Responsibilities</h2>
<p className="leading-relaxed">
Employers retain ownership of their posted job listings and brand trademarks. Job seekers retain ownership of uploaded resumes and application details. By submitting content, users grant JobsBoard a license to display and transmit that content solely for platform operations.
Employers retain ownership of their posted job listings and brand trademarks. Job seekers retain ownership of uploaded resumes and application details. By submitting content, users grant DirectWire a license to display and transmit that content solely for platform operations.
</p>
</div>
@ -46,7 +46,7 @@ export default function TermsOfServicePage() {
<div>
<h2 className="text-xl font-semibold text-slate-900 mb-2">5. Disclaimer of Liability</h2>
<p className="leading-relaxed">
JobsBoard is provided &quot;as is&quot; during the beta phase without warranties of any kind. JobsBoard is not responsible for employment decisions made by participating employers or candidates.
DirectWire is provided &quot;as is&quot; during the beta phase without warranties of any kind. DirectWire is not responsible for employment decisions made by participating employers or candidates.
</p>
</div>
</section>

View file

@ -88,7 +88,7 @@ export function BetaFeedbackModal() {
<span className="inline-block w-2 h-2 bg-amber-600 rounded-full"></span>
<span className="text-[10px] font-mono uppercase tracking-widest text-stone-600">Feedback Workbench</span>
</div>
<h3 className="font-serif-editorial text-lg font-semibold text-stone-950">JobsBoard Private Beta Report</h3>
<h3 className="font-serif-editorial text-lg font-semibold text-stone-950">DirectWire Private Beta Report</h3>
</div>
<button
onClick={() => setIsOpen(false)}

View file

@ -7,14 +7,14 @@ export function Footer() {
<div className="space-y-1">
<div className="flex items-center space-x-2">
<span className="font-serif-editorial text-sm font-semibold tracking-tight text-stone-950">
JobsBoard
DirectWire
</span>
<span className="text-[10px] font-mono uppercase bg-amber-100 text-amber-900 px-1.5 py-0.5 border border-amber-300">
Private Beta
</span>
</div>
<p className="text-[11px] text-stone-500">
Editorial recruitment index &middot; Verified primary sources &middot; No recruiter syndication
Direct-from-source career index &middot; Verified primary ATS feeds &middot; No ghost jobs &middot; No recruiter syndication
</p>
</div>

View file

@ -58,10 +58,14 @@ export function Navbar() {
<div className="flex items-center space-x-8">
<Link
href="/"
className="flex items-baseline space-x-2 text-stone-900 group"
className="flex items-center space-x-2 text-stone-900 group"
aria-label="DirectWire Home"
>
<span className="w-5 h-5 rounded bg-stone-900 flex items-center justify-center text-amber-500 font-mono text-xs font-bold shadow-sm">
//
</span>
<span className="font-serif-editorial text-xl font-bold tracking-tight text-stone-900">
JobsBoard
DirectWire
</span>
<span className="text-[10px] font-mono tracking-widest text-stone-400 uppercase">
/ beta

View file

@ -12,7 +12,7 @@ export async function sendEmail({
html: string;
}) {
const apiKey = process.env.RESEND_API_KEY;
const from = process.env.EMAIL_FROM || "JobsBoard <notifications@resend.dev>";
const from = process.env.EMAIL_FROM || "DirectWire <notifications@resend.dev>";
if (!apiKey) {
console.log("=========================================");

View file

@ -29,7 +29,7 @@ backgroundQueue.registerHandler("DISPATCH_NOTIFICATION_EMAIL", async (payload: {
}) => {
await sendEmail({
to: payload.email,
subject: `🔔 JobsBoard: ${payload.title}`,
subject: `DirectWire: ${payload.title}`,
html: `
<div style="font-family: system-ui, -apple-system, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #e2e8f0; border-radius: 8px;">
<div style="background-color: #111827; color: white; padding: 16px; text-align: center; border-radius: 6px 6px 0 0;">