# Project export: Logfound

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: OpenAI Build Week
- Tagline: Every build makes you faster
- Devpost: https://devpost.com/software/logfound
- GitHub: https://github.com/STELLEN10/LogFound.git
- Demo: https://log-found.vercel.app/
- Video: https://www.youtube.com/embed/H3-fCHExcmE?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Team: 1 GitHub contributor(s) — STELLEN (59 commits)

## Devpost submission (written by the team)

### Inspiration

I'm a solo founder, and I noticed I kept forgetting why I made certain decisions while building projects. I had notes everywhere, but nothing that connected everything together. I wanted one place that could remember my journey and help me improve with every project. That's why I built LogFound—an AI workspace that helps founders and developers keep track of their work, decisions, and progress in one place.

### What it does

LogFound is an AI-powered workspace for solo founders and small teams. It lets me log project updates, engineering decisions, release notes, and milestones in one timeline instead of spreading them across different apps. It also includes three AI agents: Founder Coach – helps me plan, prioritize, and stay focused. CTO Agent – helps with coding, architecture, debugging, and technical decisions. Learning Agent – looks at everything I've done and helps me learn from my progress. The goal isn't just to answer questions. The AI understands my project and helps me build faster with context.

### How we built it

I built LogFound using Next.js, React, Tailwind CSS, Supabase, Groq, and Vercel. I used Codex throughout development to generate code, fix bugs, refactor components, and speed up development. I used GPT-5.6 to plan features, improve the user experience, design the workflow, write documentation, and solve development problems. Everything is designed around one workspace where AI can understand previous decisions instead of starting from scratch every time. Challenges This project pushed me hard. I spent hours debugging API issues while switching between Gemini, OpenAI, and finally Groq. GitHub integration became one of my biggest challenges because of Supabase authentication, UUID errors, workspace synchronization, and deployment issues. I also had to fix environment variables, API keys, database configuration, and deployment problems while racing against the hackathon deadline. Even though some GitHub features are still being completed, I kept improving the project instead of giving up. What I learned I learned that building AI products isn't only about connecting an API. It's about creating a great experience, understanding user context, and solving real problems. I also learned how important debugging, persistence, and planning are. Every bug I fixed taught me something new.

## README (from the GitHub repository)

# Logfound

**Logfound is an AI-powered founder operating system.** It gives solo founders and startup teams a calm, connected place to remember why decisions were made, understand how a product has evolved, collaborate with specialist agents, and stay aligned from the first idea to the next release.

Built for Build Week, Logfound treats product work as a living system rather than a collection of disconnected tasks. Decisions, repository activity, founder context, and AI guidance are designed to be read together.

> **Project status:** the product is a polished, functional prototype with a live server-side Groq integration. Several product surfaces use realistic seeded workspace data while their persistence and third-party sync layers are prepared for production implementation.

## Features

