[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-encore-encore-go-cron":3,"mdc--dfszfw-key":40,"related-repo-encore-encore-go-cron":621,"related-org-encore-encore-go-cron":721},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":35,"sourceUrl":38,"mdContent":39},"encore-go-cron","schedule recurring jobs in Encore Go","Schedule periodic \u002F recurring work in Encore Go using `cron.NewJob` from `encore.dev\u002Fcron`. Covers `Every: \"1h\"` interval syntax and `Schedule: \"0 9 * * 1\"` cron expressions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"encore","Encore","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fencore.png","encoredev",[13,17,20,21,24],{"name":14,"slug":15,"type":16},"Backend","backend","tag",{"name":18,"slug":19,"type":16},"Automation","automation",{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},"Scheduling","scheduling",{"name":25,"slug":26,"type":16},"Go","go",26,"https:\u002F\u002Fgithub.com\u002Fencoredev\u002Fskills","2026-05-16T06:00:02.210412",null,5,[33,34],"claude-code","skills",{"repoUrl":28,"stars":27,"forks":31,"topics":36,"description":37},[33,34],"Agent Skills for development with Encore.","https:\u002F\u002Fgithub.com\u002Fencoredev\u002Fskills\u002Ftree\u002FHEAD\u002Fencore\u002Fgo-cron","---\nname: encore-go-cron\ndescription: >-\n  Schedule periodic \u002F recurring work in Encore Go using `cron.NewJob` from `encore.dev\u002Fcron`. Covers `Every: \"1h\"` interval syntax and `Schedule: \"0 9 * * 1\"` cron expressions.\nwhen_to_use: >-\n  User wants to run a Go job on a schedule — anything with the words schedule, scheduled, daily, hourly, weekly, periodic, recurring, every N minutes\u002Fhours, \"at HH:MM UTC\", midnight, batch job, aggregation job, nightly, cleanup job, or background work that runs on a timer rather than in response to a request. Trigger phrases: \"every day at 02:00 UTC\", \"daily aggregation\", \"run hourly\", \"scheduled task\", \"cron\", \"nightly cleanup\", \"on a schedule\".\n---\n\n# Encore Go Cron Jobs\n\n## Instructions\n\nA `cron.NewJob` declaration in Encore Go ties a schedule to an existing `\u002F\u002Fencore:api` endpoint. The endpoint runs at the chosen cadence. Declare the job as a package-level variable — not inside a function.\n\n```go\npackage cleanup\n\nimport (\n    \"context\"\n    \"encore.dev\u002Fcron\"\n)\n\n\u002F\u002F 1. The endpoint to call (typically private: \u002F\u002Fencore:api private)\n\u002F\u002Fencore:api private\nfunc CleanupExpiredSessions(ctx context.Context) error {\n    \u002F\u002F Cleanup logic\n    return nil\n}\n\n\u002F\u002F 2. Package-level cron declaration\nvar _ = cron.NewJob(\"cleanup-sessions\", cron.JobConfig{\n    Title:    \"Clean up expired sessions\",\n    Schedule: \"0 * * * *\", \u002F\u002F Every hour\n    Endpoint: CleanupExpiredSessions,\n})\n```\n\n## Schedule Formats\n\n| Field | Example | Description |\n|---|---|---|\n| `Every` | `\"1h\"`, `\"30m\"`, `\"6h\"` | Simple interval. **Must divide 24h evenly** — `\"7h\"` is invalid. |\n| `Schedule` | `\"0 9 * * 1\"` | Standard cron expression (5 fields, UTC). |\n\n### Common cron expressions\n\n| Cron | Meaning |\n|---|---|\n| `\"0 * * * *\"` | Every hour, on the hour |\n| `\"0 2 * * *\"` | Daily at 02:00 UTC |\n| `\"0 0 * * 0\"` | Weekly on Sunday at midnight UTC |\n| `\"0 4 15 * *\"` | 04:00 UTC on the 15th of each month |\n\n## Important behaviour\n\n- **Cron jobs do not execute when running locally with `encore run`.** Only deployed environments fire crons.\n- The cron endpoint should be `private` so it can't be triggered externally — only the cron scheduler should call it.\n- All times in `Schedule` are UTC. Convert from local time when designing the schedule.\n- The endpoint must be defined at module load — declare it before the `cron.NewJob` reference.\n\n## Guidelines\n\n- Use `Every` for \"run on a regular interval\" (must divide 24h).\n- Use `Schedule` for specific times of day or days of week.\n- Keep endpoint logic idempotent: a cron may fire late or be retried in a redeploy window.\n- For event-driven background work (not time-driven), use the `encore-go-pubsub` skill instead.\n",{"data":41,"body":43},{"name":4,"description":6,"when_to_use":42},"User wants to run a Go job on a schedule — anything with the words schedule, scheduled, daily, hourly, weekly, periodic, recurring, every N minutes\u002Fhours, \"at HH:MM UTC\", midnight, batch job, aggregation job, nightly, cleanup job, or background work that runs on a timer rather than in response to a request. Trigger phrases: \"every day at 02:00 UTC\", \"daily aggregation\", \"run hourly\", \"scheduled task\", \"cron\", \"nightly cleanup\", \"on a schedule\".",{"type":44,"children":45},"root",[46,55,62,85,280,286,402,409,499,505,565,571,615],{"type":47,"tag":48,"props":49,"children":51},"element","h1",{"id":50},"encore-go-cron-jobs",[52],{"type":53,"value":54},"text","Encore Go Cron Jobs",{"type":47,"tag":56,"props":57,"children":59},"h2",{"id":58},"instructions",[60],{"type":53,"value":61},"Instructions",{"type":47,"tag":63,"props":64,"children":65},"p",{},[66,68,75,77,83],{"type":53,"value":67},"A ",{"type":47,"tag":69,"props":70,"children":72},"code",{"className":71},[],[73],{"type":53,"value":74},"cron.NewJob",{"type":53,"value":76}," declaration in Encore Go ties a schedule to an existing ",{"type":47,"tag":69,"props":78,"children":80},{"className":79},[],[81],{"type":53,"value":82},"\u002F\u002Fencore:api",{"type":53,"value":84}," endpoint. The endpoint runs at the chosen cadence. Declare the job as a package-level variable — not inside a function.",{"type":47,"tag":86,"props":87,"children":91},"pre",{"className":88,"code":89,"language":26,"meta":90,"style":90},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","package cleanup\n\nimport (\n    \"context\"\n    \"encore.dev\u002Fcron\"\n)\n\n\u002F\u002F 1. The endpoint to call (typically private: \u002F\u002Fencore:api private)\n\u002F\u002Fencore:api private\nfunc CleanupExpiredSessions(ctx context.Context) error {\n    \u002F\u002F Cleanup logic\n    return nil\n}\n\n\u002F\u002F 2. Package-level cron declaration\nvar _ = cron.NewJob(\"cleanup-sessions\", cron.JobConfig{\n    Title:    \"Clean up expired sessions\",\n    Schedule: \"0 * * * *\", \u002F\u002F Every hour\n    Endpoint: CleanupExpiredSessions,\n})\n","",[92],{"type":47,"tag":69,"props":93,"children":94},{"__ignoreMap":90},[95,106,116,125,134,142,151,159,173,182,191,200,209,218,226,235,244,253,262,271],{"type":47,"tag":96,"props":97,"children":100},"span",{"class":98,"line":99},"line",1,[101],{"type":47,"tag":96,"props":102,"children":103},{},[104],{"type":53,"value":105},"package cleanup\n",{"type":47,"tag":96,"props":107,"children":109},{"class":98,"line":108},2,[110],{"type":47,"tag":96,"props":111,"children":113},{"emptyLinePlaceholder":112},true,[114],{"type":53,"value":115},"\n",{"type":47,"tag":96,"props":117,"children":119},{"class":98,"line":118},3,[120],{"type":47,"tag":96,"props":121,"children":122},{},[123],{"type":53,"value":124},"import (\n",{"type":47,"tag":96,"props":126,"children":128},{"class":98,"line":127},4,[129],{"type":47,"tag":96,"props":130,"children":131},{},[132],{"type":53,"value":133},"    \"context\"\n",{"type":47,"tag":96,"props":135,"children":136},{"class":98,"line":31},[137],{"type":47,"tag":96,"props":138,"children":139},{},[140],{"type":53,"value":141},"    \"encore.dev\u002Fcron\"\n",{"type":47,"tag":96,"props":143,"children":145},{"class":98,"line":144},6,[146],{"type":47,"tag":96,"props":147,"children":148},{},[149],{"type":53,"value":150},")\n",{"type":47,"tag":96,"props":152,"children":154},{"class":98,"line":153},7,[155],{"type":47,"tag":96,"props":156,"children":157},{"emptyLinePlaceholder":112},[158],{"type":53,"value":115},{"type":47,"tag":96,"props":160,"children":162},{"class":98,"line":161},8,[163,168],{"type":47,"tag":96,"props":164,"children":165},{},[166],{"type":53,"value":167},"\u002F\u002F 1. The endpoint to call (typically private:",{"type":47,"tag":96,"props":169,"children":170},{},[171],{"type":53,"value":172}," \u002F\u002Fencore:api private)\n",{"type":47,"tag":96,"props":174,"children":176},{"class":98,"line":175},9,[177],{"type":47,"tag":96,"props":178,"children":179},{},[180],{"type":53,"value":181},"\u002F\u002Fencore:api private\n",{"type":47,"tag":96,"props":183,"children":185},{"class":98,"line":184},10,[186],{"type":47,"tag":96,"props":187,"children":188},{},[189],{"type":53,"value":190},"func CleanupExpiredSessions(ctx context.Context) error {\n",{"type":47,"tag":96,"props":192,"children":194},{"class":98,"line":193},11,[195],{"type":47,"tag":96,"props":196,"children":197},{},[198],{"type":53,"value":199},"    \u002F\u002F Cleanup logic\n",{"type":47,"tag":96,"props":201,"children":203},{"class":98,"line":202},12,[204],{"type":47,"tag":96,"props":205,"children":206},{},[207],{"type":53,"value":208},"    return nil\n",{"type":47,"tag":96,"props":210,"children":212},{"class":98,"line":211},13,[213],{"type":47,"tag":96,"props":214,"children":215},{},[216],{"type":53,"value":217},"}\n",{"type":47,"tag":96,"props":219,"children":221},{"class":98,"line":220},14,[222],{"type":47,"tag":96,"props":223,"children":224},{"emptyLinePlaceholder":112},[225],{"type":53,"value":115},{"type":47,"tag":96,"props":227,"children":229},{"class":98,"line":228},15,[230],{"type":47,"tag":96,"props":231,"children":232},{},[233],{"type":53,"value":234},"\u002F\u002F 2. Package-level cron declaration\n",{"type":47,"tag":96,"props":236,"children":238},{"class":98,"line":237},16,[239],{"type":47,"tag":96,"props":240,"children":241},{},[242],{"type":53,"value":243},"var _ = cron.NewJob(\"cleanup-sessions\", cron.JobConfig{\n",{"type":47,"tag":96,"props":245,"children":247},{"class":98,"line":246},17,[248],{"type":47,"tag":96,"props":249,"children":250},{},[251],{"type":53,"value":252},"    Title:    \"Clean up expired sessions\",\n",{"type":47,"tag":96,"props":254,"children":256},{"class":98,"line":255},18,[257],{"type":47,"tag":96,"props":258,"children":259},{},[260],{"type":53,"value":261},"    Schedule: \"0 * * * *\", \u002F\u002F Every hour\n",{"type":47,"tag":96,"props":263,"children":265},{"class":98,"line":264},19,[266],{"type":47,"tag":96,"props":267,"children":268},{},[269],{"type":53,"value":270},"    Endpoint: CleanupExpiredSessions,\n",{"type":47,"tag":96,"props":272,"children":274},{"class":98,"line":273},20,[275],{"type":47,"tag":96,"props":276,"children":277},{},[278],{"type":53,"value":279},"})\n",{"type":47,"tag":56,"props":281,"children":283},{"id":282},"schedule-formats",[284],{"type":53,"value":285},"Schedule Formats",{"type":47,"tag":287,"props":288,"children":289},"table",{},[290,314],{"type":47,"tag":291,"props":292,"children":293},"thead",{},[294],{"type":47,"tag":295,"props":296,"children":297},"tr",{},[298,304,309],{"type":47,"tag":299,"props":300,"children":301},"th",{},[302],{"type":53,"value":303},"Field",{"type":47,"tag":299,"props":305,"children":306},{},[307],{"type":53,"value":308},"Example",{"type":47,"tag":299,"props":310,"children":311},{},[312],{"type":53,"value":313},"Description",{"type":47,"tag":315,"props":316,"children":317},"tbody",{},[318,376],{"type":47,"tag":295,"props":319,"children":320},{},[321,331,355],{"type":47,"tag":322,"props":323,"children":324},"td",{},[325],{"type":47,"tag":69,"props":326,"children":328},{"className":327},[],[329],{"type":53,"value":330},"Every",{"type":47,"tag":322,"props":332,"children":333},{},[334,340,342,348,349],{"type":47,"tag":69,"props":335,"children":337},{"className":336},[],[338],{"type":53,"value":339},"\"1h\"",{"type":53,"value":341},", ",{"type":47,"tag":69,"props":343,"children":345},{"className":344},[],[346],{"type":53,"value":347},"\"30m\"",{"type":53,"value":341},{"type":47,"tag":69,"props":350,"children":352},{"className":351},[],[353],{"type":53,"value":354},"\"6h\"",{"type":47,"tag":322,"props":356,"children":357},{},[358,360,366,368,374],{"type":53,"value":359},"Simple interval. ",{"type":47,"tag":361,"props":362,"children":363},"strong",{},[364],{"type":53,"value":365},"Must divide 24h evenly",{"type":53,"value":367}," — ",{"type":47,"tag":69,"props":369,"children":371},{"className":370},[],[372],{"type":53,"value":373},"\"7h\"",{"type":53,"value":375}," is invalid.",{"type":47,"tag":295,"props":377,"children":378},{},[379,388,397],{"type":47,"tag":322,"props":380,"children":381},{},[382],{"type":47,"tag":69,"props":383,"children":385},{"className":384},[],[386],{"type":53,"value":387},"Schedule",{"type":47,"tag":322,"props":389,"children":390},{},[391],{"type":47,"tag":69,"props":392,"children":394},{"className":393},[],[395],{"type":53,"value":396},"\"0 9 * * 1\"",{"type":47,"tag":322,"props":398,"children":399},{},[400],{"type":53,"value":401},"Standard cron expression (5 fields, UTC).",{"type":47,"tag":403,"props":404,"children":406},"h3",{"id":405},"common-cron-expressions",[407],{"type":53,"value":408},"Common cron expressions",{"type":47,"tag":287,"props":410,"children":411},{},[412,428],{"type":47,"tag":291,"props":413,"children":414},{},[415],{"type":47,"tag":295,"props":416,"children":417},{},[418,423],{"type":47,"tag":299,"props":419,"children":420},{},[421],{"type":53,"value":422},"Cron",{"type":47,"tag":299,"props":424,"children":425},{},[426],{"type":53,"value":427},"Meaning",{"type":47,"tag":315,"props":429,"children":430},{},[431,448,465,482],{"type":47,"tag":295,"props":432,"children":433},{},[434,443],{"type":47,"tag":322,"props":435,"children":436},{},[437],{"type":47,"tag":69,"props":438,"children":440},{"className":439},[],[441],{"type":53,"value":442},"\"0 * * * *\"",{"type":47,"tag":322,"props":444,"children":445},{},[446],{"type":53,"value":447},"Every hour, on the hour",{"type":47,"tag":295,"props":449,"children":450},{},[451,460],{"type":47,"tag":322,"props":452,"children":453},{},[454],{"type":47,"tag":69,"props":455,"children":457},{"className":456},[],[458],{"type":53,"value":459},"\"0 2 * * *\"",{"type":47,"tag":322,"props":461,"children":462},{},[463],{"type":53,"value":464},"Daily at 02:00 UTC",{"type":47,"tag":295,"props":466,"children":467},{},[468,477],{"type":47,"tag":322,"props":469,"children":470},{},[471],{"type":47,"tag":69,"props":472,"children":474},{"className":473},[],[475],{"type":53,"value":476},"\"0 0 * * 0\"",{"type":47,"tag":322,"props":478,"children":479},{},[480],{"type":53,"value":481},"Weekly on Sunday at midnight UTC",{"type":47,"tag":295,"props":483,"children":484},{},[485,494],{"type":47,"tag":322,"props":486,"children":487},{},[488],{"type":47,"tag":69,"props":489,"children":491},{"className":490},[],[492],{"type":53,"value":493},"\"0 4 15 * *\"",{"type":47,"tag":322,"props":495,"children":496},{},[497],{"type":53,"value":498},"04:00 UTC on the 15th of each month",{"type":47,"tag":56,"props":500,"children":502},{"id":501},"important-behaviour",[503],{"type":53,"value":504},"Important behaviour",{"type":47,"tag":506,"props":507,"children":508},"ul",{},[509,528,541,553],{"type":47,"tag":510,"props":511,"children":512},"li",{},[513,526],{"type":47,"tag":361,"props":514,"children":515},{},[516,518,524],{"type":53,"value":517},"Cron jobs do not execute when running locally with ",{"type":47,"tag":69,"props":519,"children":521},{"className":520},[],[522],{"type":53,"value":523},"encore run",{"type":53,"value":525},".",{"type":53,"value":527}," Only deployed environments fire crons.",{"type":47,"tag":510,"props":529,"children":530},{},[531,533,539],{"type":53,"value":532},"The cron endpoint should be ",{"type":47,"tag":69,"props":534,"children":536},{"className":535},[],[537],{"type":53,"value":538},"private",{"type":53,"value":540}," so it can't be triggered externally — only the cron scheduler should call it.",{"type":47,"tag":510,"props":542,"children":543},{},[544,546,551],{"type":53,"value":545},"All times in ",{"type":47,"tag":69,"props":547,"children":549},{"className":548},[],[550],{"type":53,"value":387},{"type":53,"value":552}," are UTC. Convert from local time when designing the schedule.",{"type":47,"tag":510,"props":554,"children":555},{},[556,558,563],{"type":53,"value":557},"The endpoint must be defined at module load — declare it before the ",{"type":47,"tag":69,"props":559,"children":561},{"className":560},[],[562],{"type":53,"value":74},{"type":53,"value":564}," reference.",{"type":47,"tag":56,"props":566,"children":568},{"id":567},"guidelines",[569],{"type":53,"value":570},"Guidelines",{"type":47,"tag":506,"props":572,"children":573},{},[574,586,597,602],{"type":47,"tag":510,"props":575,"children":576},{},[577,579,584],{"type":53,"value":578},"Use ",{"type":47,"tag":69,"props":580,"children":582},{"className":581},[],[583],{"type":53,"value":330},{"type":53,"value":585}," for \"run on a regular interval\" (must divide 24h).",{"type":47,"tag":510,"props":587,"children":588},{},[589,590,595],{"type":53,"value":578},{"type":47,"tag":69,"props":591,"children":593},{"className":592},[],[594],{"type":53,"value":387},{"type":53,"value":596}," for specific times of day or days of week.",{"type":47,"tag":510,"props":598,"children":599},{},[600],{"type":53,"value":601},"Keep endpoint logic idempotent: a cron may fire late or be retried in a redeploy window.",{"type":47,"tag":510,"props":603,"children":604},{},[605,607,613],{"type":53,"value":606},"For event-driven background work (not time-driven), use the ",{"type":47,"tag":69,"props":608,"children":610},{"className":609},[],[611],{"type":53,"value":612},"encore-go-pubsub",{"type":53,"value":614}," skill instead.",{"type":47,"tag":616,"props":617,"children":618},"style",{},[619],{"type":53,"value":620},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":622,"total":720},[623,637,649,665,681,693,705],{"slug":624,"name":624,"fn":625,"description":626,"org":627,"tags":628,"stars":27,"repoUrl":28,"updatedAt":636},"encore-api","build type-safe APIs with Encore","Define typed API endpoints in Encore.ts using `api(...)` from `encore.dev\u002Fapi`. Covers typed request\u002Fresponse interfaces, path\u002Fquery\u002Fheader\u002Fcookie params, request validation, and `APIError`. For raw endpoints (`api.raw()`) and inbound webhooks, use `encore-webhook` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[629,632,633],{"name":630,"slug":631,"type":16},"API Development","api-development",{"name":9,"slug":8,"type":16},{"name":634,"slug":635,"type":16},"TypeScript","typescript","2026-04-06T18:09:46.044101",{"slug":638,"name":638,"fn":639,"description":640,"org":641,"tags":642,"stars":27,"repoUrl":28,"updatedAt":648},"encore-auth","implement Encore.ts authentication","Protect Encore.ts endpoints with authentication and authorize callers. Covers `authHandler`, `Gateway`, `getAuthData`, and `auth: true`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[643,646,647],{"name":644,"slug":645,"type":16},"Auth","auth",{"name":9,"slug":8,"type":16},{"name":634,"slug":635,"type":16},"2026-04-06T18:09:47.336322",{"slug":650,"name":650,"fn":651,"description":652,"org":653,"tags":654,"stars":27,"repoUrl":28,"updatedAt":664},"encore-bucket","store files in Encore.ts buckets","Store unstructured files in Encore.ts using `Bucket` from `encore.dev\u002Fstorage\u002Fobjects` — uploads, images, documents, blobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[655,656,657,660,663],{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":658,"slug":659,"type":16},"File Storage","file-storage",{"name":661,"slug":662,"type":16},"File Uploads","file-uploads",{"name":634,"slug":635,"type":16},"2026-05-16T05:59:52.813772",{"slug":666,"name":666,"fn":667,"description":668,"org":669,"tags":670,"stars":27,"repoUrl":28,"updatedAt":680},"encore-cache","cache data in Redis with Encore.ts","Cache data in Redis from Encore.ts using `CacheCluster` and typed keyspaces from `encore.dev\u002Fstorage\u002Fcache`. Type-safe key\u002Fvalue access with TTLs, atomic increments, and per-keyspace data shapes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[671,672,675,676,679],{"name":14,"slug":15,"type":16},{"name":673,"slug":674,"type":16},"Caching","caching",{"name":9,"slug":8,"type":16},{"name":677,"slug":678,"type":16},"Redis","redis",{"name":634,"slug":635,"type":16},"2026-05-16T05:59:56.808328",{"slug":682,"name":682,"fn":683,"description":684,"org":685,"tags":686,"stars":27,"repoUrl":28,"updatedAt":692},"encore-code-review","review Encore.ts code","Review existing Encore.ts code for best practices and common anti-patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[687,690,691],{"name":688,"slug":689,"type":16},"Code Review","code-review",{"name":9,"slug":8,"type":16},{"name":634,"slug":635,"type":16},"2026-04-06T18:10:01.123999",{"slug":694,"name":694,"fn":695,"description":696,"org":697,"tags":698,"stars":27,"repoUrl":28,"updatedAt":704},"encore-cron","schedule recurring jobs in Encore.ts","Schedule periodic \u002F recurring work in Encore.ts using `CronJob` from `encore.dev\u002Fcron`. Covers `every: \"1h\"` interval syntax and `schedule: \"0 9 * * 1\"` cron expressions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[699,700,701,702,703],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},{"name":634,"slug":635,"type":16},"2026-05-16T05:59:54.146651",{"slug":706,"name":706,"fn":707,"description":708,"org":709,"tags":710,"stars":27,"repoUrl":28,"updatedAt":719},"encore-database","build Encore databases","Work with PostgreSQL in Encore.ts using `SQLDatabase` from `encore.dev\u002Fstorage\u002Fsqldb` — schema migrations and SQL queries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[711,714,715,718],{"name":712,"slug":713,"type":16},"Database","database",{"name":9,"slug":8,"type":16},{"name":716,"slug":717,"type":16},"ORM","orm",{"name":634,"slug":635,"type":16},"2026-04-06T18:09:54.823017",28,{"items":722,"total":720},[723,729,735,743,751,757,765,772,789,806,816,827],{"slug":624,"name":624,"fn":625,"description":626,"org":724,"tags":725,"stars":27,"repoUrl":28,"updatedAt":636},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[726,727,728],{"name":630,"slug":631,"type":16},{"name":9,"slug":8,"type":16},{"name":634,"slug":635,"type":16},{"slug":638,"name":638,"fn":639,"description":640,"org":730,"tags":731,"stars":27,"repoUrl":28,"updatedAt":648},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[732,733,734],{"name":644,"slug":645,"type":16},{"name":9,"slug":8,"type":16},{"name":634,"slug":635,"type":16},{"slug":650,"name":650,"fn":651,"description":652,"org":736,"tags":737,"stars":27,"repoUrl":28,"updatedAt":664},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[738,739,740,741,742],{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":658,"slug":659,"type":16},{"name":661,"slug":662,"type":16},{"name":634,"slug":635,"type":16},{"slug":666,"name":666,"fn":667,"description":668,"org":744,"tags":745,"stars":27,"repoUrl":28,"updatedAt":680},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[746,747,748,749,750],{"name":14,"slug":15,"type":16},{"name":673,"slug":674,"type":16},{"name":9,"slug":8,"type":16},{"name":677,"slug":678,"type":16},{"name":634,"slug":635,"type":16},{"slug":682,"name":682,"fn":683,"description":684,"org":752,"tags":753,"stars":27,"repoUrl":28,"updatedAt":692},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[754,755,756],{"name":688,"slug":689,"type":16},{"name":9,"slug":8,"type":16},{"name":634,"slug":635,"type":16},{"slug":694,"name":694,"fn":695,"description":696,"org":758,"tags":759,"stars":27,"repoUrl":28,"updatedAt":704},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[760,761,762,763,764],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},{"name":634,"slug":635,"type":16},{"slug":706,"name":706,"fn":707,"description":708,"org":766,"tags":767,"stars":27,"repoUrl":28,"updatedAt":719},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[768,769,770,771],{"name":712,"slug":713,"type":16},{"name":9,"slug":8,"type":16},{"name":716,"slug":717,"type":16},{"name":634,"slug":635,"type":16},{"slug":773,"name":773,"fn":774,"description":775,"org":776,"tags":777,"stars":27,"repoUrl":28,"updatedAt":788},"encore-frontend","connect frontend to Encore backend","Connect a frontend application (React, Next.js, Vue, Svelte, etc.) to an Encore.ts backend.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[778,779,782,785],{"name":9,"slug":8,"type":16},{"name":780,"slug":781,"type":16},"Frontend","frontend",{"name":783,"slug":784,"type":16},"Next.js","next-js",{"name":786,"slug":787,"type":16},"React","react","2026-04-06T18:09:56.091006",{"slug":790,"name":790,"fn":791,"description":792,"org":793,"tags":794,"stars":27,"repoUrl":28,"updatedAt":805},"encore-getting-started","build and run applications with Encore.ts","Bootstrap a brand-new Encore.ts project from zero. Only for first-time CLI install and `encore app create` — not for architecture or feature questions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[795,796,797,798,801,802],{"name":630,"slug":631,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":799,"slug":800,"type":16},"Local Development","local-development",{"name":634,"slug":635,"type":16},{"name":803,"slug":804,"type":16},"Web Development","web-development","2026-04-06T18:10:04.885446",{"slug":807,"name":807,"fn":808,"description":809,"org":810,"tags":811,"stars":27,"repoUrl":28,"updatedAt":815},"encore-go-api","build APIs with Encore Go","Define typed API endpoints in Encore Go using `\u002F\u002Fencore:api` annotations. Covers typed request\u002Fresponse structs, path\u002Fquery\u002Fheader\u002Fcookie params, and error returns. For raw endpoints (`\u002F\u002Fencore:api raw`) and inbound webhooks, use `encore-go-webhook` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[812,813,814],{"name":630,"slug":631,"type":16},{"name":9,"slug":8,"type":16},{"name":25,"slug":26,"type":16},"2026-04-06T18:09:48.578781",{"slug":817,"name":817,"fn":818,"description":819,"org":820,"tags":821,"stars":27,"repoUrl":28,"updatedAt":826},"encore-go-auth","implement authentication with Encore Go","Protect Encore Go endpoints with authentication and authorize callers. Covers `auth.AuthHandler`, `auth.UserID`, the `Authorization` header, and `\u002F\u002Fencore:api auth`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[822,823,824,825],{"name":644,"slug":645,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":25,"slug":26,"type":16},"2026-04-06T18:09:51.065102",{"slug":828,"name":828,"fn":829,"description":830,"org":831,"tags":832,"stars":27,"repoUrl":28,"updatedAt":840},"encore-go-bucket","store files in Encore Go buckets","Store unstructured files in Encore Go using `objects.NewBucket` from `encore.dev\u002Fstorage\u002Fobjects` — uploads, images, documents, blobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[833,834,835,836,837],{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":658,"slug":659,"type":16},{"name":25,"slug":26,"type":16},{"name":838,"slug":839,"type":16},"Storage","storage","2026-05-16T06:00:03.633918"]