Skip to content
Snippets Groups Projects
README.md 1.65 KiB
Newer Older
Todo-App
========
This application represents the *deployable workload* for the
[lecture assignment](https://github.com/lucendio/lecture-devops-material/blob/master/assignments/exercise.md). 
The application consists of two parts:
* frontend (`./client`)
* backend (`./server`)

During the build process, the client code is moved into the `./public` directory within the server source code.
Lucendio's avatar
Lucendio committed
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]