This GitHub organization is the center of development for digital government services on island.is
. It is managed by the Digital Iceland department inside the Ministry of Finance and Economic Affairs.
These solutions are FOSS and open to contributions, but most development will be performed by teams that win tenders to develop new functionality for Digital Iceland.
The repository is a monorepo that has multiple apps (something that can be built and run) and libraries (which other apps and libraries can depend on). All custom-written services is stored in there.
The apps and libraries documentation and our handbook are hosted on GitBook.
For a better reading experience make sure to visit docs.devland.is.
The Ísland.is design system is developed and showcased using Storybook and is publicly available at ui.devland.is.
To get more technical information about the project please make sure to read this overview.
If you want to contribute to the repository, please make sure to follow this guide.
- You have Node installed
>= 12.0.0
and Yarn at>= 1.20.0
. - You have java installed.
- You have Docker installed.
- Run
yarn
to install the dependencies.
There are many projects that can be built and run. Click here to see the full list.
For a dev server:
yarn start <project>
The app will automatically reload if you change any of the source files.
To build the project:
yarn build <project>
The build artifacts will be stored in the dist/
directory. Use the --prod
flag for a production build.
You need to format all files to follow NX code conventions. To do so run:
yarn nx format:write
We have many lint rules to help having a unify code all over the project. To execute the linting:
yarn lint <project>
Running lint locally is slow and fill up heap memory. This is related to Typescript compilation and NX lint builder being slow. As a result you might get a
JavaScript heap out of memory
. NX is working on fixing this for an upcoming update. In the meantime you can doNODE_OPTIONS=“--max-old-space-size=4096” yarn lint <project>
to raise the memory limit.
To execute the unit tests via Jest:
yarn test <project>
To execute the unit tests affected by a change:
yarn affected:test
To execute end-to-end tests via Cypress:
yarn e2e <project>-e2e
To execute the end-to-end tests affected by a change:
yarn affected:e2e
If your project is generating schemas files from an OpenAPI, Codegen or is an API, check out this documentation.
To see a diagram of the dependencies of your projects:
yarn nx dep-graph
Environment variables that should not be tracked but needed locally should be added to the .env.secret
file.
Additionally, if that same variable is also stored in AWS Parameter Store, the secret can be labeled with the dev
label from History
-> Attach labels
.
All secrets labeled with the dev
label can be fetched using yarn env-secrets
.
yarn env-secrets <project> [options]
Example:
yarn env-secrets gjafakort --reset