This is eVaka – an ERP system developed for early childhood education in Finland. It is a web application developed using modern technologies and designed to be deployed in cloud environment.
Caution: eVaka is currently under very active development. At this point, it is not yet adviced to start developing or running your custom solution based on this project. Most likely, the project will evolve considerably before reaching more stable phase. Please refer to project's roadmap for further information regarding development plans. However, feel free to explore the project and try running it locally.
For development purposes, the application can be run locally on your
development machine. See further instructions in the
README file of the compose/
directory.
The applications consists of several sub-projects:
apigw
– API gateway, responsible for handling authentication and routing requests to backend servicesfrontend
– User interfaces for the citizens and employeesservice
– All the business logic, e.g. handling early childhood education application process and daily work in daycarecompose
– Tooling for running application in local development environment, using e.g. Dockerproxy
– Nginx image for proxying fronetend requests to servicesservice-lib
– Old common library for service projects, but today only used byservice
.
and a few other important directories:
bin
– Helper shell scriptsdocs
– General eVaka documentationevaka-bom
– Shared BOM for eVaka Gradle projects, for easier dependency updates and controlespoo-customizations
– A common directory with placeholder files for anything specific to Espoo's eVaka implementation that cannot be licensed alongside the core
Please refer to CONTRIBUTING.md for further instructions regarding code contributions.
After the code in a forked PR has been reviewed to not pose a security risk for CI:
In CircleCI, "Build forked pull requests" must be enabled for repository.
IMPORTANT: "Pass secrets to builds from forked pull requests" must still be disabled.
# Add remote (can be done only once if expecting more PRs from same remote)
git remote add <name for remote> <address of remote>
# E.g.: git remote add Tampere [email protected]:Tampere/evaka.git
# Fetch remote references
git fetch --all
# Push refs as-is to origin
# NOTE: Upstream branch name doesn't need to match downstream, just the refs
# need to be identical
git push --force origin "refs/remotes/<name for remote>/<source branch>:refs/heads/<upstream branch>"
# E.g. git push --force origin "refs/remotes/Tampere/cool-branch-sauce:refs/heads/cool-branch-sauce"
# Remove remote (can be skipped if expecting more PRs from same remote)
git remote remove <name for remote>
# E.g. git remote remove Tampere
After the push the build in the original PR continues. Once it passes, merge the branch.
If any changes are made to the PR, they must similarly pushed to origin. You can use the same method as above.
In case you notice any information security related issue in our services, or you have an idea how to improve information security, please contact us by email at [email protected]
eVaka is published under LGPL-2.1-or-later license. Please refer to LICENSE for further details.
Bulk-licensing is applied to certain directories that will never contain anything but binary-like files (e.g. certificates) with a DEP5 file (see docs).
This repository targets REUSE compliance by utilizing the reuse CLI tool and the REUSE API.
The REUSE API constantly checks this repository's compliance and the status can be seen from the badge at the top of this README.
To manually check that the repository is compliant (e.g. before submitting a pull request), run:
./bin/add-license-headers.sh --lint-only
# See also:
./bin/add-license-headers.sh --help
NOTE: The tool has no concept for "no license" -> all files must indicate their license explicitly (or using bulk licensing). And if files cannot be licensed, they shouldn't be included in this repository at all.
To attempt automatically adding licensing headers to all source files, run:
./bin/add-license-headers.sh
NOTE: The script uses the reuse CLI tool, which has limited capability in recognizing file types but will give some helpful output in those cases, like:
$ ./bin/add-license-headers.sh
usage: reuse addheader [-h] [--copyright COPYRIGHT] [--license LICENSE]
[--year YEAR]
[--style {applescript,aspx,bibtex,c,css,haskell,html,jinja,jsx,lisp,m4,ml,python,tex}]
[--template TEMPLATE] [--exclude-year] [--single-line]
[--multi-line] [--explicit-license]
[--skip-unrecognised]
path [path ...]
reuse addheader: error: 'frontend/packages/employee-frontend/src/components/voucher-value-decision/VoucherValueDecisionActionBar.tsx' does not have a recognised file extension, please use --style, --explicit-license or --skip-unrecognised
CI does this automatically but you can manually lint all the shell scripts in
this repo with: ./bin/run-shellcheck.sh
. See shellcheck
for more details on the linter.
eVaka is developed in the City of Espoo, Finland. You can contact the development team at [email protected].