{"id":16759563,"url":"https://github.com/enpaul/kodak","last_synced_at":"2025-03-16T08:26:38.581Z","repository":{"id":62574471,"uuid":"363760180","full_name":"enpaul/kodak","owner":"enpaul","description":"Serve auto-generated banners, previews, thumbnails, and more from any directory. Lightweight, simple, and designed for performance","archived":false,"fork":false,"pushed_at":"2022-03-10T01:16:51.000Z","size":583,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"devel","last_synced_at":"2025-02-22T21:35:25.868Z","etag":null,"topics":["image-preview","image-processing","microservice","thumbnails","web"],"latest_commit_sha":null,"homepage":"","language":"Python","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/enpaul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-02T22:09:42.000Z","updated_at":"2022-01-08T16:43:22.000Z","dependencies_parsed_at":"2022-11-03T18:52:40.383Z","dependency_job_id":null,"html_url":"https://github.com/enpaul/kodak","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enpaul%2Fkodak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enpaul%2Fkodak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enpaul%2Fkodak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enpaul%2Fkodak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enpaul","download_url":"https://codeload.github.com/enpaul/kodak/tar.gz/refs/heads/devel","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243844479,"owners_count":20357053,"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","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":["image-preview","image-processing","microservice","thumbnails","web"],"created_at":"2024-10-13T04:08:27.900Z","updated_at":"2025-03-16T08:26:38.537Z","avatar_url":"https://github.com/enpaul.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kodak\n\nWeb server for auto-generating banners, previews, thumbnails, and more from any directory.\nLightweight, simple, and designed for performance.\n\nDeveloped with [Poetry 1.0+](https://python-poetry.org/)\n\n## Goals\n\n- Support defining server-side manipulation specifications\n\n  ```\n  KODAK_MANIP_FOOBAR_CROP_VERTICAL=300\n  KODAK_MANIP_FOOBAR_SCALE_HORIZONTAL=1200\n  KODAK_MANIP_FOOBAR_SCALE_STRATEGY=absolute\n\n  KODAK_MANIP_FIZZBUZZ_NAME=black+white\n  KODAK_MANIP_FIZZBUZZ_BLACK_AND_WHITE=true\n  KODAK_MANIP_FIZZBUZZ_SCALE_HORIZONTAL=50\n  KODAK_MANIP_FIZZBUZZ_SCALE_STRATEGY=relative\n  ```\n\n- Support retrieving manipulated images based on server side configuration\n\n  ```\n  GET /image/\u003cname\u003e/foobar\n\n  GET /image/\u003cname\u003e/black+white\n  ```\n\n- Support optionally exposing full-resolution source images\n\n  ```\n  GET /image/\u003cname\u003e/original\n  ```\n\n- Support caching of generated image manipulations for reuse\n\n- Support [HTTP 410](https://httpstatuses.com/410) for indicating removed images and\n  manipulations\n\n- Support optional authentication with pre-generated access tokens\n\n- Support static file tree management for exposure via external web server (which is faster\n  than serving files with python)\n\n- Support automatic indexing of newly added image files\n\n- Support automatic indexing of removed image files\n\n- Support arbitrary source directory structure\n\n- Support Dockerized deployment\n\n- Support bare-metal deployment (via systemd)\n\n## Non-goals\n\n- Client-defined image manipulations through publicly exposed parameters\n\n  \u003e Manipulating images is- in the grand scheme of things- pretty resource intensive. Exposing\n  \u003e dynamic parameters that can be cycled through to generate hundreds or thousands of\n  \u003e permutations for every known image on a server could be used to either consume the\n  \u003e server's entire disk or server's entire CPU.\n\n- Upload functionality\n\n  \u003e This application should be as simple as possible. Lots of people have implemented file\n  \u003e upload systems, synchronizers, and managers way better than I have.\n\n- Robust and flexible access control\n\n  \u003e See above. Complex authentication can be added using a reverse proxy or any one of several\n  \u003e dozen options for 3rd party middleware. The provided authentication is supposed to be\n  \u003e dead simple for people who absolutely need the server to be private but absolutely cannot\n  \u003e implement something more complicated.\n\n- Pre-creation of image manipulations\n\n  \u003e The goal of this program is just-in-time creation of the manipulated assets with\n  \u003e aggressive caching; first load is slow, subsequent loads are fast. For this use case\n  \u003e there's no sense creating or storing an asset until it's known to be needed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenpaul%2Fkodak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenpaul%2Fkodak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenpaul%2Fkodak/lists"}