- **Username/password authentication** — a production-safe demo Credentials flow signs HTTP-only sessions, protects workspace routes, persists sessions across refreshes, and requires no email address.
- **Founder dashboard** — a focused daily workspace with project momentum, streaks, active work, timeline activity, team discussion, focus planning, quick actions, and keyboard shortcuts.
- **Timeline** — an elegant activity feed for decisions, notes, milestones, repository changes, and AI recommendations.
- **AI agents** — five distinct server-side specialists: **Nova** for founder strategy, **Atlas** for engineering, **Echo** for founder memory, **Pulse** for market signals, and **Compass** for long-term direction. Focused requests are routed to the right agent; mixed requests use a collaborative council and synthesis.
- **Streaming AI workspace** — progressive server-sent responses expose thinking states, individual agent contributions, a shared recommendation, and a Groq health check. The browser never receives an API key.
- **Founder Intelligence** — a strategy-room experience that brings independent agent perspectives, trade-offs, risks, confidence, and a recommended action plan into one decision surface.
- **GitHub OAuth and Intelligence** — authenticated users can connect GitHub from Settings, securely select one or more repositories for the active project, and load live commits, pull requests, issues, branches, and contributors through server-only APIs. The legacy intelligence view still includes curated demo context alongside connected repository data.
- **Founder Replay** — an immersive, connected view of a decision's original problem, conversations, reasoning, commits, outcomes, and lessons.
- **Voice Workspace** — a browser speech-to-text and text-to-speech abstraction with a focused, multi-agent voice workflow. Support depends on the visitor's browser.
- **Command Center** — a keyboard-first command palette for navigation, actions, search, agent entry points, replay, and voice mode.
- **Weekly Intelligence** — seeded weekly reviews surface wins, mistakes, patterns, momentum, engineering context, and founder learnings.
- **Knowledge Graph and collaboration workspace** — interactive demo views connect projects, features, decisions, commits, conversations, feedback, lessons, and tasks. Presence, cursors, and live updates are currently simulated rather than backed by a realtime service.
- **Founder DNA** — a living founder-profile experience that frames decision speed, consistency, learning velocity, risk appetite, focus, communication style, and shipping momentum as an evolving narrative.
- **Product polish** — first-run onboarding, useful empty and error states, five premium themes, responsive layouts, reduced-motion-aware transitions, and accessible focus and keyboard interactions.

## Tech Stack

