{"id":13891337,"url":"https://github.com/penumbra-zone/cuiloa","last_synced_at":"2025-09-14T04:45:35.257Z","repository":{"id":199766903,"uuid":"703710794","full_name":"penumbra-zone/cuiloa","owner":"penumbra-zone","description":"Third party block explorer built with NextJS for the Penumbra Zone network","archived":false,"fork":false,"pushed_at":"2025-02-03T20:26:08.000Z","size":9139,"stargazers_count":7,"open_issues_count":43,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-28T19:03:14.317Z","etag":null,"topics":["cosmos","nextjs","penumbra","privacy"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/penumbra-zone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-11T18:55:32.000Z","updated_at":"2025-02-03T20:26:13.000Z","dependencies_parsed_at":"2023-10-27T23:21:48.129Z","dependency_job_id":"fd674a6b-f420-49c9-9577-d203dba63cf8","html_url":"https://github.com/penumbra-zone/cuiloa","commit_stats":null,"previous_names":["ejmg/cuiloa"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/penumbra-zone/cuiloa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penumbra-zone%2Fcuiloa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penumbra-zone%2Fcuiloa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penumbra-zone%2Fcuiloa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penumbra-zone%2Fcuiloa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/penumbra-zone","download_url":"https://codeload.github.com/penumbra-zone/cuiloa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/penumbra-zone%2Fcuiloa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275062969,"owners_count":25398888,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cosmos","nextjs","penumbra","privacy"],"created_at":"2024-08-06T16:01:38.494Z","updated_at":"2025-09-14T04:45:35.235Z","avatar_url":"https://github.com/penumbra-zone.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# cuiloa\n\nA block explorer for [Penumbra](https://penumbra.zone/). Built with NextJS.\n\n## Getting Started\n\nCuiloa uses **a monorepo** structure. For now, there are no packages and the only application is cuiloa itself (located in `apps/web`)\n\n### Docker\n\nA docker compose file is provided at the root of this project to stand up a postgresql container along with Cuiloa itself. **Please note** that this container does not provide CometBFT nor a full Penumbra node; to really use Cuiloa, you will need both of these things set up and running.\n\n```\ndocker compose up\n```\n\nThen navigate to http://localhost:3000 to view the app.\nIf you want to set up the pieces manually, see below.\n\n### Build \u0026 Run Locally\n\nThis project requires a modern version of NodeJS and uses [pnpm](https://pnpm.io/) and [turborepo](https://turbo.build/repo/docs) for managing and building the web application.\n\n#### PostgreSQL\n\nWith a modern version of PostgreSQL, create a database and initialize it with the schema file provided by `cometbft` [here](https://github.com/cometbft/cometbft/blob/main/state/indexer/sink/psql/schema.sql). Assuming you've created a database `$DB_NAME` and you have user permissions for the database, You can load a schema file using `psql` with the following command:\n\n```sh\npsql -d $DB_NAME -f schema.sql\n```\n\nThis will be our indexer that the block explorer uses for accessing information on blocks, events, and transactions that occur on the chain. \n\nWith the database initialized, create an `.env` file in `apps/web/` with the database's URI, i.e.:\n```sh .env\nDATABASE_URL=\"postgresql://DB_USER:DB_PASSWORD@localhost:DB_PORT/DB_NAME?sslmode=disable\"\n```\n\nYou will also need this information for the `config.toml` file that `cometbft` will be initialized with when creating your own full node. More on that below.\n\n#### Penumbra\n\nYou need to have a full node setup with penumbra (including `cometbft`) as detailed [here](https://guide.penumbra.zone/node/pd/join-network). **Post-main net**, when joining as a full node on the network, be mindful of bootstrapping your node with the most recent snapshot of the network, otherwise `pd` will probably crash whenever you try to run it. Alternatively, you can configure a full node on a devnet as explained [here](https://guide.penumbra.zone/dev/devnet-quickstart). **In either case**, you need to modify the `config.toml` file that is created by `pd` after generating your configuration files.\n\n`config.toml` should be found under `$HOME/.penumbra/network_data/node0/cometbft/config/`. In this file, there is a heading `[tx_index]` with the configuration variable of `indexer = \"kv\"`. Using the URI of the database you created with PostgreSQL from the previous section, you need to update the section under `[tx_index]` to the following:\n\n```toml\n[tx_index]\nindexer = \"psql\"\npsql-conn = \"$YOUR_DB_URI_HERE\"\n```\nAfter you have updated this file, you should start the full node as instructed by the Penumbra guide. If everything was configured correctly, you should be able to open the database and inspect for Block and Transaction events. If there is no data, check the logs for `cometbft` for any errors with inserting data into the indexer.\n\n#### NextJS\n\nRemove or comment out the `output` property from `nextConfig` in cuiloa's [next.config.js](apps/web/next.config.js) file:\n\n```js\nconst nextConfig = {\n    // DELETE OR COMMENT OUT THIS LINE\n   output: \"standalone\",\n}\n```\n\nThis is important for buildling cuiloa outside of a container environment. The application will not build, and will therefore not run, correctly without changing this line.\n\n#### Running\n\nA justfile has been provided for convenience for basic commands. Just run `just dev` to get started. Otherwise, run:\n\n```bash\npnpm dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) (or whatever port that NextJS binds to) with your browser to see the website.\n\n# Name\n\nPronounced *kwi-lo-a*, from the [Nahuatl Dictionary](https://nahuatl.wired-humanities.org/content/cuiloa):\n\u003e Principal English Translation:\n\u003e to write or paint; to record, as in a census.\n\u003e IPA: kwiloɑ\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpenumbra-zone%2Fcuiloa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpenumbra-zone%2Fcuiloa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpenumbra-zone%2Fcuiloa/lists"}