{"id":31055648,"url":"https://github.com/acrylicshrimp/devlog-backend","last_synced_at":"2025-09-15T04:54:35.051Z","repository":{"id":38966898,"uuid":"256440090","full_name":"AcrylicShrimp/devlog-backend","owner":"AcrylicShrimp","description":"A minimal devlog service.","archived":false,"fork":false,"pushed_at":"2023-01-07T17:10:58.000Z","size":1580,"stargazers_count":7,"open_issues_count":13,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-07T20:25:36.716Z","etag":null,"topics":["backend-service","blog","devlog","markdown","nodejs"],"latest_commit_sha":null,"homepage":"","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/AcrylicShrimp.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}},"created_at":"2020-04-17T08:01:39.000Z","updated_at":"2021-11-23T04:28:41.000Z","dependencies_parsed_at":"2023-02-07T17:32:08.176Z","dependency_job_id":null,"html_url":"https://github.com/AcrylicShrimp/devlog-backend","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/AcrylicShrimp/devlog-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcrylicShrimp%2Fdevlog-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcrylicShrimp%2Fdevlog-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcrylicShrimp%2Fdevlog-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcrylicShrimp%2Fdevlog-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AcrylicShrimp","download_url":"https://codeload.github.com/AcrylicShrimp/devlog-backend/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcrylicShrimp%2Fdevlog-backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275207872,"owners_count":25423896,"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-09-15T02:00:09.272Z","response_time":75,"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":["backend-service","blog","devlog","markdown","nodejs"],"created_at":"2025-09-15T04:54:33.210Z","updated_at":"2025-09-15T04:54:35.032Z","avatar_url":"https://github.com/AcrylicShrimp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# devlog-backend\n\nA minimal devlog service.\n\n## Features\n\n-   Markdown based posts\n-   Supports image uploading to `AWS S3`\n-   Supports thumbnails\n-   Supports [blurhash](https://blurha.sh)\n-   Supports [elasticsearch](https://www.elastic.co/)\n-   Supports access level\n-   Minimal administration APIs\n-   Generates sitemaps automatically\n-   SSR\n-   CDN\n\n## Environment variables\n\n| Variable                          | Description                                                                                                                                                                          | Related functionality      |\n| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------- |\n| `AWS_ACCESS_KEY_ID`               | AWS Access key ID                                                                                                                                                                    | Post images and thumbnails |\n| `AWS_SECRET_ACCESS_KEY`           | AWS Secret key                                                                                                                                                                       | Post images and thumbnails |\n| `AWS_REGION`                      | AWS region                                                                                                                                                                           | Post images and thumbnails |\n| `AWS_S3_BUCKET_NAME`              | AWS S3 bucket name                                                                                                                                                                   | Post images and thumbnails |\n| `AWS_S3_CACHE_CONTROL`            | AWS S3 cache control value (must be valid [Cache-Control value](https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Cache-Control) e.g. max-age=3600 defaults to 'max-age=86400') | Post images and thumbnails |\n| `TYPEORM_CONNECTION`              | [Typeorm setting](https://github.com/typeorm/typeorm/blob/master/docs/using-ormconfig.md#using-environment-variables)                                                                | Database                   |\n| `TYPEORM_HOST`                    | [Typeorm setting](https://github.com/typeorm/typeorm/blob/master/docs/using-ormconfig.md#using-environment-variables)                                                                | Database                   |\n| `TYPEORM_PORT`                    | [Typeorm setting](https://github.com/typeorm/typeorm/blob/master/docs/using-ormconfig.md#using-environment-variables)                                                                | Database                   |\n| `TYPEORM_USERNAME`                | [Typeorm setting](https://github.com/typeorm/typeorm/blob/master/docs/using-ormconfig.md#using-environment-variables)                                                                | Database                   |\n| `TYPEORM_PASSWORD`                | [Typeorm setting](https://github.com/typeorm/typeorm/blob/master/docs/using-ormconfig.md#using-environment-variables)                                                                | Database                   |\n| `TYPEORM_DATABASE`                | [Typeorm setting](https://github.com/typeorm/typeorm/blob/master/docs/using-ormconfig.md#using-environment-variables)                                                                | Database                   |\n| `ELASTICSEARCH_NODE_HOST`         | Hostname of the elasticsearch node (maybe `127.0.0.1`)                                                                                                                               | Elasticsearch              |\n| `ELASTICSEARCH_NODE_PORT`         | Port number of the elasticsearch node (maybe `9200`)                                                                                                                                 | Elasticsearch              |\n| `SITEMAP_BASE_URL`                | URL of the frontend index page for sitemaps (must be end with a slash e.g. `https://blog.ashrimp.dev/`)                                                                              | Sitemap                    |\n| `POST_BASE_URL`                   | URL of the frontend post page for sitemaps (must be end with a slash e.g. `https://blog.ashrimp.dev/posts/`)                                                                         | Sitemap                    |\n| `SSR_FRONTEND_URL`                | URL of the frontend post page for SSR (must be end with a slash e.g. `https://blog.ashrimp.dev/`)                                                                                    | SSR                        |\n| `SSR_FRONTEND_DIR`                | Path to the frontend directory                                                                                                                                                       | SSR                        |\n| `SSR_FRONTEND_SCRIPTS`            | Comma-separated list of script file names that must be executed during SSR                                                                                                           | SSR                        |\n| `SSR_FRONTEND_SCRIPT_ATTACHMENTS` | Comma-separated list of script URLs that must be attached to the end of body after SSR (e.g. `/index.js`)                                                                            | SSR                        |\n| `SSR_FRONTEND_EVENT`              | DOM event name that will be fired when the pages are ready to serve for SSR (defaults to `app-loaded`)                                                                               | SSR                        |\n| `SSR_FRONTEND_TIMEOUT`            | Timeout of the SSR rendering in milisecond (defaults to `5000`)                                                                                                                      | SSR                        |\n| `SSR_CACHE_EXPIRY`                | Expiry of the caches for SSR rendered pages in milisecond (defaults to `604800000`, the caches are automatically purged when any visible changes made)                               | SSR                        |\n| `CDN_BASE_URL`                    | URL of the CDN to serve images(**NOT** videos) (must be end with a slash e.g. `https://cdn.blog.ashrimp.dev/`)                                                                       | CDN                        |\n\n## Access Level\n\n`devlog-backend` supports access level control of each post.\n\n-   `public`: Posts can be listed and fetched by anonymous clients.\n-   `unlisted`: Posts cannot be listed, but **can** be fetched by anonymous clients.\n-   `private`: Posts can be listed and fetched by only authenticated clients.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facrylicshrimp%2Fdevlog-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facrylicshrimp%2Fdevlog-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facrylicshrimp%2Fdevlog-backend/lists"}