The Collective DAO Catalog is an open source database that captures, indexes, and archives various discussions from existing DAOs. Indviduals can query across all DAOs, bringing qualitative information of DAO Events into one searchable, source of truth. By building the most reliable open source database where anyone can contribute, integrate and extend the data, we can use the power of collective intelligence to highlight patterns and improve the development of new and existing DAOs.
Contribute Content: If you're interested in contributing to the database, signal important DAO Events by submitting the link on our Contribute page. More details on the Collective DAO Catalog can be found in our Wiki. If you're having any issues, create a Github issue.
Contribute Technical Issues or Suggest Features: If you find a bug or if you're interested in extending the functionality and features of the platform, create a Github issue (link).
If you found the Collective DAO Catalog useful, consider donating to help cover our maintenance costs
ETH Mainnet: daocatalog.eth
OPTIMISM: 0xEb31303Be09e9279F2046e6019502901AB2B6437
The project is built using a monorepo structure:
Backend (packages/backend):
- Handles the connection to the database (Postgress v15) and provides an API.
- Built with NodeJS/ExpressJS.
- Deployed to Heroku: https://dao-catalog-api-5a6466df16c9.herokuapp.com/
Frontend (packages/frontend):
- Reads data from the backend API and shows it in a web interface.
- Built with NextJS.
- Deployed to Vercel: https://collectivedaoarchives-catalog.vercel.app/
You'll need NodeJS v18+, Yarn and Docker installed.
1. Clone the repo
git clone https://github.com/amy-jung/collectivedaoarchives.catalog.git
cd collectivedaoarchives.catalog2. Install dependencies
yarn install3. Spin up the Postgres database
docker-compose up -d
# use «docker-compose down» to stop the database service on docker4. Set up environment variables
For packages/backend copy the .env.example file to .env.
For packages/frontend copy the .env.example file to .env.local.
Defaults should work for local development.
5. Create and seed the database
Copy the packages/backend/prisma/records.csv.sample to packages/backend/prisma/records.csv or use the sample file as a template to create your own.
# Create the database schema (based on the migrations, generated from packages/backend/prisma/schema.prisma)
yarn migrate:dev
# Seed the database (packages/backend/prisma/seed.ts)
yarn db:seedIf you want to update the schema:
- Tweak the
packages/backend/prisma/schema.prisma - Run
yarn db:push - Repeat 1 & 2 until the schema is ready, and then run
yarn migrate:dev --name <your_update_name>to create the corresponding migration file.
You can also use yarn db:reset to regenerate the schema (you'll lose all the data in the database!).
Note: For PROD enviroments, use yarn migrate:deploy (instead of yarn migrate:dev) to apply the migrations to the database.
Eventually we could add the command in the heroku-postbuild script in packages/backend/package.json to run it automatically on Heroku, but for now we'll run it manually.
6. Start the backend
yarn backend7. Start the frontend
In a new terminal window:
yarn frontendThe app should now be running on http://localhost:3000