{"id":23639767,"url":"https://github.com/yammerjp/awkblog","last_synced_at":"2025-11-09T17:30:21.743Z","repository":{"id":151960375,"uuid":"613526377","full_name":"yammerjp/awkblog","owner":"yammerjp","description":"weblog implimentation by awk","archived":false,"fork":false,"pushed_at":"2024-10-14T22:12:18.000Z","size":6480,"stargazers_count":33,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-28T08:19:14.833Z","etag":null,"topics":["awk","blog","gawk"],"latest_commit_sha":null,"homepage":"https://awkblog.net","language":"Awk","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/yammerjp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-03-13T18:39:05.000Z","updated_at":"2024-10-14T12:04:46.000Z","dependencies_parsed_at":"2023-10-16T14:22:22.178Z","dependency_job_id":"1f685aa1-2e0a-458d-b9ea-57debae1fcf7","html_url":"https://github.com/yammerjp/awkblog","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yammerjp%2Fawkblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yammerjp%2Fawkblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yammerjp%2Fawkblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yammerjp%2Fawkblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yammerjp","download_url":"https://codeload.github.com/yammerjp/awkblog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239576797,"owners_count":19662113,"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":["awk","blog","gawk"],"created_at":"2024-12-28T08:19:10.772Z","updated_at":"2025-11-09T17:30:21.706Z","avatar_url":"https://github.com/yammerjp.png","language":"Awk","readme":"# awkblog\n\nawkblog is an AWK-based blogging platform that demonstrates AWK's capability to build full-fledged web applications. It features GitHub OAuth, Markdown support, and optional S3 image hosting, showcasing that AWK can be used for more than just text processing.\n\n\u003cdiv style=\"text-align: center;\"\u003e\n    \u003cimg src=\"static/assets/awkblog-icon.png\" height=\"200\" alt=\"awkblog logo\"\u003e\n\u003c/div\u003e\n\n## Getting Started\n\n```shell\n\n./bin/setup.sh\ncp .env.example .env\n# By default, login uses a mock server.\n# If you want to use a real GitHub account, set up the GitHub OAuth App and configure your confidential information.\n# https://github.com/settings/applications/new\n# Authorization callback URL: http://localhost:4567/oauth-callback\n# Write OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET\n# vim .env\ndocker compose up -d\n# open browser localhost:4567\n```\n\n\n## Features\n\n- Blog platform built entirely with AWK\n- GitHub OAuth authentication\n- Markdown support for posts\n- Custom CSS styling for each blog\n- RSS feed generation\n- Image uploads to S3 (optional)\n- Multi-user support\n\n## Architecture\n\nawkblog is a web application written primarily in AWK, with some shell scripting for setup and management. It uses:\n\n- AWK for the core application logic and request handling\n- PostgreSQL for data storage\n- Nginx for reverse proxy\n- Docker for containerization and easy deployment\n- GitHub OAuth for authentication\n- Amazon S3 for image storage (optional)\n\n## Configuration\n\nThe main configuration is done through environment variables. Copy `.env.example` to `.env` and adjust the values as needed:\n\n- `OAUTH_CLIENT_ID`, `OAUTH_CLIENT_SECRET`, and `OAUTH_CALLBACK_URL`: GitHub OAuth configuration\n- `GITHUB_LOGIN_SERVER`: The URL of the GitHub login server for GitHub OAuth\n- `GITHUB_API_SERVER`: The URL of the GitHub API server for GitHub OAuth\n- `AWKBLOG_HOSTNAME`: The public URL of your awkblog instance\n- `AWKBLOG_WORKERS`: The number of request handler processes\n- `NOT_USE_AWS_S3`: If you don't want to use AWS S3 for image uploads, set this to `1`\n- `AWS_*` and `S3_*`: Amazon S3 configuration (if using S3 for image uploads)\n- `AWKBLOG_LANG`: The language of the blog. Currently, only `en` (English) and `ja` (Japanese) are supported.\n\n## Development\n\nTo set up a development environment:\n\n1. Clone the repository\n2. Run `./bin/setup.sh` to install dependencies\n3. Copy `.env.example` to `.env` and configure as needed\n4. Run `docker compose up -d` to start the development environment\n5. Access the application at `http://localhost:4567`\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyammerjp%2Fawkblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyammerjp%2Fawkblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyammerjp%2Fawkblog/lists"}