diff --git a/astro.config.ts b/astro.config.ts index 7139d96..206fa6e 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -162,10 +162,6 @@ export default defineConfig({ label: 'FAQ', link: '/faq' }, - { - label: 'Forum', - link: 'https://forum.ethfollow.xyz/' - }, { label: 'Discord', link: 'https://discord.com/invite/ZUyG3mSXFD' diff --git a/bun.lockb b/bun.lockb index 25d4e9a..193422e 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/public/llms-full.txt b/public/llms-full.txt index 5719a53..d96810e 100644 --- a/public/llms-full.txt +++ b/public/llms-full.txt @@ -16,7 +16,7 @@ **How can my app integrate EFP?** -> Any way you want; EFP is open protocol. Ideas include: using EFP to provide additional context for who an Ethereum account is (e.g. showing a user's EFP follower and following counts on their profile, showing friends of friends that follow them, etc), using followings for contacts or message filtering, recommendations, etc. [Our API](https://docs.efp.app/api/) is a convenient way to get EFP data. Message us on Discord or elsewhere to let us know you integrated EFP and we'll put your logo and link on our website. +> Any way you want; EFP is open protocol. Ideas include: using EFP to provide additional context for who an Ethereum account is (e.g. showing a user's EFP follower and following counts on their profile, showing friends of friends that follow them, etc), using followings for contacts or message filtering, recommendations, etc. [Our API](https://ethidentitykit.com/docs/api/) is a convenient way to get EFP data. Message us on Discord or elsewhere to let us know you integrated EFP and we'll put your logo and link on our website. **Is EFP centralized?** @@ -1466,10 +1466,10 @@ If you are a developer, you are free to use this endpoint to retrieve EFP data. #### Commonly used endpoints -- [User Stats](https://docs.ethfollow.xyz/api/users/stats/): the follower and following counts of a particular user -- [User Following](https://docs.ethfollow.xyz/api/users/following/): list of the accounts a particular user follows -- [User Followers](https://docs.ethfollow.xyz/api/users/followers/): list of the accounts that follow a particular user -- [User ENS data](https://docs.ethfollow.xyz/api/users/ens/): the ENS data for a particular user +- [User Stats](https://ethidentitykit.com/docs/api/users/stats/): the follower and following counts of a particular user +- [User Following](https://ethidentitykit.com/docs/api/users/following/): list of the accounts a particular user follows +- [User Followers](https://ethidentitykit.com/docs/api/users/followers/): list of the accounts that follow a particular user +- [User ENS data](https://ethidentitykit.com/docs/api/users/ens/): the ENS data for a particular user ### ENS Worker The API uses V3X Labs' [enstate](https://github.com/v3xlabs/enstate) to provide ENS data. This service is available at https://ens.ethfollow.xyz. EFP is happy to provide use of this endpoint to the community but please do not abuse it. @@ -1901,10 +1901,10 @@ If you are a developer, you are free to use this endpoint to retrieve EFP data. ### Commonly used endpoints -- [User Stats](https://docs.efp.app/api/users/stats/): the follower and following counts of a particular user -- [User Following](https://docs.efp.app/api/users/following/): list of the accounts a particular user follows -- [User Followers](https://docs.efp.app/api/users/followers/): list of the accounts that follow a particular user -- [User ENS data](https://docs.efp.app/api/users/ens/): the ENS data for a particular user +- [User Stats](https://ethidentitykit.com/docs/api/users/stats/): the follower and following counts of a particular user +- [User Following](https://ethidentitykit.com/docs/api/users/following/): list of the accounts a particular user follows +- [User Followers](https://ethidentitykit.com/docs/api/users/followers/): list of the accounts that follow a particular user +- [User ENS data](https://ethidentitykit.com/docs/api/users/ens/): the ENS data for a particular user ### Self-hosting diff --git a/public/llms.txt b/public/llms.txt index 803b133..44b0577 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -25,7 +25,7 @@ - [EFP Emergency Response](https://docs.efp.app/production/emergency-response): Outlines procedures for responding to bugs in EFP contracts and managing affected data. - [Ethereum Follow Protocol Overview](https://docs.efp.app/intro): Explains the Ethereum Follow Protocol, its roles, and functionality for managing social graphs on Ethereum. - [EFP Multisig Overview](https://docs.efp.app/production/multisig): This page provides information about the EFP multisig wallet, its addresses, signers, and contract privileges. -- [API Documentation Redirect](https://docs.efp.app/api/): Redirects users to the API documentation for the Eth Identity Kit. +- [EFP Public API (Ethereum Identity Kit)](https://ethidentitykit.com/docs/api/): HTTP API reference for indexing and retrieving EFP data. - [Ethereum Follow Protocol Overview](https://docs.efp.app/): Explains the Ethereum Follow Protocol for creating and managing on-chain social graphs using NFTs. - [Account Metadata Overview](https://docs.efp.app/design/account-metadata): Explains how to use Account Metadata for Ethereum accounts in the EFP ecosystem. diff --git a/src/content/docs/faq.mdx b/src/content/docs/faq.mdx index 5612b32..36c8ae6 100644 --- a/src/content/docs/faq.mdx +++ b/src/content/docs/faq.mdx @@ -20,7 +20,7 @@ title: F.A.Q. **How can my app integrate EFP?** -> Any way you want; EFP is open protocol. Ideas include: using EFP to provide additional context for who an Ethereum account is (e.g. showing a user's EFP follower and following counts on their profile, showing friends of friends that follow them, etc), using followings for contacts or message filtering, recommendations, etc. [Our API](https://docs.efp.app/api/) is a convenient way to get EFP data. Message us on Discord or elsewhere to let us know you integrated EFP and we'll put your logo and link on our website. +> Any way you want; EFP is open protocol. Ideas include: using EFP to provide additional context for who an Ethereum account is (e.g. showing a user's EFP follower and following counts on their profile, showing friends of friends that follow them, etc), using followings for contacts or message filtering, recommendations, etc. [Our API](https://ethidentitykit.com/docs/api/) is a convenient way to get EFP data. Message us on Discord or elsewhere to let us know you integrated EFP and we'll put your logo and link on our website. **Is EFP centralized?** diff --git a/src/content/docs/production/infra.mdx b/src/content/docs/production/infra.mdx index 6f8e0e5..38d732e 100644 --- a/src/content/docs/production/infra.mdx +++ b/src/content/docs/production/infra.mdx @@ -4,60 +4,53 @@ title: EFP Infrastructure ![EFP Backend Design](/backend-design.png) -The backend architecture for EFP is comprised of the following components +EFP’s backend is developed and deployed from the **[`api-v2` monorepo](https://github.com/ethereumfollowprotocol/api-v2)**, which consolidates the HTTP API, chain indexers, orchestration, background workers, and related code. The older standalone repositories ([`api`](https://github.com/ethereumfollowprotocol/api), [`indexer`](https://github.com/ethereumfollowprotocol/indexer), [`services`](https://github.com/ethereumfollowprotocol/services)) are **archived**. -- [Database](https://hub.docker.com/_/postgres) (Postgres) -- [PGBouncer](https://hub.docker.com/r/pgbouncer/pgbouncer) (a connection pooler for Postgres) -- [EFP Indexers](https://github.com/ethereumfollowprotocol/indexer) for Base, Optimism and Ethereum Mainnet -- [EFP Services](https://github.com/ethereumfollowprotocol/services) (updates ens data, leaderboard, cache, mutuals counts) -- [EFP API](https://github.com/ethereumfollowprotocol/api) (Can be deployed as a cloudflare worker) -- [Ens Worker](https://github.com/v3xlabs/enstate) (Can be deployed as a cloudflare worker) -- [Redis](https://hub.docker.com/_/redis) Cache for the API and ENS Worker +A typical deployment is made up of the following: -All of these components can be set up separately, whether locally or using external hosts. The quickest way to stand up all of the backend infrastructure is to use the [EFP-Silo Railway template](https://railway.app/template/pDGEZm?referralCode=AavWEU) +- [PostgreSQL](https://hub.docker.com/_/postgres) +- [Redis](https://hub.docker.com/_/redis) (caching and coordination) +- [Elasticsearch](https://www.elastic.co/) (search and analytics; see the deployment guide in the monorepo) +- **[`api-v2` services](https://github.com/ethereumfollowprotocol/api-v2/tree/main/services)** — API, indexers, orchestrator, workers, WAL listener, and shared libraries +- V3X Labs [enstate](https://github.com/v3xlabs/enstate) (ENS lookups; deployable as a Cloudflare Worker or self-hosted) + +You can run pieces locally or on a host you control. **For Railway**, follow **[`RAILWAY.md`](https://github.com/ethereumfollowprotocol/api-v2/blob/main/RAILWAY.md)** in `api-v2`. The legacy [EFP-Silo Railway template](/production/silo) is deprecated. ### Indexers -EFP has Registry and AccountMetadata contracts deployed on Base and ListRecords contracts deployed on three chains: Base, Optimism And Ethereum Mainnet. To capture and store all EFP data we run three separate instances of our indexer service, one for each chain. +EFP has Registry and AccountMetadata contracts deployed on Base and ListRecords contracts deployed on three chains: Base, Optimism, and Ethereum mainnet. To capture and store EFP data we run indexer processes for each chain; they ship from the **`services/indexer`** package in **`api-v2`**. ### Database -EFP Data is stored in a Postgres Database, queries and schema can be found in the [EFP Indexer Repo](https://github.com/ethereumfollowprotocol/indexer/tree/develop/db) - -### Connection Pooling - -PgBouncer is used to handle connection pooling for the database. This improves availability for the database over the api by sharing client connections, saving overhead on connection/reconnection. +EFP data is stored in Postgres. Schema and migrations are maintained inside **`api-v2`** (applied during deployment—for example via the **`services/orchestrator`** service as described in the monorepo’s Railway guide). -### Data Services +### Connection pooling -The services module handles several jobs that run on intervals: -- Building the list of all addresses in the EFP database -- Building the Leaderboard Ranking -- Tracking Mutual follows -- Shuffling the recommended accounts list -- Refreshing ENS metadata -- Building a list of accounts with recent activity +Connection pooling improves availability under load by reusing database connections—for example via [PgBouncer](https://hub.docker.com/r/pgbouncer/pgbouncer) or your host’s Postgres settings—depending on how you deploy Postgres. -The intervals for running these jobs can be adjusted to suit your needs. Additionally the accounts that appear in the recommended follows can be customized by forking the services repo and editing '/src/services/recommended/lists.ts'. Once you've edited the file, go to the 'Settings' tab on the services module and update the 'Source Repo' to point to your forked github repository. +### Data services -![Services Settings](/services-settings-repo.png) +Workers and orchestration in **`api-v2`** handle recurring jobs—for example leaderboard ranking, mutuals, recommended follows, ENS metadata refresh, and recent activity—which were previously attributed to the archived **services** repo. Customize behavior by changing the **`api-v2`** codebase (for instance under **`services/workers`**) and deploying your fork or build. ### API + EFP core team provides a public API endpoint at [`https://api.ethfollow.xyz/api/v1`](https://api.ethfollow.xyz/api/v1). If you are a developer, you are free to use this endpoint to retrieve EFP data. #### Commonly used endpoints -- [User Stats](https://docs.ethfollow.xyz/api/users/stats/): the follower and following counts of a particular user -- [User Following](https://docs.ethfollow.xyz/api/users/following/): list of the accounts a particular user follows -- [User Followers](https://docs.ethfollow.xyz/api/users/followers/): list of the accounts that follow a particular user -- [User ENS data](https://docs.ethfollow.xyz/api/users/ens/): the ENS data for a particular user +- [User Stats](https://ethidentitykit.com/docs/api/users/stats/): the follower and following counts of a particular user +- [User Following](https://ethidentitykit.com/docs/api/users/following/): list of the accounts a particular user follows +- [User Followers](https://ethidentitykit.com/docs/api/users/followers/): list of the accounts that follow a particular user +- [User ENS data](https://ethidentitykit.com/docs/api/users/ens/): the ENS data for a particular user ### ENS Worker -The API uses V3X Labs' [enstate](https://github.com/v3xlabs/enstate) to provide ENS data. This service is available at https://ens.ethfollow.xyz. EFP is happy to provide use of this endpoint to the community but please do not abuse it. -Anyone can deploy this ENS worker repository to cloudflare or host their own instance locally. Read more about deploying [here](https://github.com/v3xlabs/enstate?tab=readme-ov-file#-cloudflare-workers). +The API uses V3X Labs' [enstate](https://github.com/v3xlabs/enstate) to provide ENS data. This service is available at https://ens.ethfollow.xyz. EFP is happy to provide use of this endpoint to the community but please do not abuse it. + +Anyone can deploy this ENS worker repository to Cloudflare or host their own instance locally. See the [Cloudflare Workers deployment guide](https://github.com/v3xlabs/enstate?tab=readme-ov-file#-cloudflare-workers) for setup instructions. + +### Redis cache -### Redis Cache -The Redis cache is used by both the API and the ENS Worker to cache responses for faster future retrieval. \ No newline at end of file +Redis is used by the API layer and related services for caching and faster retrieval of frequently accessed data. diff --git a/src/content/docs/production/silo.mdx b/src/content/docs/production/silo.mdx index 0003972..ee36a10 100644 --- a/src/content/docs/production/silo.mdx +++ b/src/content/docs/production/silo.mdx @@ -2,10 +2,12 @@ title: EFP Railway Template --- +:::caution[Deprecated] +This page documents the legacy **EFP-Silo** Railway template, which wired together multiple separate repositories. The standalone [`api`](https://github.com/ethereumfollowprotocol/api), [`indexer`](https://github.com/ethereumfollowprotocol/indexer), and [`services`](https://github.com/ethereumfollowprotocol/services) repositories are **archived**. New self-hosting and deployments use the consolidated **[`api-v2` monorepo](https://github.com/ethereumfollowprotocol/api-v2)**; follow **[`RAILWAY.md`](https://github.com/ethereumfollowprotocol/api-v2/blob/main/RAILWAY.md)** there. For an overview of the current stack, see [EFP Infrastructure](/production/infra/). +::: ---- ## Railway Template Deploying the EFP-Silo template on Railway will set up all of the aforementioned components with default parameters set.