- [Next.js 15](https://nextjs.org/) with the App Router
- [React 19](https://react.dev/)
- [TypeScript](https://www.typescriptlang.org/) in strict mode
- [Tailwind CSS](https://tailwindcss.com/), `tailwindcss-animate`, `clsx`, and `tailwind-merge`
- shadcn/ui-compatible component primitives built with [Class Variance Authority](https://cva.style/)
- [Framer Motion](https://www.framer.com/motion/) for interface motion
- [Supabase](https://supabase.com/) with `@supabase/ssr` and `@supabase/supabase-js`
- [Groq JavaScript SDK](https://github.com/groq/groq-typescript) for the active server-side runtime
- [Zod](https://zod.dev/) for API input validation
- [`next-themes`](https://github.com/pacocoursey/next-themes) for theme management
- [Lucide](https://lucide.dev/) icons
- Browser Web Speech APIs for the current voice abstraction
- [Vercel](https://vercel.com/) deployment configuration

## Project Structure

```text
src/
├── app/                         # App Router pages, global styles, route handlers
│   ├── api/ai/                  # Centralized streaming AI and health endpoints
│   ├── ai/                      # Dedicated AI Workspace route
│   ├── collaboration/           # Collaboration and knowledge graph experience
│   ├── github/                  # GitHub Intelligence experience
│   ├── intelligence/            # Founder Intelligence strategy room
│   ├── replay/                  # Founder Replay and weekly intelligence
│   ├── settings/                # Appearance, agent, voice, and privacy controls
│   └── voice/                   # Voice Workspace
├── components/
│   ├── ai/                      # Streaming AI client surface
│   ├── collaboration/           # Collaboration workspace UI
│   ├── dashboard/               # Founder dashboard
│   ├── github/                  # Repository and engineering intelligence UI
│   ├── intelligence/            # Strategy-room UI
│   ├── replay/                  # Replay experience UI
│   ├── settings/                # Settings UI
│   ├── ui/                      # Shared, shadcn/ui-compatible primitives
│   └── voice/                   # Voice Workspace UI
├── hooks/                       # Reusable client interaction hooks
└── lib/
    ├── agents/                  # UI agent registry and contracts
    ├── ai/                      # Server-only Groq client, prompts, router, memory
    ├── supabase/                # Browser, server, and middleware Supabase clients
    ├── voice/                   # Browser speech abstractions
    ├── collaboration.ts         # Seeded collaboration and graph data
    └── founder-memory.ts        # Seeded replay, review, and founder-profile data
```

The `src/lib/ai` directory contains one server-only Groq client alongside the prompts, routing, and memory abstractions. Browser components call internal application routes and never import the SDK.

## Installation

### Prerequisites

- Node.js 20.9 or later
- npm
- A Groq API key to enable live AI features
- A Supabase project with an authenticated Logfound user to enable GitHub connection storage
- A GitHub OAuth App to enable repository access

### 1. Clone and install

```bash
git clone https://github.com/STELLEN10/LogFound.git
cd LogFound
npm install
```

### 2. Create local environment configuration

```bash
# macOS/Linux
cp .env.example .env.local

# PowerShell
Copy-Item .env.example .env.local
```

Set the values described in [Environment Variables](#environment-variables). The UI can run without configuration; live AI requires `GROQ_API_KEY`.

### 3. Configure Supabase storage

1. Create a project in the [Supabase dashboard](https://supabase.com/dashboard).
2. Copy the project URL into `SUPABASE_URL` and the service-role key into `SUPABASE_SERVICE_ROLE_KEY`. These values are server-only.
3. Generate `GITHUB_TOKEN_ENCRYPTION_KEY` with `node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"`.
4. Apply every migration in `supabase/migrations`, including `20260718_github_connections.sql`, `20260720_demo_auth_users.sql`, and `20260721_github_storage_hardening.sql`.

The repository exposes typed browser/server Supabase clients for persistence. GitHub storage requires the migrations above: they create encrypted-token storage, stable workspace-user identities, and project-repository links with Row Level Security e

[README truncated for size]

## Detected evidence (automated analysis)

Indexed codebase: 89 recognized source files, 323 KB.
- CSS (language) — detected in the code
- Next.js (technology) — detected in the code
- React (technology) — detected in the code
- SQL (language) — detected in the code
- Supabase (technology) — detected in the code
- Tailwind CSS (technology) — detected in the code
- TypeScript (language) — detected in the code
- JavaScript (language) — claimed on Devpost, not found in the code
- Vercel (technology) — claimed on Devpost, not found in the code

## Codebase structure (from repository index)

### Files (99 of 99)

```
.env.example
.gitignore
.prettierrc
components.json
eslint.config.mjs
LICENSE
next-env.d.ts
next.config.ts
package.json
postcss.config.mjs
README.md
src/app/ai/page.tsx
src/app/api/ai/config/route.ts
src/app/api/ai/health/route.ts
src/app/api/ai/route.ts
src/app/api/auth/login/route.ts
src/app/api/auth/logout/route.ts
src/app/api/auth/session/route.ts
src/app/api/github/connection/route.ts
src/app/api/github/oauth/callback/route.ts
src/app/api/github/oauth/start/route.ts
src/app/api/github/projects/[projectId]/repositories/route.ts
src/app/api/github/repositories/[owner]/[repository]/activity/route.ts
src/app/api/github/repositories/route.ts
src/app/api/github/status/route.ts
src/app/collaboration/page.tsx
src/app/error.tsx
src/app/github/page.tsx
src/app/globals.css
src/app/intelligence/page.tsx
src/app/layout.tsx
src/app/loading.tsx
src/app/login/page.tsx
src/app/not-found.tsx
src/app/page.tsx
src/app/replay/page.tsx
src/app/settings/page.tsx
src/app/voice/page.tsx
src/components/ai/ai-provider-settings.tsx
src/components/ai/ai-workspace.tsx
src/components/ai/reasoning-network.tsx
src/components/app-shell.tsx
src/components/auth/login-form.tsx
src/components/auth/logout-button.tsx
src/components/brand/logfound-logo.tsx
src/components/collaboration/collaboration-workspace.tsx
src/components/dashboard/dashboard.tsx
src/components/experience/onboarding.tsx
src/components/github/github-connection-settings.tsx
src/components/github/github-intelligence.tsx
src/components/github/github-live-activity.tsx
src/components/intelligence/strategy-room.tsx
src/components/motion/ambient-background.tsx
src/components/providers.tsx
src/components/replay/founder-replay.tsx
src/components/settings/settings-panel.tsx
src/components/time/live-clock.tsx
src/components/time/time-provider.tsx
src/components/ui/button.tsx
src/components/voice/voice-workspace.tsx
src/hooks/use-current-time.ts
src/hooks/use-keyboard-shortcuts.ts
src/lib/agents/registry.ts
src/lib/agents/types.ts
src/lib/ai/agents.ts
src/lib/ai/client.ts
src/lib/ai/groq.ts
src/lib/ai/memory.ts
src/lib/ai/prompts.ts
src/lib/ai/router.ts
src/lib/ai/types.ts
src/lib/auth/credentials.ts
src/lib/auth/session.ts
src/lib/auth/users.ts
src/lib/collaboration.ts
src/lib/env.ts
src/lib/founder-memory.ts
src/lib/github/auth.ts
src/lib/github/client.ts
src/lib/github/config.ts
src/lib/github/crypto.ts
src/lib/github/errors.ts
src/lib/github/oauth.ts
src/lib/github/store.ts
src/lib/github/types.ts
src/lib/supabase/admin.ts
src/lib/supabase/browser.ts
src/lib/supabase/middleware.ts
src/lib/supabase/server.ts
src/lib/time.ts
src/lib/utils.ts
src/lib/voice/speech.ts
src/middleware.ts
supabase/migrations/20260718_github_connections.sql
supabase/migrations/20260720_demo_auth_users.sql
supabase/migrations/20260721_github_storage_hardening.sql
tailwind.config.ts
tsconfig.json
vercel.json
```

### Dependencies

- package.json: @eslint/eslintrc@^3.2.0, @next/eslint-plugin-next@^15.3.0, @supabase/ssr@^0.6.1, @supabase/supabase-js@^2.50.0, @types/node@^22.10.5, @types/react@^19.0.3, @types/react-dom@^19.0.2, autoprefixer@^10.4.20, bcryptjs@^3.0.3, class-variance-authority@^0.7.1, clsx@^2.1.1, eslint@^9.17.0, eslint-config-next@^15.3.0, framer-motion@^12.42.2, groq-sdk@^1.3.0, jose@^6.2.3, lucide-react@^0.468.0, next@^15.3.0, next-themes@^0.4.4, postcss@^8.4.49, prettier@^3.4.2, react@^19.0.0, react-dom@^19.0.0, tailwind-merge@^2.6.0, tailwindcss@^3.4.17, tailwindcss-animate@^1.0.7, typescript@^5.7.2, zod@^3.24.1

### Recent commits (newest first)

- Merge pull request #23 from STELLEN10/agent/fix-vercel-typescript-build
- Fix workspace UUID generation
- Merge pull request #22 from STELLEN10/agent/fix-vercel-typescript-build
- Prevent non-UUID GitHub workspace subjects
- Merge pull request #21 from STELLEN10/agent/fix-vercel-typescript-build
- Guard workspace UUID identities
- Merge pull request #20 from STELLEN10/agent/fix-vercel-typescript-build
- Fix workspace user synchronization
- Merge pull request #19 from STELLEN10/agent/fix-vercel-typescript-build
- Fix GitHub Supabase connection storage
- Merge pull request #18 from STELLEN10/agent/fix-vercel-typescript-build
- Harden clock session persistence
- Add global live workspace clock
- Merge pull request #17 from STELLEN10/agent/fix-vercel-typescript-build
- fix GitHub OAuth storage diagnostics
- Merge pull request #16 from STELLEN10/agent/fix-vercel-typescript-build
- Merge branch 'main' into agent/fix-vercel-typescript-build
- simplify AI runtime to Groq
- Merge pull request #15 from STELLEN10/agent/fix-vercel-typescript-build
- polish founder workspace experience

## Key source files (fetched from GitHub, selected and truncated for size)

### package.json

```
{
  "name": "logfound",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint .",
    "typecheck": "tsc --noEmit",
    "format": "prettier --write ."
  },
  "dependencies": {
    "@supabase/ssr": "^0.6.1",
    "@supabase/supabase-js": "^2.50.0",
    "bcryptjs": "^3.0.3",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "framer-motion": "^12.42.2",
    "groq-sdk": "^1.3.0",
    "jose": "^6.2.3",
    "lucide-react": "^0.468.0",
    "next": "^15.3.0",
    "next-themes": "^0.4.4",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "tailwind-merge": "^2.6.0",
    "tailwindcss-animate": "^1.0.7",
    "zod": "^3.24.1"
  },
  "devDependencies": {
    "@eslint/eslintrc": "^3.2.0",
    "@next/eslint-plugin-next": "^15.3.0",
    "@types/node": "^22.10.5",
    "@types/react": "^19.0.3",
    "@types/react-dom": "^19.0.2",
    "autoprefixer": "^10.4.20",
    "eslint": "^9.17.0",
    "eslint-config-next": "^15.3.0",
    "postcss": "^8.4.49",
    "prettier": "^3.4.2",
    "tailwindcss": "^3.4.17",
    "typescript": "^5.7.2"
  },
  "engines": {
    "node": ">=20.9.0"
  }
}

```

### src/app/page.tsx

```typescript
import { Dashboard } from "@/components/dashboard/dashboard";
import { AUTH_COOKIE_NAME, verifySessionToken } from "@/lib/auth/session";
import { cookies } from "next/headers";

async function getUsername() {
  try {
    const session = await verifySessionToken((await cookies()).get(AUTH_COOKIE_NAME)?.value);
    return session?.user.name || session?.user.username || "there";
  } catch {
    return "there";
  }
}

export default async function Home() {
  return <Dashboard username={await getUsername()} />;
}

```

### src/app/layout.tsx

```typescript
import type { Metadata } from "next";
import { AppShell } from "@/components/app-shell";
import { AmbientBackground } from "@/components/motion/ambient-background";
import { Providers } from "@/components/providers";
import "./globals.css";

export const metadata: Metadata = {
  title: "Logfound",
  description: "A focused workspace for thinking with AI agents.",
  applicationName: "Logfound",
  icons: { icon: "/icon.svg", shortcut: "/icon.svg", apple: "/icon.svg" },
};

export default function RootLayout({
  children,
}: Readonly<{ children: React.ReactNode }>) {
  return (
    <html lang="en" suppressHydrationWarning>
      <body>
        <Providers>
          <AmbientBackground />
          <AppShell>{children}</AppShell>
        </Providers>
      </body>
    </html>
  );
}

```

### src/app/ai/page.tsx

```typescript
import { AiWorkspace } from "@/components/ai/ai-workspace";

export const metadata = { title: "AI Workspace | Logfound" };
export default function AiPage() { return <AiWorkspace />; }

```

### src/app/settings/page.tsx

```typescript
import { SettingsPanel } from "@/components/settings/settings-panel";

export const metadata = { title: "Settings | Logfound" };
export default function SettingsPage() { return <SettingsPanel />; }

```

### src/app/replay/page.tsx

```typescript
import { FounderReplay } from "@/components/replay/founder-replay";

export const metadata = { title: "Founder Replay | Logfound" };
export default function ReplayPage() { return <FounderReplay />; }

```

### src/app/voice/page.tsx

```typescript
import { VoiceWorkspace } from "@/components/voice/voice-workspace";

export const metadata = { title: "Voice Workspace | Logfound" };
export default function VoicePage() { return <VoiceWorkspace />; }

```

### src/app/github/page.tsx

```typescript
import { GithubIntelligence } from "@/components/github/github-intelligence";

export const metadata = { title: "GitHub Intelligence | Logfound" };

export default function GithubPage() {
  return <GithubIntelligence />;
}

```

### src/app/login/page.tsx

```typescript
import { LoginForm } from "@/components/auth/login-form";

export const metadata = { title: "Sign in · Logfound", description: "Enter the Logfound founder workspace." };

export default function LoginPage() {
  return <LoginForm />;
}

```

### src/app/collaboration/page.tsx

```typescript
import { CollaborationWorkspace } from "@/components/collaboration/collaboration-workspace";

export const metadata = { title: "Collaboration | Logfound" };
export default function CollaborationPage() { return <CollaborationWorkspace />; }

```

[79 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]