{"adoption": {"forks": 227, "observed_at": "2026-08-28T04:05:41.408095+00:00", "stars": 1827}, "canonical_url": "https://ross.abutalabs.com/products/graphile-starter", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Opinionated SaaS quick-start with pre-built user account and organization system for full-stack application development in React, Node.js, GraphQL and PostgreSQL. Powered by PostGraphile, TypeScript, Apollo Client, Graphile Worker, Graphile Migrate, GraphQL Code Generator, Ant Design and Next.js", "domain": ["web-development", "backend", "frontend", "databases", "developer-tools", "apis"], "enriched": true, "function": ["auth", "graphql", "web-framework", "api-framework", "orm", "database", "e2e-testing", "scheduling", "middleware", "ssr"], "health_score": 64, "homepage": "https://graphile-starter.herokuapp.com", "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["graphile/starter"], "name": "graphile/starter", "platform": ["cross-platform"], "pushed_at": "2026-03-23T11:51:30+00:00", "repo": "graphile/starter", "stars": 1827, "tags": ["saas-boilerplate", "postgraphile", "apollo-client", "nextjs", "graphile-worker", "graphile-migrate", "job-queue", "organizations", "user-accounts", "full-stack", "ant-design", "graphql-code-generator", "starter-kit", "boilerplate", "nodejs", "typescript", "react", "postgresql", "web-server"], "topics": ["starter", "postgraphile", "graphql", "node", "nodejs", "apollo-client", "eslint", "typescript", "job-queue", "postgresql", "graphile", "saas", "saas-boilerplate"], "urls": [], "use_cases": ["launch a SaaS web app quickly with auth and organizations already built", "go from idea to launch during a hack day", "bootstrap a client project with a full-stack React/Node/GraphQL/PostgreSQL foundation", "start a new project with PostGraphile and Graphile Worker pre-configured", "get user registration, sessions, and email flows out of the box", "set up a project with end-to-end and unit testing already wired up", "build a multi-tenant app with organization/team support"], "what_it_is": "Graphile Starter is an opinionated full-stack SaaS quick-start template built on React, Node.js, GraphQL, and PostgreSQL, powered by PostGraphile, TypeScript, Apollo Client, Graphile Worker, Graphile Migrate, GraphQL Code Generator, Ant Design, and Next.js. It ships with a pre-built user registration and organization (teams/companies) system, session management, an optimized job queue, database migrations, and pre-configured tooling including ESLint, Prettier, Jest, and Cypress tests.", "when_to_avoid": ["you're a beginner - the project explicitly states it is not for beginners and is overwhelming as a first exposure to these tools", "you want to pick your own stack components rather than adopt an opinionated set", "you don't want PostgreSQL as your database or GraphQL as your API layer", "you need a lightweight minimal template rather than a full-featured one"], "when_to_choose": ["you're already comfortable with Node.js, PostgreSQL, GraphQL, PostGraphile, React, and TypeScript", "you want an opinionated, batteries-included SaaS foundation with accounts and organizations", "you value deeply integrated tooling (migrations, job queue, tests, linting) from day one", "you're building a project large or small and want maximum productivity from the start"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/graphile-starter", "repo": "graphile/starter", "role": "main", "score": 56}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.408095+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:32:21.291117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "97ebce4641baf7a3a8b8d250712aec47592e3e85c64f237ff0bbda3a04e1fdf8", "fetched_at": "2026-08-28T04:05:41.408095+00:00", "kind": "readme", "missing": false, "url": "https://github.com/graphile/starter"}, {"content_hash": "bdae13ba68ea94d41a736402564286b283f8aefb769e53bbb442baaa61766e4f", "fetched_at": "2026-08-29T10:58:25.217047+00:00", "kind": "homepage", "missing": false, "url": "https://graphile-starter.herokuapp.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 73, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2697, "days_push": 163, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 56, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}