feat: US-001 — scaffold NeuralDesk Electron + React app

- electron-forge 7 + Vite plugin (vite-typescript template)
- React 19 + TypeScript 5 strict mode
- TanStack Router with file-based routing (4 routes: /, /timeline, /tasks, /projects)
- Tailwind CSS 3 + PostCSS with Figma design tokens (sidebar, primary, muted)
- Framer Motion, Lucide React, shadcn/ui utilities (cn, CVA, clsx, twMerge)
- AppShell layout: 240px sidebar with collapse toggle, active route highlighting
- Vite configs use .mts extension to avoid ESM/CJS conflict with electron-forge
- Full package build verified (linux x64)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Roberto Musso
2026-02-19 15:28:31 +01:00
commit f6cc8bb23a
28 changed files with 14134 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
import { createRootRoute, Outlet } from '@tanstack/react-router';
import { AppShell } from '@/components/layout/AppShell';
export const Route = createRootRoute({
component: () => (
<AppShell>
<Outlet />
</AppShell>
),
});

View File

@@ -0,0 +1,32 @@
import { createFileRoute } from '@tanstack/react-router';
export const Route = createFileRoute('/')({
component: HomePage,
});
function HomePage() {
return (
<div className="flex flex-col items-center justify-center h-full gap-4">
<div className="flex items-center gap-3">
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
className="text-foreground"
>
<path
d="M12 2L13.5 8.5L20 10L13.5 11.5L12 18L10.5 11.5L4 10L10.5 8.5L12 2Z"
fill="currentColor"
/>
</svg>
<h1 className="text-3xl font-semibold tracking-tight">
Hello, Roberto
</h1>
</div>
<p className="text-muted-foreground text-sm">
NeuralDesk is ready. Start building.
</p>
</div>
);
}

View File

@@ -0,0 +1,13 @@
import { createFileRoute } from '@tanstack/react-router';
export const Route = createFileRoute('/projects')({
component: ProjectsPage,
});
function ProjectsPage() {
return (
<div className="flex items-center justify-center h-full text-muted-foreground text-sm">
Projects coming in US-006
</div>
);
}

View File

@@ -0,0 +1,13 @@
import { createFileRoute } from '@tanstack/react-router';
export const Route = createFileRoute('/tasks')({
component: TasksPage,
});
function TasksPage() {
return (
<div className="flex items-center justify-center h-full text-muted-foreground text-sm">
Tasks coming in US-007
</div>
);
}

View File

@@ -0,0 +1,13 @@
import { createFileRoute } from '@tanstack/react-router';
export const Route = createFileRoute('/timeline')({
component: TimelinePage,
});
function TimelinePage() {
return (
<div className="flex items-center justify-center h-full text-muted-foreground text-sm">
Timeline coming in US-008
</div>
);
}