SPB Git

spb/spboucher.ai Public

spboucher.ai — personal website of Simon-Pierre Boucher.

TypeScript 93.4% HTML 5.5% CSS 1%
2.0 KB · 62 lines tsx
Raw Blame History
1/*2  page.tsx3  spboucher.ai Web4  Author: Simon-Pierre Boucher5  Mail: contact@spboucher.ai6*/78import type { Metadata } from "next";9import { Globe, Sparkles } from "lucide-react";1011import { AppCard } from "@/components/app-card";12import { ProjectCard } from "@/components/project-card";13import { Reveal } from "@/components/reveal";14import { SectionHeading } from "@/components/section-heading";15import { openSourceProjects, zyquoApps } from "@/lib/apps";1617export const metadata: Metadata = {18  title: "Apps — Zyquo macOS Suite & Open Source",19  description:20    "The Zyquo suite: six native macOS applications for AI and local LLMs — plus open-source platforms and research: VQuant, AI Risk Index, Metrika, Forge, and more.",21};2223export default function AppsPage() {24  return (25    <div className="mx-auto max-w-5xl px-4 py-16 sm:px-6">26      <Reveal>27        <SectionHeading28          as="h1"29          eyebrow="Portfolio"30          title="Zyquo macOS Suite"31          icon={Sparkles}32          description="Six native macOS applications focused on AI and local LLMs — built with Swift/SwiftUI for Apple Silicon."33        />34      </Reveal>3536      <div className="mt-10 grid gap-6 sm:grid-cols-2 lg:grid-cols-3">37        {zyquoApps.map((app, i) => (38          <Reveal key={app.slug} delay={i * 0.06} className="h-full">39            <AppCard app={app} />40          </Reveal>41        ))}42      </div>4344      <Reveal className="mt-20">45        <SectionHeading46          title="Web Platforms & Open Source"47          icon={Globe}48          description="Open-source platforms, research code, and teaching material — from an AI-powered financial analysis platform to LLM training in pure C++ on Apple Silicon."49        />50      </Reveal>5152      <div className="mt-10 grid gap-6 sm:grid-cols-2 lg:grid-cols-3">53        {openSourceProjects.map((project, i) => (54          <Reveal key={project.slug} delay={i * 0.06} className="h-full">55            <ProjectCard project={project} />56          </Reveal>57        ))}58      </div>59    </div>60  );61}62