Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .eslintrc.json

This file was deleted.

8 changes: 4 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Project Overview

BrainDAO UI is a Next.js 15 landing page for BrainDAO, the governing DAO powering the IQ ecosystem. It showcases the IQ token, ecosystem products (IQ.wiki, IQ Dashboard, IQAI, Sophia), and team information.
BrainDAO UI is a Next.js 16 landing page for BrainDAO, the governing DAO powering the IQ ecosystem. It showcases the IQ token, ecosystem products (IQ.wiki, IQ Dashboard, IQAI, Sophia), and team information.

## Commands

```bash
pnpm dev # Start development server (http://localhost:3000)
pnpm build # Production build
pnpm lint # Run lint-staged (Biome)
pnpm format # Format with Prettier
pnpm format # Format with Biome
pnpm env:prod # Pull production env vars from Vercel
pnpm env:dev # Pull development env vars from Vercel
```

**Note:** This project requires pnpm (enforced via preinstall script). Node.js >= 20.0.0 and pnpm >= 9 required.
**Note:** This project requires pnpm (enforced via preinstall script). Node.js >= 20.9.0 and pnpm >= 9 required.

## Architecture

Expand All @@ -44,7 +44,7 @@ pnpm env:dev # Pull development env vars from Vercel
### Styling
- Tailwind CSS with custom configuration
- Shadcn/ui components (configured in `components.json`)
- Framer Motion and GSAP for animations
- Framer Motion for animations
- next-themes for dark mode (default theme is dark)

### Data Fetching
Expand Down
10 changes: 5 additions & 5 deletions global.d.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// global.d.ts
import type en from "./messages/en.json";

type Messages = typeof en;

declare global {
// Use type safe message keys with `next-intl`
interface IntlMessages extends Messages {}
// Use type safe message keys with `next-intl`
declare module "next-intl" {
interface AppConfig {
Messages: typeof en;
}
}
10 changes: 8 additions & 2 deletions i18n/routing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,11 @@ export const routing = defineRouting({

// Lightweight wrappers around Next.js' navigation APIs
// that will consider the routing configuration
export const { Link, redirect, usePathname, useRouter, permanentRedirect } =
createNavigation(routing);
export const {
Link,
redirect,
usePathname,
useRouter,
permanentRedirect,
getPathname,
} = createNavigation(routing);
7 changes: 4 additions & 3 deletions next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,18 @@ const withNextIntl = createNextIntlPlugin();
const nextConfig: NextConfig = {
skipTrailingSlashRedirect: true,

async redirects() {
// Must be rewrites, not redirects: posthog-js is configured with
// `api_host: "/ingest"` so these have to be proxied server-side. A redirect
// hands the browser the posthog.com URL and defeats the proxy entirely.
async rewrites() {
return [
{
source: "/ingest/static/:path*",
destination: "https://us-assets.i.posthog.com/static/:path*",
permanent: true,
},
{
source: "/ingest/:path*",
destination: "https://us.i.posthog.com/:path*",
permanent: true,
},
];
},
Expand Down
69 changes: 33 additions & 36 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
"export": "next export",
"format": "prettier --write \"**/*.{ts,tsx,md}\" --loglevel warn",
"format": "biome format --write .",
"lint": "lint-staged --allow-empty",
"prepare": "husky install",
"test": "echo \"Next-app tests\"",
Expand All @@ -16,48 +15,36 @@
"preinstall": "npx only-allow pnpm"
},
"dependencies": {
"@emotion/react": "^11.10.6",
"@emotion/styled": "^11.10.6",
"@gsap/react": "^2.1.2",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-menubar": "^1.1.15",
"@radix-ui/react-popover": "^1.1.14",
"@radix-ui/react-slot": "^1.2.3",
"@react-three/drei": "^9.86.3",
"@react-three/fiber": "^8.14.4",
"@radix-ui/react-dropdown-menu": "^2.1.24",
"@radix-ui/react-popover": "^1.1.23",
"@radix-ui/react-slot": "^1.3.3",
"@t3-oss/env-nextjs": "^0.13.11",
"axios": "^1.5.1",
"axios": "^1.19.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"eslint": "8.35.0",
"eslint-config-next": "13.2.3",
"framer-motion": "^12.23.12",
"gsap": "^3.12.5",
"lucide-react": "^0.525.0",
"next": "15.4.10",
"next-intl": "^3.26.3",
"next-themes": "^0.2.1",
"posthog-js": "1.391.2",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-icons": "^4.11.0",
"framer-motion": "^13.1.0",
"lucide-react": "^1.33.0",
"next": "16.3.1",
"next-intl": "^4.13.7",
"next-themes": "^0.4.6",
"posthog-js": "1.418.2",
"react": "19.2.8",
"react-dom": "19.2.8",
"react-icons": "^5.7.0",
"react-intersection-observer": "^9.5.2",
"tailwind-merge": "^3.3.1",
"tailwind-merge": "^3.6.0",
"tailwindcss-animate": "^1.0.7",
"three": "^0.157.0",
"zod": "^4.0.5"
"zod": "^4.4.3"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@types/node": "^20",
"@types/react": "^19.1.12",
"@types/react-dom": "^19",
"@types/three": "^0.156.0",
"autoprefixer": "10.4.13",
"@types/node": "^24.13.3",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"autoprefixer": "10.5.4",
"husky": "^9.1.7",
"lint-staged": "^15.4.3",
"postcss": "8.4.21",
"prettier": "^2.7.1",
"lint-staged": "^17.3.0",
"postcss": "^8.5.26",
"tailwindcss": "^3.3.3",
"typescript": "^5.0.4"
},
Expand All @@ -67,7 +54,17 @@
]
},
"engines": {
"node": ">=20.0.0",
"node": ">=20.9.0",
"pnpm": ">=9"
},
"pnpm": {
"comment": "Build-time transitives pulled in by tailwindcss 3 (sucrase, chokidar, postcss-load-config). Tailwind 4 drops these deps outright, so remove this block with that upgrade.",
"overrides": {
"glob": "^10.5.0",
"minimatch": "^9.0.7",
"brace-expansion": "^2.1.4",
"picomatch@2": "^2.3.2",
"yaml": "^2.8.3"
}
}
}
Loading
Loading