{"id":35501864,"url":"https://github.com/maevsi/postgraphile","last_synced_at":"2026-04-30T05:04:00.990Z","repository":{"id":273671050,"uuid":"920468172","full_name":"maevsi/postgraphile","owner":"maevsi","description":"Vibetype's backend interface.","archived":false,"fork":false,"pushed_at":"2026-04-03T06:33:23.000Z","size":269,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-03T09:42:19.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://postgraphile.vibetype.app/graphiql","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/maevsi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","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":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["dargmuesli"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2025-01-22T07:51:15.000Z","updated_at":"2026-04-03T01:15:23.000Z","dependencies_parsed_at":"2026-04-03T01:00:27.140Z","dependency_job_id":null,"html_url":"https://github.com/maevsi/postgraphile","commit_stats":null,"previous_names":["maevsi/postgraphile"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/maevsi/postgraphile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maevsi%2Fpostgraphile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maevsi%2Fpostgraphile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maevsi%2Fpostgraphile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maevsi%2Fpostgraphile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maevsi","download_url":"https://codeload.github.com/maevsi/postgraphile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maevsi%2Fpostgraphile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31528751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2026-01-03T18:57:18.438Z","updated_at":"2026-04-07T21:01:38.509Z","avatar_url":"https://github.com/maevsi.png","language":"TypeScript","funding_links":["https://github.com/sponsors/dargmuesli"],"categories":[],"sub_categories":[],"readme":"# 🚀 @maevsi/postgraphile\n\n\u003e A blazing-fast GraphQL API layer for PostgreSQL, powering the Vibetype event community platform.\n\n## Overview\n\nThis is a production-ready **PostGraphile v5** server that automatically generates a powerful GraphQL API directly from your PostgreSQL schema. It's a core service of the [Vibetype](https://github.com/maevsi/vibetype) platform, seamlessly converting database changes into a secure, performant GraphQL interface.\n\n### ✨ Key Features\n\n- **🔄 Auto-Generated GraphQL API**: Full CRUD operations from your PostgreSQL schema\n- **🌍 PostGIS Support**: Built-in geospatial capabilities with `@graphile/postgis`\n- **🔐 JWT Authentication**: ES256 ECDSA-signed tokens with claim-based authorization\n- **⚡ Grafast Optimizations**: Deep SQL query optimization and N+1 prevention\n- **🎨 Amber Preset**: Sensible defaults for a modern development experience\n- **📦 TypeScript Ready**: Full type safety from database to API\n- **🐳 Docker Native**: Containerized with automatic pnpm setup\n\n## Quick Start\n\n### Prerequisites\n\n**Node.js**, **PostgreSQL** with Vibetype schema migrations applied via [sqitch](https://github.com/maevsi/sqitch), and **pnpm**.\n\n### Development\n\n```bash\npnpm install    # Install dependencies\npnpm run lint   # Lint code\n\n# Docker\ndocker build -t maevsi/postgraphile .\n```\n\n## Architecture\n\nThis service is part of the **Vibetype platform**, an event community ecosystem:\n\n```\n┌─────────────────────────────────────────────┐\n│     Frontend (Nuxt)                         │\n└──────────────┬──────────────────────────────┘\n               │ GraphQL\n┌──────────────▼──────────────────────────────┐\n│     GraphQL API (PostGraphile)              │\n└──────────────┬──────────────────────────────┘\n               │ SQL queries and mutations\n┌──────────────▼──────────────────────────────┐\n│     Database (PostgreSQL)                   │\n└──────────────▲──────────────────────────────┘\n               │ SQL schema\n┌──────────────┴──────────────────────────────┐\n│     Migrations (Sqitch)                     │\n└─────────────────────────────────────────────┘\n```\n\nSee [maevsi/stack](https://github.com/maevsi/stack) for the full Docker setup.\n\n## Project Structure\n\n```\nsrc/\n├── graphile.config.ts    # Main PostGraphile configuration\n├── graphile.ts           # Scripted logic\n└── environment.ts        # Type-safe environment utilities\n```\n\n### Authentication\n\nAuthentication uses ES256 (ECDSA) for signing JWTs; tokens use `postgraphile` as both issuer and audience and are represented in PostgreSQL by the composite type `vibetype.jwt`.\n\nThe signing keys and related secrets are best configured via environment variables in [maevsi/stack](https://github.com/maevsi/stack).\n\n\n### Docker\n\nThe included `docker-entrypoint.sh` automatically:\n- Loads environment variables from `/run/environment-variables` (Docker secrets)\n- Installs dependencies in development mode\n- Passes control to the `postgraphile` command\n\n## Resources\n\n- 📖 [PostGraphile Documentation](https://www.graphile.org/postgraphile/)\n- 🗺️ [PostGIS Reference](https://postgis.net/)\n- 🐘 [PostgreSQL Docs](https://www.postgresql.org/docs/)\n- 🎪 [Vibetype Platform](https://github.com/maevsi/vibetype)\n- 🏗️ [Full Stack (Docker Compose)](https://github.com/maevsi/stack)\n\n---\n\n**Questions or Issues?** [Open an issue](https://github.com/maevsi/postgraphile/issues), we're here to help!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaevsi%2Fpostgraphile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaevsi%2Fpostgraphile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaevsi%2Fpostgraphile/lists"}