Minor improvements

This commit is contained in:
2025-10-30 22:29:39 +03:30
parent 03d13d432a
commit d402b7f512
5 changed files with 131 additions and 24 deletions

21
app/app.vue Normal file
View File

@@ -0,0 +1,21 @@
<script setup lang="ts">
useSeoMeta({
title: "TorrentMax Enrich Your Magnet Links with Trackers Instantly",
description:
"Boost torrent performance with TorrentMax. Paste any magnet link and instantly enrich it with the latest high-quality trackers for faster peer discovery.",
ogTitle: "TorrentMax Enrich Your Magnet Links with Trackers Instantly",
ogDescription:
"Paste a magnet link and let TorrentMax supercharge it with fresh trackers. Improve availability, speed up downloads, and get the best torrenting experience.",
ogType: "website",
ogUrl: "https://notyet.com",
ogImage: "https://nothet.com/og-image.png",
twitterCard: "summary_large_image",
twitterTitle: "TorrentMax Enrich Your Magnet Links with Trackers Instantly",
twitterDescription:
"TorrentMax enriches your magnet links with the latest trackers for maximum speed and availability.",
twitterImage: "https://notyet.com/og-image.png",
});
</script>
<template>
<NuxtPage />
</template>

View File

@@ -17,7 +17,7 @@ function copyMagnet() {
</script> </script>
<template> <template>
<div class="w-full max-w-2xl mx-auto "> <div class="w-full max-w-2xl mx-auto">
<div class="rounded-2xl border bg-base-100 shadow-lg p-6 space-y-4"> <div class="rounded-2xl border bg-base-100 shadow-lg p-6 space-y-4">
<!-- Title and trackers --> <!-- Title and trackers -->
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
@@ -42,17 +42,25 @@ function copyMagnet() {
class="input input-bordered w-full font-medium text-xs" class="input input-bordered w-full font-medium text-xs"
/> />
<button <button
v-auto-animate v-auto-animate
class="btn btn-square btn-primary text-accent" class="btn btn-square btn-primary text-accent"
@click="copyMagnet" @click="copyMagnet"
:title="copied ? 'Copied!' : 'Copy magnet link'" :title="copied ? 'Copied!' : 'Copy magnet link'"
> >
<!-- Default copy icon --> <!-- Default copy icon -->
<svg v-if="!copied" xmlns="http://www.w3.org/2000/svg" fill="none" <svg
viewBox="0 0 24 24" stroke-width="1.5" v-if="!copied"
stroke="currentColor" class="size-6"> xmlns="http://www.w3.org/2000/svg"
<path stroke-linecap="round" stroke-linejoin="round" fill="none"
d="M15.666 3.888A2.25 2.25 0 0 0 13.5 viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="size-6"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M15.666 3.888A2.25 2.25 0 0 0 13.5
2.25h-3c-1.03 0-1.9.693-2.166 2.25h-3c-1.03 0-1.9.693-2.166
1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75
0 0 1-.75.75H9a.75.75 0 0 0 0 1-.75.75H9a.75.75 0 0
@@ -62,15 +70,24 @@ function copyMagnet() {
2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1-2.25 2.25H6.75A2.25
2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057
1.907-2.185a48.208 48.208 0 0 1 1.907-2.185a48.208 48.208 0 0 1
1.927-.184" /> 1.927-.184"
/>
</svg> </svg>
<!-- Success icon --> <!-- Success icon -->
<svg v-else xmlns="http://www.w3.org/2000/svg" fill="none" <svg
viewBox="0 0 24 24" stroke-width="1.5" v-else
stroke="currentColor" class="size-6"> xmlns="http://www.w3.org/2000/svg"
<path stroke-linecap="round" stroke-linejoin="round" fill="none"
d="M11.35 3.836c-.065.21-.1.433-.1.664 viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="size-6"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M11.35 3.836c-.065.21-.1.433-.1.664
0 .414.336.75.75.75h4.5a.75.75 0 .414.336.75.75.75h4.5a.75.75
0 0 0 .75-.75 2.25 2.25 0 0 0 0 0 .75-.75 2.25 2.25 0 0
0-.1-.664m-5.8 0A2.251 2.251 0-.1-.664m-5.8 0A2.251 2.251
@@ -85,7 +102,8 @@ function copyMagnet() {
.621.504 1.125 1.125 1.125h9.75c.621 .621.504 1.125 1.125 1.125h9.75c.621
0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621
0 1.125.504 1.125 1.125v9.375m-8.25-3 0 1.125.504 1.125 1.125v9.375m-8.25-3
1.5 1.5 3-3.75" /> 1.5 1.5 3-3.75"
/>
</svg> </svg>
</button> </button>
</div> </div>
@@ -93,16 +111,24 @@ function copyMagnet() {
<!-- Info alert --> <!-- Info alert -->
<div class="alert alert-soft mt-2"> <div class="alert alert-soft mt-2">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" <svg
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"
class="stroke-current shrink-0 w-6 h-6"> fill="none"
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24"
d="M13 16h-1v-4h-1m1-4h.01M21 class="stroke-current shrink-0 w-6 h-6"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21
12a9 9 0 11-18 0 9 9 0 0118 12a9 9 0 11-18 0 9 9 0 0118
0z"/> 0z"
/>
</svg> </svg>
<span> <span>
This magnet link has been enriched with additional trackers for better availability. This magnet link has been enriched with additional trackers for better
availability.
</span> </span>
</div> </div>
</div> </div>

View File

@@ -2,11 +2,70 @@ import tailwindcss from "@tailwindcss/vite";
// https://nuxt.com/docs/api/configuration/nuxt-config // https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: '2025-07-15', compatibilityDate: "2025-07-15",
devtools: { enabled: true }, devtools: { enabled: true },
modules: ['@nuxt/eslint','@vueuse/motion/nuxt','@formkit/auto-animate/nuxt'], modules: [
"@nuxt/eslint",
"@vueuse/motion/nuxt",
"@formkit/auto-animate/nuxt",
],
vite: { vite: {
plugins: [tailwindcss()], plugins: [tailwindcss()],
}, },
css: ["./app/tailwind.css"], css: ["./app/tailwind.css"],
}) app: {
head: {
title: "TorrentMax", // default fallback title
htmlAttrs: {
lang: "en",
},
link: [
{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" },
// { rel: "apple-touch-icon", href: "/apple-touch-icon.png" },
],
meta: [
{
name: "description",
content:
"Boost torrent performance with TorrentMax. Paste any magnet link and instantly enrich it with the latest high-quality trackers for faster peer discovery.",
},
{ name: "theme-color", content: "#4bb3a1" },
// Open Graph
{
property: "og:title",
content:
"TorrentMax Enrich Your Magnet Links with Trackers Instantly",
},
{
property: "og:description",
content:
"Paste a magnet link and let TorrentMax supercharge it with fresh trackers. Improve availability, speed up downloads, and get the best torrenting experience.",
},
// { property: "og:type", content: "website" },
// { property: "og:url", content: "https://yourdomain.com" },
// {
// property: "og:image",
// content: "https://yourdomain.com/og-image.png",
// },
// Twitter
{ name: "twitter:card", content: "summary_large_image" },
{
name: "twitter:title",
content:
"TorrentMax Enrich Your Magnet Links with Trackers Instantly",
},
{
name: "twitter:description",
content:
"TorrentMax enriches your magnet links with the latest trackers for maximum speed and availability.",
},
// {
// name: "twitter:image",
// content: "https://yourdomain.com/og-image.png",
// },
],
},
},
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -23,6 +23,7 @@ export default defineEventHandler(async (event) => {
id: maxedMagnet.xt.slice(9), id: maxedMagnet.xt.slice(9),
maxedMagnet: getMagnetUrl(maxedMagnet), maxedMagnet: getMagnetUrl(maxedMagnet),
}; };
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (error: any) { } catch (error: any) {
throw createError({ throw createError({
statusCode: 400, statusCode: 400,