Add author auth, forking, tags, and stats tracking

Introduce token-based author authentication (register/verify API),
   skill forking with EditGate protection, tag metadata on skills,
   and download/push stats. Enhanced push scripts with token auth
   and per-skill filtering. Updated UI with stats, tags, and
   author info on skill cards.
This commit is contained in:
Alejandro Martinez
2026-02-12 14:37:40 +01:00
parent 39d8afb251
commit aa477a553b
80 changed files with 3618 additions and 660 deletions

View File

@@ -5,7 +5,7 @@ interface Props {
title?: string;
}
const { title = 'Skillit' } = Astro.props;
const { title = 'Skills Here' } = Astro.props;
---
<!doctype html>
@@ -16,6 +16,7 @@ const { title = 'Skillit' } = Astro.props;
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>{title}</title>
</head>
<body class="min-h-screen font-sans text-gray-300 antialiased">
@@ -25,14 +26,10 @@ const { title = 'Skillit' } = Astro.props;
</div>
<nav class="relative z-50 border-b border-white/[0.06] bg-surface-50/80 backdrop-blur-xl">
<div class="mx-auto max-w-5xl flex items-center justify-between px-6 py-4">
<div class="mx-auto max-w-6xl flex items-center justify-between px-6 py-4">
<a href="/" class="group flex items-center gap-2.5">
<div class="flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-accent-500 to-accent-600 shadow-lg shadow-accent-500/20">
<svg class="h-4 w-4 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
<path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5" />
</svg>
</div>
<span class="text-lg font-bold tracking-tight text-white group-hover:text-accent-400 transition-colors">skillit</span>
<img src="/favicon.svg" alt="Skills Here" class="h-8 w-8" />
<span class="text-lg font-bold tracking-tight text-white group-hover:text-accent-400 transition-colors">Skills Here</span>
</a>
<a
href="/new"
@@ -46,7 +43,7 @@ const { title = 'Skillit' } = Astro.props;
</div>
</nav>
<main class="relative mx-auto max-w-5xl px-6 py-10">
<main class="relative mx-auto max-w-6xl px-6 py-10">
<slot />
</main>
</body>