feat: replace getting-started with coming soon page
CI / TypeScript — type-check (push) Successful in 8s
CI / Publish — build & push image (push) Successful in 7s
CI / Deploy — pull & restart on host (push) Successful in 2s

Deployment path not yet available; commercial plans in preparation.
Replace step-by-step install guide with a coming-soon page and
mailto CTA. Update hero + footer CTA on landing page accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Manivong
2026-06-28 10:58:47 +02:00
co-authored by Claude Sonnet 4.6
parent 403551a50d
commit 78ff06d15b
2 changed files with 40 additions and 138 deletions
+24 -125
View File
@@ -1,138 +1,37 @@
import { Link } from 'react-router-dom'
function CodeBlock({ code }: { code: string }) {
return (
<pre className="rounded-xl border border-slate-800 bg-slate-900 p-6 font-mono text-sm text-slate-300 overflow-x-auto">
<code>{code}</code>
</pre>
)
}
function Step({ n, title, children }: { n: number; title: string; children: React.ReactNode }) {
return (
<div className="flex gap-6">
<div className="shrink-0 flex h-8 w-8 items-center justify-center rounded-full bg-sky-600/20 text-sky-400 text-sm font-semibold">
{n}
</div>
<div className="flex-1 pb-10">
<h2 className="text-xl font-semibold text-slate-200 mb-4">{title}</h2>
{children}
</div>
</div>
)
}
import { EnvelopeIcon } from '@heroicons/react/24/outline'
export default function GettingStarted() {
return (
<div className="py-16 md:py-24">
<div className="max-w-3xl mx-auto px-6">
<div className="mb-12">
<p className="text-sm font-medium text-sky-400 mb-2">Documentation</p>
<h1 className="text-4xl md:text-5xl font-bold text-slate-100 mb-4">Getting Started</h1>
<p className="text-base text-slate-400 leading-relaxed">
Get netOrk running from zero to a managed device in under 10 minutes.
<div className="py-24 md:py-40">
<div className="max-w-2xl mx-auto px-6 text-center">
<p className="text-sm font-medium text-sky-400 mb-4 font-mono">coming soon</p>
<h1 className="text-4xl md:text-5xl font-bold text-slate-100 leading-tight mb-6">
netOrk is getting ready<br />for production.
</h1>
<p className="text-base text-slate-400 leading-relaxed mb-10">
We're working on deployment options, hosted plans, and professional support.
If you want early access or have questions, get in touch.
</p>
</div>
<div className="border-t border-slate-800 pt-10">
<Step n={1} title="Prerequisites">
<ul className="space-y-2 mb-0">
{[
'Docker + Docker Compose (v2)',
'A Linux host reachable from the server by SSH',
'PostgreSQL (or use the bundled Compose profile)',
'Redis (or use the bundled Compose profile)',
].map((item) => (
<li key={item} className="flex items-start gap-2 text-sm text-slate-400">
<span className="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-sky-500" />
{item}
</li>
))}
</ul>
</Step>
<Step n={2} title="Quick start">
<p className="text-sm text-slate-400 mb-4">
Clone the repository, copy the example environment file, and deploy with a single command.
</p>
<CodeBlock code={`git clone https://gitea.example.com/netork/netork.git
cd netork
cp .env.example .env
# Edit .env — set DB_URL, REDIS_URL, SECRET_KEY
bash scripts/deploy.sh 192.168.1.10`} />
<p className="mt-4 text-sm text-slate-400">
The deploy script builds images, pushes them to the target host, and starts Docker Compose.
Alembic migrations run automatically on first start.
</p>
</Step>
<Step n={3} title="First run">
<p className="text-sm text-slate-400 mb-4">
Once the containers are up, navigate to your server IP in a browser.
</p>
<CodeBlock code={`http://192.168.1.10`} />
<ul className="mt-4 space-y-2">
{[
'Complete the setup wizard — it creates the admin user and writes the initial config',
'Log in with the admin credentials you just set',
'You land on the device inventory — currently empty',
].map((item) => (
<li key={item} className="flex items-start gap-2 text-sm text-slate-400">
<span className="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-sky-500" />
{item}
</li>
))}
</ul>
</Step>
<Step n={4} title="Adding your first device">
<ol className="space-y-3">
{[
'Click "Add device" and fill in hostname / IP, driver, and credentials',
'Click "Poll" to verify connectivity — you should see facts populate (vendor, OS, model)',
'Set a poll interval (e.g. 5 minutes) for continuous monitoring',
'Save — the device is now active and polled on the configured schedule',
].map((item, i) => (
<li key={i} className="flex items-start gap-3 text-sm text-slate-400">
<span className="shrink-0 text-xs font-mono text-sky-400 mt-0.5">{i + 1}.</span>
{item}
</li>
))}
</ol>
</Step>
<Step n={5} title="Next steps">
<div className="grid sm:grid-cols-3 gap-4">
{[
{ heading: 'NetBox sync', body: 'Connect netOrk to your NetBox instance to keep device records in sync automatically.' },
{ heading: 'Wazuh', body: 'Enable the Wazuh plugin to track agent enrollment and CVE counts per device.' },
{ heading: 'Scheduled reboots', body: 'Configure scheduled AP reboots for OpenWRT devices (GTK key rotation workaround).' },
].map((card) => (
<div key={card.heading} className="rounded-xl border border-slate-800 bg-slate-900 p-4">
<h3 className="text-sm font-semibold text-slate-100 mb-2">{card.heading}</h3>
<p className="text-xs text-slate-400 leading-relaxed">{card.body}</p>
</div>
))}
</div>
</Step>
</div>
<div className="border-t border-slate-800 pt-8 flex gap-4">
<Link
to="/drivers"
className="text-sky-400 hover:text-sky-300 transition-colors text-sm font-medium"
<a
href="mailto:christian@manivong.de"
className="inline-flex items-center gap-2 px-6 py-3 rounded-lg bg-sky-600 hover:bg-sky-500 text-white font-medium transition-colors"
>
Supported drivers →
<EnvelopeIcon className="h-4 w-4" />
Get in touch
</a>
<div className="mt-12 border-t border-slate-800 pt-8">
<p className="text-sm text-slate-500 mb-4">In the meantime, explore what netOrk can do.</p>
<div className="flex gap-6 justify-center">
<Link to="/features" className="text-sky-400 hover:text-sky-300 transition-colors text-sm font-medium">
Features →
</Link>
<Link
to="/features"
className="text-sky-400 hover:text-sky-300 transition-colors text-sm font-medium"
>
Full feature list →
<Link to="/drivers" className="text-sky-400 hover:text-sky-300 transition-colors text-sm font-medium">
Supported devices →
</Link>
</div>
</div>
</div>
</div>
)
}
+12 -9
View File
@@ -225,12 +225,12 @@ export default function Home() {
No SaaS dependency. Runs on your infrastructure.
</p>
<div className="flex flex-wrap gap-4 justify-center">
<Link
to="/docs/getting-started"
<a
href="mailto:christian@manivong.de"
className="inline-flex items-center gap-2 px-6 py-3 rounded-lg bg-sky-600 hover:bg-sky-500 text-white font-medium transition-colors"
>
Get started →
</Link>
Get in touch →
</a>
<Link
to="/features"
className="inline-flex items-center gap-2 px-6 py-3 rounded-lg border border-slate-700 hover:border-slate-500 text-slate-300 hover:text-slate-100 transition-colors"
@@ -436,13 +436,16 @@ bash scripts/deploy.sh 192.168.1.10`}</code>
{/* 8 — CTA Footer */}
<section className="py-24">
<div className="max-w-7xl mx-auto px-6 text-center">
<h2 className="text-2xl md:text-3xl font-bold text-slate-100 mb-8">Start managing your network.</h2>
<Link
to="/docs/getting-started"
<h2 className="text-2xl md:text-3xl font-bold text-slate-100 mb-4">Interested?</h2>
<p className="text-base text-slate-400 leading-relaxed mb-8">
Deployment options and hosted plans are coming. Get in touch for early access.
</p>
<a
href="mailto:christian@manivong.de"
className="inline-flex items-center gap-2 px-6 py-3 rounded-lg bg-sky-600 hover:bg-sky-500 text-white font-medium transition-colors"
>
Read the docs →
</Link>
Get in touch →
</a>
</div>
</section>
</>