{"id":21365085,"url":"https://github.com/altinn/altinn-studio","last_synced_at":"2026-03-12T23:06:21.432Z","repository":{"id":37445296,"uuid":"136911355","full_name":"Altinn/altinn-studio","owner":"Altinn","description":"Next generation open source Altinn platform and applications.","archived":false,"fork":false,"pushed_at":"2025-10-03T14:24:36.000Z","size":151784,"stargazers_count":149,"open_issues_count":725,"forks_count":85,"subscribers_count":37,"default_branch":"main","last_synced_at":"2025-10-05T15:36:43.698Z","etag":null,"topics":["altinn","apis","containers","development-platform","digital-public-goods","dpg","forms","git","sdg-16","ui-components"],"latest_commit_sha":null,"homepage":"https://docs.altinn.studio","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Altinn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-06-11T10:32:39.000Z","updated_at":"2025-10-03T14:18:57.000Z","dependencies_parsed_at":"2024-04-15T09:27:41.222Z","dependency_job_id":"c0f3e116-2e14-4bdb-b977-10127e878cca","html_url":"https://github.com/Altinn/altinn-studio","commit_stats":null,"previous_names":[],"tags_count":322,"template":false,"template_full_name":null,"purl":"pkg:github/Altinn/altinn-studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinn%2Faltinn-studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinn%2Faltinn-studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinn%2Faltinn-studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinn%2Faltinn-studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Altinn","download_url":"https://codeload.github.com/Altinn/altinn-studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Altinn%2Faltinn-studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278740823,"owners_count":26037480,"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-10-07T02:00:06.786Z","response_time":59,"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":["altinn","apis","containers","development-platform","digital-public-goods","dpg","forms","git","sdg-16","ui-components"],"created_at":"2024-11-22T07:09:33.315Z","updated_at":"2026-02-13T17:08:28.303Z","avatar_url":"https://github.com/Altinn.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Altinn Studio\n\n[![DPG Badge](https://img.shields.io/badge/Verified-DPG%20-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://digitalpublicgoods.net/r/altinn)\n\nAltinn Studio is the next generation Altinn application development solution. Together with **Altinn Apps** and\n**Altinn Platform**, this is a complete application development and hosting platform (Altinn 3).\n\nRead the [Altinn Studio documentation][1] to [get started][2].\nWe've also created a [introductory course for app development][3] that you can follow at your own pace.\n\n\u003e **Note** Developing apps?\n\u003e If you just want to quickly perform tests of your app on your development machine you can follow the instructions on\n\u003e how to [run apps locally][4]. This repository is mainly the Designer-tool which is used to build and\n\u003e deploy apps.\n\n## Getting Started with developing Altinn Studio\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\nSee deployment for notes on how to deploy the project on a live system.\n\n### Prerequisites\n\n1. Newest [.NET 9 SDK][5]\n2. [Node.js][6] (Latest LTS version, v20.\\*)\n3. Newest [Git][7]\n4. A code editor - we like [Visual Studio Code][8]\n   - Also install [recommended extensions][9] (e.g. [C# Dev Kit][10])\n5. Newest [Docker Desktop][11]\n   - Requires a license in most cases. Alternative options can be found [here][12]\n6. If you are running Docker Desktop in Hyper-V mode you need to make sure your C drive is shared with Docker, Docker\n   Settings -\u003e Shared Drives The File sharing tab is only available in Hyper-V mode, because in WSL 2 mode and Windows\n   container mode all files are automatically shared by Windows.\n\n_NOTE: If you want to use Safari on MacOS add `127.0.0.1 studio.localhost` to `/private/etc/hosts`_\n\n### Running the solution locally\n\nClone the [Altinn Studio repo][13] and navigate to the folder.\n\n```bash\ngit clone https://github.com/Altinn/altinn-studio\ncd altinn-studio\n```\n\nThe fastest way to get things running from scratch is to use our setup-script. This script will start docker and\nensure that the setup is up to date. As we add more features this script will be updated. It can be run as follows:\n\n```bash\nyarn \u0026\u0026 yarn setup\n```\n\nMore about that script and development in general, [can be found here](development/README.md).\n\n#### Docker Compose\n\nThe development environment consist of several services defined in [compose.yaml](compose.yaml).\n\n- `studio-loadbalancer` which is a simple nginx-container using `nginx:alpine` directly, just used for development.\n- `studio-designer` which is the actual build artifact with the .NET backend and the react-apps.\n- `studio-repos` which is [gitea][14] with some custom config. More [here](src/gitea/README.md).\n- `studio-db` which is a postgres database used by both `studio-designer` and `studio-repos`.\n- `database_migrations` which is a one-time task container designed to perform and complete database migrations before exiting.\n- `pgadmin` which is a administration and development platform for PostgreSQL.\n- `redis` which is a redis cache used by designer.\n- `redis-commander` which is a ui for redis cache.\n\nRun all parts of the solution in containers (Make sure docker is running), with docker compose as follows:\n\n```bash\ndocker-compose up -d --build\n```\n\nThe solution is now available locally at [studio.localhost][15]. (Just create a new user for testing. No email\nverification required). If you make changes and want to rebuild a specific project using docker-compose this can be done using\n\n```bash\ndocker-compose up -d --build \u003ccontainer\u003e\n```\n\nExample\n\n```bash\ndocker-compose up -d --build studio_designer\n```\n\nIf using the script, the `.env`-file is generated and put at root, otherwise you will need to place it there yourself.\nWhen starting `docker-compose` the solution should be running as it would in production. But you probably want to change\nparts of the solution. The load balancer is configured to route the traffic to the right place according to your\nparticular use case. This is done by placing a `.env`-file in the same folder as compose.yaml. The load balancer\nis configured with the following variables.\n\n```dotenv\nDEVELOP_BACKEND=0\nDEVELOP_DASHBOARD=0\nDEVELOP_APP_DEVELOPMENT=0\nDEVELOP_STUDIO_ROOT=0\n```\n\n## Developing Backend\n\nNavigate to the designer backend folder `cd backend/src/Designer`. The first time running, or after any package changes,\nget the latest packages.\n\nThe backend uses the OIDC login flow with Gitea as the identity provider. The client ID and client secret are required in the configuration.\n\nWhen running the backend locally, the .env file will be used to fetch the client ID and secret if they are not already set in the configuration.\n\nIf the setup script is run, an OAuth2 application will be created in Gitea, and the CLIENT_ID and CLIENT_SECRET values will be set in the .env file. Alternatively, you can set up the OAuth2 application yourself in Gitea and manually set the client ID and client secret values in the configuration.\n\n## Developing Frontend\n\nStart the vite dev server for the respective app you want to develop:\n\n```bash\nyarn run start-app-development\nyarn run start-dashboard\n```\n\nIf you need to rebuild other React apps, for instance `dashboard` or `app-development`, this can be done by navigating\nto `frontend` and then running the following build script, which will build app frontend apps.\n\n```bash\nyarn run build\n```\n\nSome React projects also have various other predefined scripts, which can be viewed in the `package.json` file\nwhich is located in the root folder of each react project, example `frontend/dashboard`.\n\nMore about developing frontend [can be found here](frontend/README.md).\n\n## End-to-end tests\n\nAltinn Studio has two sets of automated end-to-end tests; regression tests and usecase tests. [The regression tests][17] are created with Playwright and run on every pull request. [The usecase tests][18] are created with Cypress and run periodically.\n\nFor more information about testing, please refer to the following resources: [Playwright](frontend/testing/playwright/README.md) and [Cypress](frontend/testing/cypress/README.md).\n\n## Deployment\n\nThe current build is deployed in Kubernetes on Azure. Automated CI/CD using Azure DevOps pipelines.\n\n## Built With\n\n- [React][19] - The front-end framework\n- [.NET Core][20]/[C#][21] - The back-end framework\n- [yarn][22] - Package management\n- [Docker][23] - Container platform\n- [Kubernetes][24] - Container orchestration\n\n## Status for container scans\n\n[![Designer scan](https://github.com/altinn/altinn-studio/actions/workflows/designer-scan.yml/badge.svg)](https://github.com/Altinn/altinn-studio/actions/workflows/designer-scan.yml)\n[![Repositories scan](https://github.com/altinn/altinn-studio/actions/workflows/repositories-scan.yml/badge.svg)](https://github.com/Altinn/altinn-studio/actions/workflows/repositories-scan.yml)\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## Authors\n\n- **Altinn Studio development team** - If you want to get in touch, just [create a new issue][25].\n\nSee also the [list of contributors][26] who participated in this project.\n\n## License\n\nThis project is licensed under the 3-Clause BSD License - see the [LICENSE.md](LICENSE.md) file for details.\n\n[1]: https://docs.altinn.studio/\n[2]: https://docs.altinn.studio/altinn-studio/getting-started/\n[3]: https://docs.altinn.studio/altinn-studio/getting-started/app-dev-course/\n[4]: https://github.com/Altinn/app-localtest\n[5]: https://dotnet.microsoft.com/download/dotnet/9.0\n[6]: https://nodejs.org\n[7]: https://git-scm.com/downloads\n[8]: https://code.visualstudio.com/Download\n[9]: https://code.visualstudio.com/docs/editor/extension-gallery#_workspace-recommended-extensions\n[10]: https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit\n[11]: https://www.docker.com/products/docker-desktop\n[12]: https://docs.altinn.studio/community/contributing/handbook/docker/without-docker-desktop/\n[13]: https://github.com/Altinn/altinn-studio\n[14]: https://gitea.io/\n[15]: http://studio.localhost\n[16]: https://github.com/Altinn/app-template-dotnet\n[17]: https://github.com/Altinn/altinn-studio/tree/main/frontend/testing/playwright\n[18]: https://github.com/Altinn/altinn-studio/tree/main/frontend/testing/cypress\n[19]: https://reactjs.org/\n[20]: https://docs.microsoft.com/en-us/dotnet/core/\n[21]: https://docs.microsoft.com/en-us/dotnet/csharp/\n[22]: https://yarnpkg.com/\n[23]: https://www.docker.com/\n[24]: https://kubernetes.io/\n[25]: https://github.com/Altinn/altinn-studio/issues/new/choose\n[26]: https://github.com/Altinn/altinn-studio/graphs/contributors\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltinn%2Faltinn-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faltinn%2Faltinn-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltinn%2Faltinn-studio/lists"}