feat(web): Complete website overhaul for beta release
Major updates to make the website beta-ready: ## Content & Design - Completely rewritten homepage with modern, catchy design - Prominent one-click installation command in hero section - Clear value proposition: 'Voice Dictation for Linux, Finally Done Right' - Trust indicators (100% Offline, Privacy First, Open Source, X11/Wayland) - Interactive demo section encouraging users to try double-tap Ctrl - Feature cards highlighting key benefits - Detailed installation section with both full and quick install options - Voice commands reference section - Speech engines comparison (Whisper AI vs VOSK) - Comprehensive FAQ section - Modern CTA section and footer ## SEO Improvements - Added comprehensive meta tags with proper descriptions - Open Graph and Twitter Card meta tags with proper images - JSON-LD structured data for SoftwareApplication schema - Added robots.txt for search engine crawling - Added sitemap.xml for better indexing - Added site.webmanifest for PWA support - Proper canonical URL and meta keywords - Author attribution and GPL-3.0 license info ## Technical - Removed unused creatr-devtools dependency - Real GitHub stars fetching from API - Improved responsive design - Better accessibility with proper aria labels - Clean, maintainable component structure The website now properly reflects the v0.2.0-alpha release features and provides a clear path for users to install and use Vocalinux.
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 6.5 MiB |
@@ -0,0 +1,8 @@
|
||||
# Robots.txt for Vocalinux
|
||||
# https://vocalinux.com
|
||||
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# Sitemap location
|
||||
Sitemap: https://vocalinux.com/sitemap.xml
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "Vocalinux",
|
||||
"short_name": "Vocalinux",
|
||||
"description": "Voice dictation for Linux, finally done right. 100% offline and privacy-focused.",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#ffffff",
|
||||
"theme_color": "#7c3aed",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon-16x16.png",
|
||||
"sizes": "16x16",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/favicon-32x32.png",
|
||||
"sizes": "32x32",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/apple-touch-icon.png",
|
||||
"sizes": "180x180",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://vocalinux.com/</loc>
|
||||
<lastmod>2026-01-19</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
||||
<!-- Placeholder for microphone off icon -->
|
||||
<circle cx="64" cy="64" r="60" fill="#e74c3c" />
|
||||
<rect x="44" y="40" width="40" height="60" rx="20" fill="#7f8c8d" />
|
||||
<line x1="40" y1="88" x2="88" y2="40" stroke="#e74c3c" stroke-width="8" />
|
||||
<!-- This is a placeholder. Replace with actual custom design. -->
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 465 B |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
||||
<!-- Placeholder for microphone processing icon -->
|
||||
<circle cx="64" cy="64" r="60" fill="#f39c12" />
|
||||
<rect x="44" y="40" width="40" height="60" rx="20" fill="#2c3e50" />
|
||||
<circle cx="64" cy="40" r="8" fill="#f39c12">
|
||||
<animate attributeName="cy" values="40;50;40" dur="1s" repeatCount="indefinite" />
|
||||
</circle>
|
||||
<circle cx="48" cy="60" r="8" fill="#f39c12">
|
||||
<animate attributeName="cy" values="60;70;60" dur="1s" repeatCount="indefinite" />
|
||||
</circle>
|
||||
<circle cx="80" cy="60" r="8" fill="#f39c12">
|
||||
<animate attributeName="cy" values="60;70;60" dur="1s" repeatCount="indefinite" />
|
||||
</circle>
|
||||
<!-- This is a placeholder. Replace with actual custom design. -->
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 836 B |
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
||||
<!-- Placeholder for microphone on/active icon -->
|
||||
<circle cx="64" cy="64" r="60" fill="#2ecc71" />
|
||||
<rect x="44" y="40" width="40" height="60" rx="20" fill="#2c3e50" />
|
||||
<path d="M 40,78 Q 64,88 88,78" stroke="#2ecc71" stroke-width="4" fill="none" />
|
||||
<path d="M 40,88 Q 64,98 88,88" stroke="#2ecc71" stroke-width="4" fill="none" />
|
||||
<!-- This is a placeholder. Replace with actual custom design. -->
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 560 B |
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 308 KiB |
+109
-41
@@ -3,44 +3,55 @@ import React from "react";
|
||||
import { GeistSans } from "geist/font/sans";
|
||||
import { type Metadata } from "next";
|
||||
import { ThemeProvider } from "@/components/theme-provider";
|
||||
import { DevtoolsProvider } from 'creatr-devtools';
|
||||
|
||||
export const viewport = {
|
||||
width: "device-width",
|
||||
initialScale: 1,
|
||||
maximumScale: 1
|
||||
maximumScale: 5,
|
||||
themeColor: [
|
||||
{ media: "(prefers-color-scheme: light)", color: "#ffffff" },
|
||||
{ media: "(prefers-color-scheme: dark)", color: "#18181b" },
|
||||
],
|
||||
};
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL("https://vocalinux.com"),
|
||||
title: {
|
||||
default: "Vocalinux - Open-Source Voice Dictation for Linux",
|
||||
default: "Vocalinux - Voice Dictation for Linux, Finally Done Right",
|
||||
template: "%s | Vocalinux"
|
||||
},
|
||||
description: "Open-source offline voice dictation for Linux using Whisper models. Privacy-focused with no cloud dependencies.",
|
||||
description: "Free, open-source voice dictation for Linux. 100% offline with Whisper AI. Double-tap Ctrl to start. Works everywhere - X11 & Wayland. One-click install.",
|
||||
applicationName: "Vocalinux",
|
||||
keywords: ["voice dictation", "linux", "speech recognition", "whisper", "offline", "privacy", "x11", "wayland", "open-source"],
|
||||
authors: [{
|
||||
name: "Vocalinux Team"
|
||||
}],
|
||||
creator: "Vocalinux Team",
|
||||
publisher: "Vocalinux Team",
|
||||
keywords: [
|
||||
"voice dictation linux",
|
||||
"speech to text linux",
|
||||
"linux voice typing",
|
||||
"whisper linux",
|
||||
"vosk linux",
|
||||
"offline voice dictation",
|
||||
"privacy voice recognition",
|
||||
"speech recognition linux",
|
||||
"dictation software ubuntu",
|
||||
"voice typing fedora",
|
||||
"wayland voice dictation",
|
||||
"x11 speech to text",
|
||||
"open source dictation",
|
||||
"free speech recognition",
|
||||
"linux accessibility",
|
||||
"hands free typing linux",
|
||||
"voice commands linux",
|
||||
"GTK voice dictation"
|
||||
],
|
||||
authors: [{ name: "Jatin K Malik", url: "https://github.com/jatinkrmalik" }],
|
||||
creator: "Jatin K Malik",
|
||||
publisher: "Vocalinux",
|
||||
icons: {
|
||||
icon: [{
|
||||
url: "/favicon-16x16.png",
|
||||
sizes: "16x16",
|
||||
type: "image/png"
|
||||
}, {
|
||||
url: "/favicon-32x32.png",
|
||||
sizes: "32x32",
|
||||
type: "image/png"
|
||||
}, {
|
||||
url: "/favicon.ico",
|
||||
sizes: "48x48",
|
||||
type: "image/x-icon"
|
||||
}],
|
||||
apple: [{
|
||||
url: "/apple-touch-icon.png",
|
||||
sizes: "180x180",
|
||||
type: "image/png"
|
||||
}]
|
||||
icon: [
|
||||
{ url: "/favicon-16x16.png", sizes: "16x16", type: "image/png" },
|
||||
{ url: "/favicon-32x32.png", sizes: "32x32", type: "image/png" },
|
||||
{ url: "/favicon.ico", sizes: "48x48", type: "image/x-icon" }
|
||||
],
|
||||
apple: [{ url: "/apple-touch-icon.png", sizes: "180x180", type: "image/png" }]
|
||||
},
|
||||
manifest: "/site.webmanifest",
|
||||
appleWebApp: {
|
||||
@@ -54,34 +65,91 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
type: "website",
|
||||
locale: "en_US",
|
||||
url: "https://github.com/jatinkrmalik/vocalinux",
|
||||
url: "https://vocalinux.com",
|
||||
siteName: "Vocalinux",
|
||||
title: "Vocalinux - Open-Source Voice Dictation for Linux",
|
||||
description: "Open-source offline voice dictation for Linux using Whisper models. Works with X11 and Wayland.",
|
||||
title: "Vocalinux - Voice Dictation for Linux, Finally Done Right",
|
||||
description: "Free, open-source voice dictation for Linux. 100% offline & private with Whisper AI and VOSK. Double-tap Ctrl to start dictating in any app.",
|
||||
images: [{
|
||||
url: "https://picsum.photos/200",
|
||||
width: 1280,
|
||||
height: 640,
|
||||
alt: "Vocalinux Open-Source Voice Dictation"
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Vocalinux - Voice Dictation for Linux"
|
||||
}]
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Vocalinux - Open-Source Voice Dictation for Linux",
|
||||
description: "Open-source offline voice dictation for Linux using Whisper models. Works with X11 and Wayland.",
|
||||
images: ["https://picsum.photos/200"]
|
||||
}
|
||||
title: "Vocalinux - Voice Dictation for Linux, Finally Done Right",
|
||||
description: "Free, open-source voice dictation for Linux. 100% offline & private. Double-tap Ctrl to start dictating in any app.",
|
||||
images: ["/og-image.png"],
|
||||
creator: "@jatinkrmalik"
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
"max-video-preview": -1,
|
||||
"max-image-preview": "large",
|
||||
"max-snippet": -1,
|
||||
},
|
||||
},
|
||||
alternates: {
|
||||
canonical: "https://vocalinux.com",
|
||||
},
|
||||
category: "Technology",
|
||||
};
|
||||
export default function RootLayout({
|
||||
children
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
return <html lang="en" className={`${GeistSans.variable} scroll-smooth`} suppressHydrationWarning>
|
||||
const jsonLd = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
"name": "Vocalinux",
|
||||
"applicationCategory": "UtilitiesApplication",
|
||||
"operatingSystem": "Linux",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"price": "0",
|
||||
"priceCurrency": "USD"
|
||||
},
|
||||
"description": "Free, open-source voice dictation for Linux. 100% offline with Whisper AI and VOSK. Works with X11 and Wayland.",
|
||||
"softwareVersion": "0.2.0-alpha",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "Jatin K Malik",
|
||||
"url": "https://github.com/jatinkrmalik"
|
||||
},
|
||||
"url": "https://vocalinux.com",
|
||||
"downloadUrl": "https://github.com/jatinkrmalik/vocalinux",
|
||||
"screenshot": "https://vocalinux.com/og-image.png",
|
||||
"featureList": [
|
||||
"100% offline voice recognition",
|
||||
"Privacy-focused - no cloud dependencies",
|
||||
"Works with all Linux applications",
|
||||
"X11 and Wayland support",
|
||||
"Double-tap Ctrl activation",
|
||||
"Whisper AI and VOSK engines",
|
||||
"Voice commands for punctuation",
|
||||
"System tray integration"
|
||||
]
|
||||
};
|
||||
|
||||
return (
|
||||
<html lang="en" className={`${GeistSans.variable} scroll-smooth`} suppressHydrationWarning>
|
||||
<head>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||
/>
|
||||
</head>
|
||||
<body>
|
||||
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
|
||||
{children}
|
||||
</ThemeProvider>
|
||||
</body>
|
||||
</html>;
|
||||
</html>
|
||||
);
|
||||
}
|
||||
+958
-836
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user