Newer
Older

Lucendio
committed
This application represents the *deployable workload* for the
[lecture assignment](https://github.com/lucendio/lecture-devops-material/blob/master/assignments/exercise.md).

Lucendio
committed

Lucendio
committed
* frontend (`./client`)
* backend (`./server`)
During the build process, the client code is moved into the `./public` directory within the server source code.
Aside from providing an HTTP API, the backend also functions as a static file server for the client. As a result,
backend and frontend are both bundled into a single artifact (see `make build` as an example).
If you want to build each part separately:
```bash
cd ./client
npm install
npm run build
cd ./../server
npm install --prod
cd ./../
cp ./client/public ./server/public
cp ./server ${TARGET_RUNTIME_LOCATION}
```
The following technologies have been utilized (aka. MERN-stack):
* React (rendering engine of the web-based graphical user interface)
* Express (web-server framework)
* Node (Javascript runtime in the backend)
* MongoDB (persistence layer)
Other, most noticeable dependencies are:
* [Jest](https://jestjs.io/) as the test framework for both parts
* [Webpack](https://webpack.js.org/) to bundle the frontend
* [Babel](https://babeljs.io/) to transpile and therewith support latest Ecmascript versions
* [ESLint](https://eslint.org/) to ensure code quality (linting); is invoked as part of the webpack build chain
* [Mongoose](https://mongoosejs.com/docs/api.html) as the database driver
##### Full disclosure
This application was forked from [Aamir Pinger](https://github.com/aamirpinger)'s [ToDo app][https://github.com/aamirpinger/todo-app-client-server-kubernetes]