This page gives a quick overview over the structure of the Decker repository.
Standard files such as `makefile` or `Dockerfile` are not expanded upon here.
## Haskell Setup Files
Decker is a project using the [Haskell Tool Stack](https://docs.haskellstack.org/en/stable/README/) as build tool.
For more detailed information regarding the files listed below please check Stack's documentation.
Files that are needed by stack:
-`Setup.hs`: This file is mainly used to zip and append the `resource` directory to the executable during `Stack` runtime i.e. when Decker is being compiled.
-`package.yaml`: The file describing the project to `Stack`. Lists the project structure and the needed dependencies
-``stack.yaml`: Telling `Stack` which compiler flags to use and which version of the stack "resolver"
## Files that are used by editor extensions but otherwise irrelevant
- hie.yaml
- brittany.yaml
- floskell.yaml
## app
Contains only the file `Decker.hs` which is the `main` Haskell file describing the behavior of the application `Decker`.
## attic
Outdated/obsolete files that might become relevant again at some point in time.
## bin
- `build.ps1`: The main build file for the Windows executable. (see also `makefile`)
- `check-formatting.sh`: An outdated file checking the formatting of the Haskell code
## doc
Internal discussions and documentation of development plans/goals
## resource
The resources needed by decker at runtime. This directory gets zipped and appended to the `Decker` executable.
- `example`: A decker example project
- `support`: Files needed by Decker at presentation time. Includes `CSS` and `JavaScript` files as well as fonts.
- `template`: Template files needed by Decker at runtime e.g. when building the HTML files from Markdown
## src
The main Haskell source code directory.
TODO: Detailed breakdown of the source code?
## `src-unix` and `src-win`
Haskell code specific to the respective operating system.
## test
Includes Haskell test code as well as several slide decks showcasing Decker features.
Decker uses the [`Hspec` testing framework for Haskell](https://hspec.github.io/). `Spec.hs` is the main source file.
## third-party
Third-party submodules used by decker.
- `symlinks.mk`: Prepares/builds and copies third-party software to `resource/support/vendor`. Is called by `makefile``
-`vendor.ps1`: A PowerShell script analogous to `symlinks.mk`. Called by `bin/build.ps1`
## users-guide
A WIP guide for Decker that can be built as `pdf` and/or `html` file using the `makefile` which calls `pandoc`.