Strip Songs2VID to a payment-free self-hosted OSS core.

Remove Stripe/billing/pricing/marketing, simplify schema and entitlements for unlimited self-host use, and keep auth, encode, and YouTube upload.
This commit is contained in:
Atakan Doğan Özban
2026-08-03 06:52:00 +02:00
parent 506d56fa92
commit 6476bb42a4
108 changed files with 397 additions and 8061 deletions
+3 -62
View File
@@ -2,75 +2,18 @@ import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import { Providers } from "./providers";
import { JsonLd } from "@/components/JsonLd";
import { Matomo } from "@/components/Matomo";
const inter = Inter({ subsets: ["latin"] });
const SITE_URL = "https://songs2vid.com";
const SITE_NAME = "Songs2VID";
const DEFAULT_TITLE =
"Songs2VID - Fast Audio to Video Converter for YouTube | TunesToTube Alternative";
const DEFAULT_TITLE = "Songs2VID";
const DEFAULT_DESCRIPTION =
"Convert MP3, WAV, and audio files into YouTube videos instantly. The fastest, privacy-focused online tool to upload music, beats, and podcasts directly to YouTube.";
const OG_TITLE = "Songs2VID - Fast Audio to Video Converter for YouTube";
const OG_DESCRIPTION =
"Convert MP3 & audio files into YouTube videos instantly without heavy editing.";
const TWITTER_DESCRIPTION = "Convert MP3 & audio files into YouTube videos instantly.";
"Self-hosted audio-to-video creation and YouTube uploading.";
export const metadata: Metadata = {
metadataBase: new URL(SITE_URL),
title: {
default: DEFAULT_TITLE,
template: `%s | ${SITE_NAME}`,
},
title: DEFAULT_TITLE,
description: DEFAULT_DESCRIPTION,
keywords: [
"mp3 to youtube",
"audio to video converter",
"upload audio to youtube",
"tunestotube alternative",
"song to video",
"podcast to youtube",
"convert mp3 to mp4",
],
authors: [{ name: SITE_NAME, url: SITE_URL }],
creator: SITE_NAME,
publisher: SITE_NAME,
applicationName: SITE_NAME,
alternates: {
canonical: SITE_URL,
},
openGraph: {
title: OG_TITLE,
description: OG_DESCRIPTION,
url: SITE_URL,
siteName: SITE_NAME,
type: "website",
locale: "en_US",
images: [
{
url: "/logo.png",
width: 512,
height: 512,
alt: SITE_NAME,
},
],
},
twitter: {
card: "summary_large_image",
title: OG_TITLE,
description: TWITTER_DESCRIPTION,
images: ["/logo.png"],
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
},
},
icons: {
icon: "/favicon.png",
},
@@ -84,8 +27,6 @@ export default function RootLayout({
return (
<html lang="en" suppressHydrationWarning>
<body className={inter.className} suppressHydrationWarning>
<JsonLd />
<Matomo />
<Providers>{children}</Providers>
</body>
</html>