{"id":17749739,"url":"https://github.com/stscoundrel/dictionary-revalidator","last_synced_at":"2026-01-02T12:05:10.747Z","repository":{"id":160591525,"uuid":"624800234","full_name":"stscoundrel/dictionary-revalidator","owner":"stscoundrel","description":"Kotlin / Spring Boot API for triggering ISR revalidations in online dictionaries","archived":false,"fork":false,"pushed_at":"2025-06-01T15:42:57.000Z","size":171,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-02T01:05:58.487Z","etag":null,"topics":["h2-database","isr","kotlin","maven","revalidation","spring","spring-boot"],"latest_commit_sha":null,"homepage":"https://dictionary-revalidator.onrender.com/health/","language":"Kotlin","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/stscoundrel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-04-07T09:35:37.000Z","updated_at":"2025-06-01T15:29:19.000Z","dependencies_parsed_at":"2024-02-10T16:30:51.573Z","dependency_job_id":"8c6a7441-c463-4692-bddd-3170ea2abfdd","html_url":"https://github.com/stscoundrel/dictionary-revalidator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"stscoundrel/kotlin-template","purl":"pkg:github/stscoundrel/dictionary-revalidator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stscoundrel%2Fdictionary-revalidator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stscoundrel%2Fdictionary-revalidator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stscoundrel%2Fdictionary-revalidator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stscoundrel%2Fdictionary-revalidator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stscoundrel","download_url":"https://codeload.github.com/stscoundrel/dictionary-revalidator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stscoundrel%2Fdictionary-revalidator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270014248,"owners_count":24512610,"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","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["h2-database","isr","kotlin","maven","revalidation","spring","spring-boot"],"created_at":"2024-10-26T11:24:43.063Z","updated_at":"2026-01-02T12:05:10.689Z","avatar_url":"https://github.com/stscoundrel.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dictionary Revalidator\n\nKotlin / Spring Boot API for triggering revalidation actions in various dictionary websites using incremental static generation.\n\nAbstracts a few  apikey / secret guarded endpoints in various dictionary projects under the same umbrella, allowing revalidation of pages using one API only.\n\n## Development\n\n`mvn clean \u0026\u0026 mvn spring-boot:run`\n\nThe app requires few env vars. See .env.example.\n\n## Build\n\nBuild Docker image:\n\n`docker-compose build`\n\nRun Docker image:\n\n`docker-compose up`\n\n## Why though\n\nThis is essentially just a web service version of existing revalidation scripts shipped with projects like\n\n- [Old Norse Dictionary](https://github.com/stscoundrel/cleasby-vigfusson-next)\n- [Old Icelandic Dictionary](https://github.com/stscoundrel/old-icelandic-zoega-next)\n- [Old Norwegian Dictionary](https://github.com/stscoundrel/old-norwegian-dictionary-next)\n- [Old Swedish Dictionary](https://github.com/stscoundrel/old-swedish-dictionary-next)\n- [Old Danish Dictionary](https://github.com/stscoundrel/old-danish-dictionary-next)\n\nEach of those sites contains too many statically generated pages to be deployed in one go to Vercel, as they hit Vercels per-build file limit. The solution has been to deploy them with only few core pages and use ISR to generate the pages as they are accessed for the first time. However, this first load may be bit too slow for casual browser and it actually consumes more resources than triggering API endpoint based revalidation. Considering that these sites are all hosted on free tiers, saving Vercels resources is both polite and required. Therefore, whenever new changes are deployed, new revalidation for tens of thousands of pages is needed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstscoundrel%2Fdictionary-revalidator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstscoundrel%2Fdictionary-revalidator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstscoundrel%2Fdictionary-revalidator/lists"}