{"id":13689416,"url":"https://github.com/dossierhq/dossierhq","last_synced_at":"2025-04-10T16:43:22.822Z","repository":{"id":65328805,"uuid":"307365579","full_name":"dossierhq/dossierhq","owner":"dossierhq","description":"The headless CMS toolkit","archived":false,"fork":false,"pushed_at":"2024-05-22T19:45:51.000Z","size":32290,"stargazers_count":28,"open_issues_count":9,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-22T20:32:34.048Z","etag":null,"topics":["cms","dossier","graphql","headless","postgres","react","sqlite","typescript"],"latest_commit_sha":null,"homepage":"https://dossierhq.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dossierhq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2020-10-26T12:31:01.000Z","updated_at":"2024-05-22T20:32:45.656Z","dependencies_parsed_at":"2023-09-22T21:15:30.472Z","dependency_job_id":"3421c2f6-2f79-4ef5-9d10-61d82d5811d5","html_url":"https://github.com/dossierhq/dossierhq","commit_stats":null,"previous_names":[],"tags_count":2065,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dossierhq%2Fdossierhq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dossierhq%2Fdossierhq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dossierhq%2Fdossierhq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dossierhq%2Fdossierhq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dossierhq","download_url":"https://codeload.github.com/dossierhq/dossierhq/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248252741,"owners_count":21072703,"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","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":["cms","dossier","graphql","headless","postgres","react","sqlite","typescript"],"created_at":"2024-08-02T15:01:47.091Z","updated_at":"2025-04-10T16:43:22.800Z","avatar_url":"https://github.com/dossierhq.png","language":"TypeScript","funding_links":[],"categories":["graphql"],"sub_categories":[],"readme":"# Dossier\n\n[![Node CI](https://github.com/dossierhq/dossierhq/actions/workflows/nodejs.yml/badge.svg)](https://github.com/dossierhq/dossierhq/actions/workflows/nodejs.yml) [![Benchmark](https://github.com/dossierhq/dossierhq/actions/workflows/benchmark.yml/badge.svg)](https://github.com/dossierhq/dossierhq/actions/workflows/benchmark.yml)\n\nDossier enables you to build solutions where you’re in full control of the content. By bringing your own auth (authentication and authorization), database and backend, you can build a headless Content Management System (CMS) and integrate it with your app.\n\nFor more information about Dossier, head over to [dossierhq.dev](https://www.dossierhq.dev). The rest of this readme is focused on developing and contributing to Dossier itself.\n\nIf you just want to get started using Dossier, these destinations might get you there faster:\n\n- [Dossier Playground](https://playground.dossierhq.dev/) - use Dossier in a browser\n- [dossier-next-sqlite-app](https://github.com/dossierhq/dossier-next-sqlite-app) - a template using Dossier, Next.js and SQLite\n- [dossier-astro-sqlite-app](https://github.com/dossierhq/dossier-astro-sqlite-app) - a template using Dossier, Astro and SQLite\n\n## Published packages\n\n| Package                           | Version                                                                                                                                      | Folder                                                              |\n| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |\n| `@dossierhq/better-sqlite3`       | [![npm version](https://badge.fury.io/js/@dossierhq%2Fbetter-sqlite3.svg)](https://badge.fury.io/js/@dossierhq%2Fbetter-sqlite3)             | [libraries/better-sqlite3](./libraries/better-sqlite3/)             |\n| `@dossierhq/cloudinary`           | [![npm version](https://badge.fury.io/js/@dossierhq%2Fcloudinary.svg)](https://badge.fury.io/js/@dossierhq%2Fcloudinary)                     | [libraries/cloudinary](./libraries/cloudinary/)                     |\n| `@dossierhq/core`                 | [![npm version](https://badge.fury.io/js/@dossierhq%2Fcore.svg)](https://badge.fury.io/js/@dossierhq%2Fcore)                                 | [libraries/core](./libraries/core/)                                 |\n| `@dossierhq/core-vitest`          | [![npm version](https://badge.fury.io/js/@dossierhq%2Fcore-vitest.svg)](https://badge.fury.io/js/@dossierhq%2Fcore-vitest)                   | [libraries/core-vitest](./libraries/core-vitest/)                   |\n| `@dossierhq/database-adapter`     | [![npm version](https://badge.fury.io/js/@dossierhq%2Fdatabase-adapter.svg)](https://badge.fury.io/js/@dossierhq%2Fdatabase-adapter)         | [libraries/database-adapter](./libraries/database-adapter/)         |\n| `@dossierhq/design`               | [![npm version](https://badge.fury.io/js/@dossierhq%2Fdesign.svg)](https://badge.fury.io/js/@dossierhq%2Fdesign)                             | [libraries/design](./libraries/design/)                             |\n| `@dossierhq/graphql`              | [![npm version](https://badge.fury.io/js/@dossierhq%2Fgraphql.svg)](https://badge.fury.io/js/@dossierhq%2Fgraphql)                           | [libraries/graphql](./libraries/graphql/)                           |\n| `@dossierhq/integration-test`     | [![npm version](https://badge.fury.io/js/@dossierhq%2Fintegration-test.svg)](https://badge.fury.io/js/@dossierhq%2Fintegration-test)         | [libraries/integration-test](./libraries/integration-test/)         |\n| `@dossierhq/leaflet`              | [![npm version](https://badge.fury.io/js/@dossierhq%2Fleaflet.svg)](https://badge.fury.io/js/@dossierhq%2Fleaflet)                           | [libraries/leaflet](./libraries/leaflet/)                           |\n| `@dossierhq/pg`                   | [![npm version](https://badge.fury.io/js/@dossierhq%2Fpg.svg)](https://badge.fury.io/js/@dossierhq%2Fpg)                                     | [libraries/pg](./libraries/pg/)                                     |\n| `@dossierhq/postgres-core`        | [![npm version](https://badge.fury.io/js/@dossierhq%2Fpostgres-core.svg)](https://badge.fury.io/js/@dossierhq%2Fpostgres-core)               | [libraries/postgres-core](./libraries/postgres-core/)               |\n| `@dossierhq/postgres-tools`       | [![npm version](https://badge.fury.io/js/@dossierhq%2Fpostgres-tools.svg)](https://badge.fury.io/js/@dossierhq%2Fpostgres-tools)             | [libraries/postgres-tools](./libraries/postgres-tools/)             |\n| `@dossierhq/react-components`     | [![npm version](https://badge.fury.io/js/@dossierhq%2Freact-components.svg)](https://badge.fury.io/js/@dossierhq%2Freact-components)         | [libraries/react-components](./libraries/react-components/)         |\n| `@dossierhq/react-components2`    | [![npm version](https://badge.fury.io/js/@dossierhq%2Freact-components2.svg)](https://badge.fury.io/js/@dossierhq%2Freact-components2)       | [libraries/react-components2](./libraries/react-components2/)       |\n| `@dossierhq/server`               | [![npm version](https://badge.fury.io/js/@dossierhq%2Fserver.svg)](https://badge.fury.io/js/@dossierhq%2Fserver)                             | [libraries/server](./libraries/server/)                             |\n| `@dossierhq/sql.js`               | [![npm version](https://badge.fury.io/js/@dossierhq%2Fsql.js.svg)](https://badge.fury.io/js/@dossierhq%2Fsql.js)                             | [libraries/sql.js](./libraries/sql.js/)                             |\n| `@dossierhq/sqlite-core`          | [![npm version](https://badge.fury.io/js/@dossierhq%2Fsqlite-core.svg)](https://badge.fury.io/js/@dossierhq%2Fsqlite-core)                   | [libraries/sqlite-core](./libraries/sqlite-core/)                   |\n| `@dossierhq/typescript-generator` | [![npm version](https://badge.fury.io/js/@dossierhq%2Ftypescript-generator.svg)](https://badge.fury.io/js/@dossierhq%2Ftypescript-generator) | [libraries/typescript-generator](./libraries/typescript-generator/) |\n\n## Development dependencies\n\n- Use [mise](https://mise.jdx.dev/) to install the tools in `.tools-versions`\n- `brew install pgcli` (optional, for Postgres access)\n- `brew install gnuplot` (for benchmarking)\n- `npx playwright install` (for installing browsers for Playwright testing)\n\n## Getting started\n\n- `pnpm i` to install dependencies.\n- In `tools/generic-tools/`:\n  - By default the databases (test and example databases on PostgreSQL) are configured in Docker. To use another db set the env variable `HOST_ROOT_DATABASE_URL`\n  - `npm run db:start` (only if running db in Docker)\n  - `npm run db:ensure-dbs`\n  - `npm run db:make-users:superuser`\n  - `npm run db:migrate:all`\n  - `npm run db:make-users:no-superuser`\n- `pnpm run build`\n\n## Dev container / Github Code Spaces\n\n- Start dev container\n- The script [post-create.sh](./.devcontainer/scripts/post-create.sh) runs automatically on first run\n- When done, restart your shell since it sets up environment variables\n- For root access to the Postgres database, run `psql \"$HOST_ROOT_DATABASE_URL\"` or `pgcli \"$HOST_ROOT_DATABASE_URL\"`\n\n## Upgrade dependencies\n\n- Upgrade tool versions in `.tool-versions`\n- Run `pnpm deps:update-interactive`\n- Upgrade Deno dependencies in the 3 `import-map.json` files\n- Run `(cd tools/generic-tools \u0026\u0026 npm run deno:reload-dependencies:all)`\n- Upgrade the postgres version in `./docker-compose.yml`\n\n## Publish packages\n\n- When making changes to published packages, create a changeset using `pnpm changeset:add`\n- The [release workflow](./.github/workflows/release.yml) will automatically open a PR to bump the versions\n- Merge the PR to publish the packages\n\n## Ports\n\n- 3000: examples/tutorial\n- 3001: examples/next-web\n- 3002: apps/playground\n- 3003: apps/blog\n- 3004: apps/playground2\n- 4321: examples/astro\n- 4322: examples/astro (HMR)\n- 5173: examples/tutorial\n- 6006: libraries/react-components\n- 6007: libraries/design\n- 6008: libraries/react-components2\n- 9000: libraries/libsql - admin entity\n- 9001: libraries/libsql - advisory lock\n- 9002: libraries/libsql - advisory lock\n- 9003: libraries/libsql - published entity\n- 9004: libraries/libsql - schema\n- 9005: libraries/libsql - changelog\n- 9006: libraries/libsql - sync source\n- 9007: libraries/libsql - sync target\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdossierhq%2Fdossierhq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdossierhq%2Fdossierhq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdossierhq%2Fdossierhq/lists"}