{"id":50594503,"url":"https://github.com/datarobot-community/af-component-base","last_synced_at":"2026-06-05T13:01:00.725Z","repository":{"id":351582373,"uuid":"952807086","full_name":"datarobot-community/af-component-base","owner":"datarobot-community","description":"Base component for Template Studio","archived":false,"fork":false,"pushed_at":"2026-05-27T16:15:26.000Z","size":521,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-05-27T18:13:47.464Z","etag":null,"topics":["dr-engineering"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datarobot-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-21T23:19:02.000Z","updated_at":"2026-05-21T20:41:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/datarobot-community/af-component-base","commit_stats":null,"previous_names":["datarobot-community/af-component-base"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/datarobot-community/af-component-base","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datarobot-community%2Faf-component-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datarobot-community%2Faf-component-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datarobot-community%2Faf-component-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datarobot-community%2Faf-component-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datarobot-community","download_url":"https://codeload.github.com/datarobot-community/af-component-base/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datarobot-community%2Faf-component-base/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33942436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"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":["dr-engineering"],"created_at":"2026-06-05T13:00:54.575Z","updated_at":"2026-06-05T13:01:00.698Z","avatar_url":"https://github.com/datarobot-community.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/datarobot-community/af-component-base\"\u003e\n    \u003cimg src=\"https://af.datarobot.com/img/datarobot_logo.avif\" width=\"600px\" alt=\"DataRobot Logo\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cspan style=\"font-size: 1.5em; font-weight: bold; display: block;\"\u003eaf-component-base\u003c/span\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://datarobot.com\"\u003eHomepage\u003c/a\u003e\n  ·\n  \u003ca href=\"https://af.datarobot.com\"\u003eDocumentation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://docs.datarobot.com/en/docs/get-started/troubleshooting/general-help.html\"\u003eSupport\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/datarobot-community/af-component-base/tags\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/tag/datarobot-community/af-component-base?label=version\" alt=\"Latest Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/datarobot-community/af-component-base\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://join.slack.com/t/datarobot-community/shared_invite/zt-3uzfp8k50-SUdMqeux25ok9_5wr4okrg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/%23applications-a?label=Slack\u0026labelColor=30373D\u0026color=81FBA6\" alt=\"Slack #applications\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThe base component required for all AF built apps\n\n`af-component-base` is a [copier](https://copier.readthedocs.io/) template that provides the foundational scaffold for every application built with the [DataRobot App Framework](https://af.datarobot.com). It is the first component applied to any new App Framework project.\n\nWhen applied, it walks you through a short configuration wizard (template name, description, copyright year, and whether to include the shared `core` library), then writes the base project structure and answers file that all other App Framework components build on top of. Answers are stored in `.datarobot/answers/base.yml` and reused by subsequent `copier update` runs.\n\nThis component is intended for app developers starting a new App Framework project or bringing an existing project up to the standard structure.\n\n# Table of contents\n\n- [Prerequisites](#prerequisites)\n- [Quick start](#quick-start)\n- [Component dependencies](#component-dependencies)\n  - [Local development](#local-development)\n  - [Updating](#updating)\n- [Troubleshooting](#troubleshooting)\n- [Next steps and cross-links](#next-steps-and-cross-links)\n- [Contributing, changelog, support, and legal](#contributing-changelog-support-and-legal)\n\n# Prerequisites\n\n- Python 3.11+\n- [`uv`](https://docs.astral.sh/uv/) installed\n- [`dr`](https://cli.datarobot.com) installed\n\nA DataRobot account and environment are required to deploy the resulting application. See [DataRobot getting started](https://docs.datarobot.com/en/docs/get-started/) for account setup.\n\n# Quick start\n\nRun the following command in your project directory:\n\n```bash\ndr component add https://github.com/datarobot-community/af-component-base .\n```\n\nIf you need additional control, you can run this to use copier directly:\n\n```bash\nuvx copier copy datarobot-community/af-component-base .\n```\n\nThe wizard prompts for:\n\n- **Template name**\u0026mdash;human-readable display name (e.g. `My Sales Assistant`).\n- **Template code name**\u0026mdash;auto-derived lowercase slug; override if needed.\n- **Template description**\u0026mdash;Markdown-compatible description shown in the App Framework gallery.\n- **Copyright year**\u0026mdash;defaults to the current year.\n- **Include core library**\u0026mdash;whether to include the shared `core` package for multi-component recipes (default: yes).\n\n# Component dependencies\n\n`af-component-base` has no required component dependencies. It is the root of the App Framework component graph — all other components build on top of it.\n\n## Local development\n\n`af-component-base` is a copier template, not a runnable service. All source files live under `template/`, which copier renders into the target project directory at apply time.\n\nThe `copier.yml` at the repo root defines all template questions and their defaults. The answers file path is `.datarobot/answers/base.yml` in the target project. See [AGENTS.md](AGENTS.md) for an agent-oriented orientation to this repo.\n\n### Prerequisites\n\n- [`uv`](https://docs.astral.sh/uv/) — provides `uvx copier`\n- [Task](https://taskfile.dev) — task runner (`brew install go-task/tap/go-task` or see [installation](https://taskfile.dev/installation/))\n- [`yamlfmt`](https://github.com/google/yamlfmt) — install with `go install github.com/google/yamlfmt/cmd/yamlfmt@latest`\n- [`dr`](https://cli.datarobot.com) — the DataRobot CLI (used to run the rendered project's own checks the way end users will)\n\n### Validating a change\n\nThe repo root has a `Taskfile.yaml` that renders the template into `mytemplate/` (with the optional `core` library) and `mytemplate-no-core/`, then runs the same checks CI does. The single command to run everything is:\n\n```bash\ntask validate\n```\n\nThis renders both `include_core=true` and `include_core=false` variants, runs `yamlfmt -lint` on each, and then runs the rendered project's own `dr task install`, `dr task \u003cns\u003e:lint-check`, and `dr task \u003cns\u003e:test|unit` for the appropriate components. CI (`.github/workflows/validate-template.yaml`) runs the same command across Python 3.11, 3.12, and 3.13.\n\nFor fast iteration, run individual subtasks:\n\n```bash\ntask render:with-core        # render mytemplate/ with include_core=true\ntask render:no-core          # render mytemplate-no-core/ with include_core=false\ntask lint:yaml               # yamlfmt -lint on both rendered outputs\ntask validate:with-core      # install + lint-check + test in mytemplate via dr task\ntask validate:no-core        # install + lint-check + test in mytemplate-no-core via dr task\ntask clean                   # rm -rf mytemplate mytemplate-no-core\n```\n\nFor a one-off render outside the Taskfile (e.g. to manually inspect generated output), copier can be invoked directly:\n\n```bash\nuvx copier copy . /tmp/my-test-app\n```\n\n## Updating\n\nAll components should be regularly updated to pick up bug fixes, new features,\nand compatibility with the latest DataRobot App Framework.\n\nFor automatic updates to the latest version, run the following command in your project directory:\n```bash\ndr component update .datarobot/answers/base.yml\n```\n\nIf you need more fine grained control and prefer using copier directly,\nyou can run this to have more control over the process:\n\n```bash\nuvx copier update -a .datarobot/answers/base.yml -A\n```\n\n# Troubleshooting\n\nThis section covers common issues when applying or updating the component.\n\n**copier asks questions I already answered**\n\n`.datarobot/answers/base.yml` may be missing or out of date. Run the update command with `-A` to skip interactive prompts and use saved answers:\n\n```bash\nuvx copier update -a .datarobot/answers/base.yml -A\n```\n\n**`dr component add` is not found**\n\nInstall or update the DataRobot CLI. See [cli.datarobot.com](https://cli.datarobot.com) for installation instructions.\n\n**Template conflicts after `copier update`**\n\nCopier shows a diff for any file with local modifications. Review each conflict, keep your changes where appropriate, and commit the result.\n\n# Next steps and cross-links\n\nAfter applying this component, add further functionality by layering additional App Framework components on top.\n\n- [App Framework documentation](https://af.datarobot.com)\u0026mdash;full component catalog, architecture guide, and deployment docs.\n- [DataRobot CLI](https://cli.datarobot.com)\u0026mdash;`dr component add`, `dr deploy`, and other workflow commands.\n- [App Framework Studio (internal)](https://datarobot.atlassian.net/wiki/spaces/BOPS/pages/6542032899/App+Framework+-+Studio)\u0026mdash;internal design and planning context.\n\n# Contributing, changelog, support, and legal\n\n**Contributing**: Fork the repository and open a pull request. See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide, including how to report bugs and the maintainer response SLA.\n\n**Getting help**: Open a [GitHub Issue](https://github.com/datarobot-community/af-component-base/issues) for bugs and feature requests. For security vulnerabilities, email the maintainers directly or contact [oss-community-management@datarobot.com](mailto:oss-community-management@datarobot.com).\n\n**License**: This project is licensed under the terms in [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatarobot-community%2Faf-component-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatarobot-community%2Faf-component-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatarobot-community%2Faf-component-base/lists"}