Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
b565c9a
chore: Upgrade dependencies
Quantumlyy May 31, 2026
5f00a4b
refactor(starlight): Migrate content collection configuration
Quantumlyy May 31, 2026
4f13444
refactor(tailwind): Modernize Tailwind CSS integration
Quantumlyy May 31, 2026
b80d1a2
feat(starlight): Integrate Algolia DocSearch
Quantumlyy May 31, 2026
66cc5c8
refactor(starlight): Update social links configuration
Quantumlyy May 31, 2026
3ffdbac
feat: Add programmatic robots.txt
Quantumlyy May 31, 2026
61ac405
chore: Remove ViewTransitions component and add TS config skipLibCheck
Quantumlyy May 31, 2026
7a43720
chore(deps): transition to bun.lock lockfile
Quantumlyy May 31, 2026
42d6296
Potential fix for pull request finding
Quantumlyy May 31, 2026
2f65554
feat: add Tailwind CSS Typography plugin
Quantumlyy May 31, 2026
e0f171f
chore(deps): adjust postcss-selector-parser for typography plugin
Quantumlyy May 31, 2026
db713c2
feat: configure Tailwind CSS Typography plugin
Quantumlyy May 31, 2026
699e523
feat: apply typography styles to Starlight markdown content
Quantumlyy May 31, 2026
11d3d6f
fix(robots): handle missing site URL gracefully
Quantumlyy May 31, 2026
55b7d24
chore(deps): resolve eslint-plugin-astro's postcss-selector-parser
Quantumlyy May 31, 2026
1caaa97
style(theme): adjust accent colors and font family definitions
Quantumlyy May 31, 2026
2521c35
refactor: improve documentation and code consistency
Quantumlyy Jun 1, 2026
18d96f3
docs: Fix various typos in documentation
Quantumlyy Jun 1, 2026
bf7ea54
refactor: Update ESLint and TailwindCSS configurations
Quantumlyy Jun 1, 2026
280e2f8
feat: Integrate starlight-llms-txt for automated LLM context file gen…
Quantumlyy Jun 1, 2026
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
2 changes: 2 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ module.exports = {
extends: 'plugin:mdx/recommended',
rules: {
'@typescript-eslint/no-unused-vars': ['off'],
// MDX parser doesn't provide proper TypeScript import AST; this rule errors on MDX files.
'@typescript-eslint/consistent-type-imports': ['off'],
'no-unused-vars': ['off'],
'mdx/no-unused-expressions': ['off']
},
Expand Down
25 changes: 24 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# CLAUDE.md - Ethereum Follow Protocol Documentation

## Overview

This is the documentation repository for the Ethereum Follow Protocol (EFP), an onchain social graph protocol for Ethereum accounts. The repository contains comprehensive technical documentation built with Astro and Starlight.

## Tech Stack

- **Framework**: Astro (v4.2.4) with Starlight documentation theme
- **Language**: TypeScript
- **Styling**: Tailwind CSS with custom styles
Expand All @@ -12,6 +14,7 @@ This is the documentation repository for the Ethereum Follow Protocol (EFP), an
- **Deployment**: Static site generation

## Key Scripts

- `bun run dev` - Start development server
- `bun run build` - Build production site
- `bun run preview` - Preview built site
Expand All @@ -23,25 +26,29 @@ This is the documentation repository for the Ethereum Follow Protocol (EFP), an
## Repository Structure

### Core Configuration

- `astro.config.ts` - Main Astro configuration with Starlight setup
- `package.json` - Dependencies and scripts
- `tsconfig.json` - TypeScript configuration
- `tailwind.config.ts` - Tailwind CSS configuration

### Content Structure

- `src/content/docs/` - All documentation MDX files
- `src/content/config.ts` - Content collection configuration
- `public/` - Static assets (images, logos, etc.)

### Documentation Sections

#### Introduction (`src/content/docs/intro/`)

- Core protocol concepts
- EFP List NFT system
- Roles (Owner, Manager, User)
- Tags and social graph mechanics

#### Specification (`src/content/docs/design/`)

- `list-registry.mdx` - ERC-721 List Registry contract
- `roles.mdx` - Role definitions and permissions
- `account-metadata.mdx` - Account metadata system
Expand All @@ -53,6 +60,7 @@ This is the documentation repository for the Ethereum Follow Protocol (EFP), an
- `glossary.mdx` - Protocol terminology

#### Production (`src/content/docs/production/`)

- `deployments.mdx` - Smart contract addresses (Base, OP Mainnet, Ethereum)
- `interpreting-state.mdx` - Data interpretation guide
- `multisig.mdx` - Multisig wallet information
Expand All @@ -62,63 +70,73 @@ This is the documentation repository for the Ethereum Follow Protocol (EFP), an
- `emergency-response.mdx` - Emergency procedures

#### Additional Content

- `faq.mdx` - Frequently asked questions
- `bugbounty.mdx` - Bug bounty program
- `translationbounty.mdx` - Translation bounty program
- `llmstxt.mdx` - LLM-friendly protocol documentation
- `playground/` - Interactive examples

### Design Components

- `design-components/colors.mdx` - Color specifications
- `design-components/logos.mdx` - Logo assets and usage

## Key Features

### Protocol Concepts

- **EFP List NFT**: Free-to-mint NFTs representing social lists
- **Three-Role System**: Owner, Manager, User with distinct permissions
- **Multi-Chain Support**: Base, OP Mainnet, Ethereum deployments
- **Tag System**: Standard tags (block, mute, top8) + custom tags
- **Primary List**: Account's designated main social graph

### Technical Infrastructure

- **Smart Contracts**: ERC-721 registry, list records, account metadata
- **API**: Comprehensive REST API via ethidentitykit.com
- **Indexer**: Open-source indexing system
- **Multi-Chain**: L1 and L2 deployments

### Content Management

- **MDX Support**: Rich documentation with embedded components
- **Version Control**: Git-based documentation workflow
- **Starlight**: Advanced documentation features (search, navigation, theming)

## Development Workflow

### Adding Documentation

1. Create MDX files in appropriate `src/content/docs/` subdirectory
2. Update `astro.config.ts` sidebar configuration if needed
3. Use frontmatter for page metadata
4. Test locally with `bun run dev`

### Code Quality

- **ESLint**: Configured with TypeScript, Astro, and MDX support
- **Prettier**: Code formatting with Tailwind plugin
- **TypeScript**: Strict type checking
- **Link Validation**: Automated internal link checking

### Assets

- **Public Directory**: Static assets accessible at root
- **Logo Assets**: Multiple formats (PNG, SVG) for different use cases
- **Images**: Protocol diagrams, screenshots, QR codes

## External Resources

### API Documentation

- Comprehensive API docs at ethidentitykit.com
- Endpoints for users, lists, stats, leaderboards
- Real-time data via indexer

### Related Repositories

- `app` - Main EFP web application
- `api` - Public API service
- `contracts` - Smart contract implementations
Expand All @@ -127,32 +145,37 @@ This is the documentation repository for the Ethereum Follow Protocol (EFP), an
- `follow-bot` - Telegram bot

### Community

- **Discord**: https://discord.efp.app
- **Twitter**: https://x.com/efp
- **Forum**: https://forum.ethfollow.xyz/

## Deployment Information

### Production Contracts

- **Base**: Full deployment with all contracts
- **OP Mainnet**: List Records only
- **Ethereum**: List Records only

### Development Environment

- **Base Sepolia**: Full testnet deployment
- **OP Sepolia**: List Records testnet
- **Ethereum Sepolia**: List Records testnet

## Security Considerations

- Bug bounty program active
- Emergency response procedures documented
- Multisig wallet governance
- Open-source codebase for transparency

## Contributing

- Simple contribution guidelines: "good vibes only"
- Open to community contributions
- Translation bounty program available
- GitHub-based workflow with PR previews

This documentation serves as the canonical technical reference for the Ethereum Follow Protocol, providing comprehensive coverage of the protocol's design, implementation, and operational aspects.
This documentation serves as the canonical technical reference for the Ethereum Follow Protocol, providing comprehensive coverage of the protocol's design, implementation, and operational aspects.
57 changes: 43 additions & 14 deletions astro.config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import process from 'node:process'
import sentry from '@sentry/astro'
import tailwind from '@astrojs/tailwind'
import starlight from '@astrojs/starlight'
import starlightDocSearch from '@astrojs/starlight-docsearch'
import tailwindcss from '@tailwindcss/vite'
import { defineConfig } from 'astro/config'
import spotlightjs from '@spotlightjs/astro'
import starlightLinksValidator from 'starlight-links-validator'
import starlightLlmsTxt from 'starlight-llms-txt'
import { llmsTxtOptionalLinks } from './src/llms-txt-optional-links'

const SITE_URL = 'https://docs.efp.app/'

Expand All @@ -18,10 +20,11 @@ export default defineConfig({
'/': '/intro',
'/api': 'https://ethidentitykit.com/docs/api'
},
vite: {
plugins: [tailwindcss()]
},
integrations: [
sentry(),
spotlightjs(),
tailwind({ applyBaseStyles: false, configFile: 'tailwind.config.ts' }),
starlight({
title: 'EFP Docs',
tagline: 'Ethereum Follow Protocol',
Expand All @@ -35,11 +38,23 @@ export default defineConfig({
useStarlightDarkModeSwitch: true,
useStarlightUiThemeColors: true
},
social: {
github: 'https://github.com/ethereumfollowprotocol',
discord: 'https://discord.efp.app',
'x.com': 'https://x.com/efp'
},
social: [
{
icon: 'github',
label: 'GitHub',
href: 'https://github.com/ethereumfollowprotocol'
},
{
icon: 'discord',
label: 'Discord',
href: 'https://discord.efp.app'
},
{
icon: 'x.com',
label: 'X',
href: 'https://x.com/efp'
}
],
locales: {
root: {
label: 'English',
Expand Down Expand Up @@ -184,6 +199,13 @@ export default defineConfig({
}
],
head: [
{
tag: 'meta',
attrs: {
name: 'algolia-site-verification',
content: 'C3213343673844A1'
}
},
{
tag: 'link',
attrs: {
Expand Down Expand Up @@ -264,24 +286,31 @@ export default defineConfig({
}
],
customCss: [
'./src/styles/custom.css',
'./src/styles/tailwind.css',
'./src/styles/custom.css',
'@fontsource/inter/400.css',
'@fontsource/inter/500.css',
'@fontsource/inter/700.css',
'@fontsource/ibm-plex-mono/400.css',
'@fontsource/ibm-plex-mono/600.css'
],
plugins: [
starlightLlmsTxt({
projectName: 'Ethereum Follow Protocol',
promote: ['intro*', 'design/**'],
exclude: ['llmstxt', 'playground/**'],
optionalLinks: [...llmsTxtOptionalLinks]
}),
starlightDocSearch({
appId: 'ZNH496WHXH',
apiKey: '4164846664e653d5c81702851b2d3de1',
indexName: 'EFP docs'
}),
Comment thread
Quantumlyy marked this conversation as resolved.
Comment thread
Quantumlyy marked this conversation as resolved.
// https://starlight-links-validator.vercel.app/configuration/#configuration-options
starlightLinksValidator()
]
})
],
experimental: {
clientPrerender: true,
contentCollectionCache: !import.meta.env.DEV
},
server: {
port: Number(process.env.PORT || 4321)
}
Expand Down
Loading
Loading