{"id":47663614,"url":"https://github.com/digitalgroundgame/pragmatic-papers","last_synced_at":"2026-04-20T08:06:35.474Z","repository":{"id":301977873,"uuid":"1005900350","full_name":"digitalgroundgame/pragmatic-papers","owner":"digitalgroundgame","description":"A news website and content management system for The Pragmatic Papers.","archived":false,"fork":false,"pushed_at":"2026-03-26T07:09:33.000Z","size":5332,"stargazers_count":10,"open_issues_count":51,"forks_count":7,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2026-03-26T07:58:37.787Z","etag":null,"topics":["news","nextjs","payload-cms","politics","postgresql","react","tailwindcss","typescript","website"],"latest_commit_sha":null,"homepage":"https://pragmaticpapers.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/digitalgroundgame.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-21T03:44:34.000Z","updated_at":"2026-03-25T20:48:00.000Z","dependencies_parsed_at":"2025-07-14T04:08:53.995Z","dependency_job_id":"fda01376-27ef-4d2f-8713-56ab62620a25","html_url":"https://github.com/digitalgroundgame/pragmatic-papers","commit_stats":null,"previous_names":["dggpoliticalaction/org-repo","digitalgroundgame/pragmatic-papers"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/digitalgroundgame/pragmatic-papers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalgroundgame%2Fpragmatic-papers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalgroundgame%2Fpragmatic-papers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalgroundgame%2Fpragmatic-papers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalgroundgame%2Fpragmatic-papers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/digitalgroundgame","download_url":"https://codeload.github.com/digitalgroundgame/pragmatic-papers/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digitalgroundgame%2Fpragmatic-papers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["news","nextjs","payload-cms","politics","postgresql","react","tailwindcss","typescript","website"],"created_at":"2026-04-02T11:47:41.963Z","updated_at":"2026-04-02T11:47:43.150Z","avatar_url":"https://github.com/digitalgroundgame.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Pragmatic Papers\n\nThe website for [pragmaticpapers.com](https://pragmaticpapers.com/).\n\nRead about our current initiatives on the wiki: [Pragmatic Papers Developement Wiki](https://github.com/digitalgroundgame/pragmatic-papers/wiki)\n\n## Requirements\n\n```Bash\ndocker\nNode.js version 22+\npnpm\n```\n\n## Utilities\n\nThis repo uses some additional tools:\n\n- [Turborepo](https://turbo.build/repo) for monorepo management\n- [TypeScript](https://www.typescriptlang.org/) for static type checking\n- [ESLint](https://eslint.org/) for code linting\n- [Prettier](https://prettier.io) for code formatting\n\n### Quick Start\n\n1. [Clone the repo](https://github.com/digitalgroundgame/pragmatic-papers.git) and `cd` into it.\n2. *(Optional)* Set up the private display font — see [Private Font Setup](#private-font-setup) below. Don't worry you can come back to this later.\n3. Run `pnpm install`. The preinstall hook copies `apps/pragmatic-papers/.env` from `.env.example` if missing.\n4. Start dev:\n  ```bash\n   pnpm dev\n  ```\n5. Open [http://localhost:8000](http://localhost:8000).\n\n## Private Font Setup\n\nThe `@digitalgroundgame/fonts` package contains the proprietary display font. It is optional — the site works without it, falling back to system fonts. If you don't have access, skip this section.\n\nIf you do have access, create a **Classic GitHub Personal Access Token (PAT)** at [GitHub Settings → Tokens](https://github.com/settings/tokens) with the `read:packages` scope.\n\nSet `GH_FONT_READ` in your environment, it will be referenced by our project's `.npmrc`:\n\n```\n//npm.pkg.github.com/:_authToken=${GH_FONT_READ}\n```\n\nSet the variable in your shell:\n\n- **Mac/Linux** — add to `~/.zshrc` or `~/.bashrc`:\n  ```bash\n  # ~/.zshrc\n  export GH_FONT_READ=ghp_your_token_here\n  ```\n- **Windows (PowerShell)** — set permanently for your user:\n  ```powershell\n  [System.Environment]::SetEnvironmentVariable(\"GH_FONT_READ\", \"ghp_your_token_here\", \"User\")\n  ```\n  Alternatively, open **System Properties → Advanced → Environment Variables** (search \"environment variables\" in the Start menu) and add `GH_FONT_READ` under \"User variables\".\n\nRestart your terminal after setting the variable.\n\nRe-run `pnpm install` after setting up your credentials. You should see `✓ Fonts copied to public/fonts` in the output.\n\n\u003e [!WARNING]\n\u003e You will see console warnings until GH_FONT_READ is set as an environment variable during development.\n\n## Seeding the Database\n\nIn order to see some basic content and website functionality it is key to seed your development database with mock content.\n\n1. Navigate to `http://localhost:8000/admin`\n2. Create a new user. The credentials don't matter here as its local.\n3. When you land on the dashboard click the `Seed your database` link.\n4. Wait a few moments and now your website will have some example content when returning to browsing `http://localhost:8000`\n\n\u003e [!TIP]\n\u003e If your docker database ever gets into a unrecoverable state, or you are switch branches that have different database schemas, be sure to run `pnpm dev:db-nuke` to blow away your database and start fresh.\n\nRead more about [Seeding The Database](https://github.com/digitalgroundgame/pragmatic-papers/wiki/Seeding-the-Database)\n\n## Helpful Commands\n\nHere are the most important scripts available in the root `package.json`:\n\n- `pnpm dev`: Start the application in development mode.\n- `pnpm dev:db`: Start the development docker container. This happens automatically when running `pnpm dev`.\n- `pnpm dev:db-down`: Stop the development docker container.\n- `pnpm dev:db-nuke`: Stop the container *and* remove the database volume.\n- `pnpm lint`: Lint files with `eslint`.\n- `pnpm format`: Format files with `prettier`.\n- `pnpm check-types`: Runs typescript compiler in no emit mode to check for type errors.\n- `pnpm migrate:create \"name_of_migration\"`: Create the necessary migrations for your Pull Request, if the underlying data has changed. This is necessary in order to deploy your Pull Request on to our staging environment.\n\n\u003e [!NOTE]\n\u003e **Development Migrations**\n\u003e\n\u003e You do not need to run migrations against your development database, because Drizzle will have already pushed any changes to the docker container for you.\n\u003e\n\u003e Payload uses Drizzle ORM's powerful push mode to automatically sync data changes to your database for you while in development mode. By default, this is enabled and is the suggested workflow to using Postgres and Payload while doing local development.\n\n### Production Migrations\n\nMigrations will be required for non-development database environments.\n\n- Please refer to the offical [Payload Migration Documentation](https://payloadcms.com/docs/database/migrations)\n\n## Useful Links\n\n- [Payload Documentation](https://payloadcms.com/docs/getting-started/what-is-payload)\n- [Payload Migration Documentation](https://payloadcms.com/docs/database/migrations)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigitalgroundgame%2Fpragmatic-papers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdigitalgroundgame%2Fpragmatic-papers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigitalgroundgame%2Fpragmatic-papers/lists"}