This commit is contained in:
Harivansh Rathi 2026-04-01 03:45:34 +00:00
parent 4f174ec3a8
commit db1dea097f
81 changed files with 6263 additions and 545 deletions

45
apps/web/app/page.tsx Normal file
View file

@ -0,0 +1,45 @@
import { Card } from "@betternas/ui/card";
import styles from "./page.module.css";
const lanes = [
{
title: "NAS node",
body: "Runs on the storage machine. Exposes WebDAV, reports exports, and stays close to the bytes.",
},
{
title: "Control plane",
body: "Owns users, devices, nodes, grants, mount profiles, and cloud profiles.",
},
{
title: "Local device",
body: "Consumes mount profiles and uses Finder WebDAV flows before we ship a helper app.",
},
{
title: "Cloud layer",
body: "Keeps Nextcloud optional and thin for browser, mobile, and sharing flows.",
},
];
export default function Home() {
return (
<main className={styles.page}>
<section className={styles.hero}>
<p className={styles.eyebrow}>betterNAS monorepo</p>
<h1 className={styles.title}>Contract-first scaffold for NAS mounts and cloud mode.</h1>
<p className={styles.copy}>
The repo is organized so each system part can be built in parallel
without inventing new interfaces. The source of truth is the root
contract plus the shared contracts package.
</p>
</section>
<section className={styles.grid}>
{lanes.map((lane) => (
<Card key={lane.title} className={styles.card} title={lane.title} href="/#">
{lane.body}
</Card>
))}
</section>
</main>
);
}