Newer
Older

!!! note "Prefer other tools / languages?"
If you disagree with some of the choices made here, you are absolutely free to use other tools. If team prefers React and node over Python and Flask, please use node and react. Template repository is MIT licensed so teams can change it as much as they like to, and task can be accomplished with other tools. Watched WAM show where they said nobody uses Azure? We have aquired 50$ credits per student from google just for that. There is only a couple of hard requirements, GitLab being the most notable one. But even for that either [live-mirroring](https://gitlab.jyu.fi/help/user/project/repository/mirror/index.md) or moving repository after the course ends to GitHub is recommended – just for the clout, to get those green "contributor" boxes in GitHub.
But please note that support for diverging solutions is limited, and in such cases, the team will take full responsibility if the mentor can't help.
### Development
1. **Source code** resides in git. Git is a distributed version control system (DVCS). It's utilised by everyone, even by the University of Jyväskylä teacher core (since 2019-ish). Guide for git provided by Vesa Lappalainen is available at <https://tim.jyu.fi/view/kurssit/tie/ohj1/harjoitustyo/git>. And other places.
2. **Coding** can be done with your favourite tool, but [visual studio code](https://code.visualstudio.com/) is recommended for it's versatility and popularity. Please note that the "code" version is different from what you might have installed on Ohj1.
3. **Backend code** is done using Python and [Flask](https://flask.palletsprojects.com/en/2.0.x/) framework. [TIES4080 Web-palvelinohjelmointi](https://appro.mit.jyu.fi/ties4080/) uses similar tools and setups.
4. **Frontend code** is html and javascript. [TIEA2120 Web-käyttöliittymien ohjelmointi](https://appro.mit.jyu.fi/tiea2120/) uses similar tools and setup.
5. **Database** is MongoDB. Sadly [university's course for databases](https://opinto-opas.jyu.fi/2021/fi/opintojakso/itka2004/) is not applicable here at all, as it focuses on ACID databases and we'll use BASE.
6. **Containerization** is provided by [Docker](http://docker.com/). It's supported on Windows (from Windows 10 onwards), Linux and Mac. Containers are kinda like virtual machines, but not really - just different namespaces from underlying operating systems. [Univesity of Helsinki provides Mooc](https://devopswithdocker.com/) for additional credits – and learning.
### Operational
1. **Centralised Source code management** happens in [University's instance of Gitlab](https://gitlab.jyu.fi). Similar to a more popular GitHub, it provides and web interface for common management operations and centralised location for "main" code repository.
2. **Tests** are managed by GitLab, and run on cloud infrastructure.
3. **Infrastructure** is from [Microsoft Azure](https://portal.azure.com) - for the simple reason of getting it "[free](https://azure.microsoft.com/en-us/free/students/)". Infrastructure management relies on [Kubernetes](https://kubernetes.io/) which is an industry-standard and can be used with Google Cloud, IBM Cloud/OpenShift, Amazon Web Services and such.