{"id":13416450,"url":"https://github.com/utensils/essex","last_synced_at":"2025-06-30T00:04:13.759Z","repository":{"id":79101244,"uuid":"130542471","full_name":"utensils/essex","owner":"utensils","description":"Essex - Boilerplate for Docker Based Projects","archived":false,"fork":false,"pushed_at":"2025-01-30T00:00:39.000Z","size":45,"stargazers_count":36,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-30T00:19:13.518Z","etag":null,"topics":["boilerplate","containers","docker","docker-builder","docker-container","docker-template","docker-templates","dockerfile","dockerfile-generator","dockerfiles","dockerfiles-linux","generator","linux","makefile","oci","project","template","tools"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/utensils.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}},"created_at":"2018-04-22T06:46:39.000Z","updated_at":"2025-01-30T00:00:30.000Z","dependencies_parsed_at":"2023-08-28T18:19:39.212Z","dependency_job_id":null,"html_url":"https://github.com/utensils/essex","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/utensils%2Fessex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utensils%2Fessex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utensils%2Fessex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utensils%2Fessex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utensils","download_url":"https://codeload.github.com/utensils/essex/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237784844,"owners_count":19365940,"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":["boilerplate","containers","docker","docker-builder","docker-container","docker-template","docker-templates","dockerfile","dockerfile-generator","dockerfiles","dockerfiles-linux","generator","linux","makefile","oci","project","template","tools"],"created_at":"2024-07-30T21:00:59.031Z","updated_at":"2025-02-08T09:30:56.298Z","avatar_url":"https://github.com/utensils.png","language":"Rust","funding_links":[],"categories":["Docker Images","Shell","Building Images","boilerplate"],"sub_categories":["Builder"],"readme":"# Essex Boilerplate for Docker Based Projects\n\nA Docker project template generator that helps create consistent and well-structured Docker projects.\n\n## Features\n\n- Generate Docker projects from templates\n- Consistent project structure with best practices\n- Makefile-driven workflow\n- OCI-compliant labels\n- Templates using Tera (Jinja2-like syntax)\n- Shell completion support (bash, zsh)\n\n## Installation\n\n### Quick Install (Linux and macOS)\n\n```bash\ncurl -fsSL -o essex-install.sh https://github.com/utensils/essex/releases/latest/download/download_cli.sh \u0026\u0026 bash essex-install.sh\n```\n\nThis script will:\n- Detect your OS and architecture\n- Download the appropriate binary\n- Install it to `~/.local/bin`\n- Provide instructions for adding to your PATH\n\nThe installer supports:\n- macOS (Apple Silicon and Intel)\n- Linux (x86_64 and ARM64)\n\nNote: You may need to add `~/.local/bin` to your PATH if you haven't already:\n```bash\necho 'export PATH=\"$HOME/.local/bin:$PATH\"' \u003e\u003e ~/.bashrc\nsource ~/.bashrc  # or restart your terminal\n```\n\n### From Source\n\n```bash\ncargo install --path .\n```\n\n### Shell Completion\n\nEssex supports command-line completion for bash and zsh shells. You can enable it by following these steps:\n\n#### Bash\n\n1. Generate and install the completion script:\n```bash\n# For current user\nmkdir -p ~/.local/share/bash-completion/completions\nessex completion bash \u003e ~/.local/share/bash-completion/completions/essex.bash\n\n# Or for system-wide installation (requires sudo)\nsudo essex completion bash \u003e /usr/share/bash-completion/completions/essex\n```\n\n2. Add to your `~/.bashrc`:\n```bash\nsource ~/.local/share/bash-completion/completions/essex.bash\n```\n\n3. Reload your shell or source the file:\n```bash\nsource ~/.bashrc\n```\n\n#### Zsh\n\n1. Create the completion directory and generate the script:\n```bash\nmkdir -p ~/.zfunc\nessex completion zsh \u003e ~/.zfunc/_essex\n```\n\n2. Add to your `~/.zshrc`:\n```zsh\nfpath=(~/.zfunc $fpath)\nautoload -Uz compinit\ncompinit\n```\n\n3. Reload your shell or source the file:\n```bash\nsource ~/.zshrc\n```\n\n#### Testing Completion\n\nAfter installation, you can test the completion by typing:\n```bash\nessex \u003cTAB\u003e           # Shows available commands (list, new, completion, help)\nessex new \u003cTAB\u003e       # Shows available templates\nessex completion \u003cTAB\u003e # Shows supported shells (bash, zsh)\n```\n\n## Usage\n\n```bash\n# List available templates\nessex list\n\n# Create a new project\nessex new basic namespace/project-name --username your-username --vendor \"Your Company\"\n\n# Generate shell completion\nessex completion bash  # For bash\nessex completion zsh   # For zsh\n```\n\n### Template Structure\n\nThe basic template includes:\n- Dockerfile with best practices\n- Makefile for common Docker operations\n- README.md\n- Entrypoint script\n- OCI-compliant labels\n\n### Project Structure\n\n```\nproject-name/\n├── Dockerfile\n├── Makefile\n├── README.md\n└── runtime-assets/\n    └── usr/\n        └── local/\n            └── bin/\n                └── entrypoint.sh\n```\n\n## Development\n\n### Requirements\n\n- Rust 1.70 or later\n- Cargo\n\n### Building\n\n```bash\ncargo build --release\n```\n\n### Testing\n\n```bash\ncargo test                # Run Rust tests\n./test_install.sh        # Run installer tests\n```\n\n### Release Process\n\nThe project follows semantic versioning and maintains synchronization between Cargo.toml versions and git tags.\n\nTo create a new release:\n\n1. Use the version bump script:\n```bash\n./scripts/bump_version.sh 1.0.0  # Replace with your version\n```\n\n2. Review the changes:\n```bash\ngit show HEAD\n```\n\n3. Push the changes:\n```bash\ngit push origin main v1.0.0  # Replace with your version\n```\n\nThe CI/CD pipeline will:\n- Verify that Cargo.toml version matches the git tag\n- Run all tests\n- Build binaries for all supported platforms\n- Generate SHA256 checksums\n- Create a GitHub release\n- Upload all assets\n\n### Development Guidelines\n\n- Follow Test-Driven Development (TDD) practices\n  - Write tests first before implementing new features\n  - Ensure each new feature or bug fix has corresponding tests\n  - Keep test coverage high and meaningful\n- All code changes should maintain backward compatibility with existing templates\n- Follow Rust best practices and idiomatic code patterns\n- Ensure all templates follow Docker best practices:\n  - Use multi-stage builds where appropriate\n  - Include proper OCI labels\n  - Follow principle of least privilege (run as non-root user)\n  - Include proper documentation\n- Always ensure Cargo version matches git tag for releases\n\n## License\n\nMIT License","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futensils%2Fessex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futensils%2Fessex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futensils%2Fessex/lists"}