|
@@ -0,0 +1,210 @@
|
|
|
+# Application file tree
|
|
|
+
|
|
|
+This wiki page details how the application file tree is structured.
|
|
|
+
|
|
|
+## Summary
|
|
|
+
|
|
|
+ - [Project's general file structure](#projects-general-file-structure)
|
|
|
+ - [`/docs` directory](#docs-directory)
|
|
|
+ - [`/dist` directory](#dist-directory)
|
|
|
+ - [`/images` directory](#images-directory)
|
|
|
+ - [`/logs` directory](#logs-directory)
|
|
|
+ - [`/server` directory](#server-directory)
|
|
|
+ - [`/src` directory](#src-directory)
|
|
|
+ - [`/test` directory](#test-directory)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## Project's general file structure
|
|
|
+
|
|
|
+The following file tree represents the full application.
|
|
|
+
|
|
|
+```console
|
|
|
+. ||
|
|
|
+├── babel.config.js ||
|
|
|
+├── back.Dockerfile || Back-end Docker configuration
|
|
|
+├── cleanExtracts.js || Extracts remover service
|
|
|
+├── config.js || Application configuration
|
|
|
+├── config.messagesId.js || Database message identifiers
|
|
|
+├── data || Database (Docker)
|
|
|
+│ └── ... ||
|
|
|
+├── docs || Generated API documentation
|
|
|
+│ └── ... ||
|
|
|
+├── docker-compose.frontapp_only.yml || General Docker configuration for a front-only instance
|
|
|
+├── docker-compose.yml || General Docker configuration
|
|
|
+├── DOCUMENTATION || This documentation
|
|
|
+│ └── ... ||
|
|
|
+├── dist || Generated Front-end files (build)
|
|
|
+│ └── ... ||
|
|
|
+├── experimentConfig.default.js || Default experiments configuration
|
|
|
+├── experimentConfig.js || Experiments configuration
|
|
|
+├── front.Dockerfile || Front-end Docker configuration
|
|
|
+├── images || Experiments images (Can be configured)
|
|
|
+│ └── ... ||
|
|
|
+├── index.js || Server + Extracts remover service starter
|
|
|
+├── jsconfig.json ||
|
|
|
+├── LICENSE || Application license
|
|
|
+├── logs || Application logs
|
|
|
+│ └── ... ||
|
|
|
+├── package.json || Project's scripts, dependencies and configuration
|
|
|
+├── public || Static front-end files
|
|
|
+│ ├── favicon.ico || Website favicon
|
|
|
+│ └── index.html ||
|
|
|
+├── README.md ||
|
|
|
+├── server || Server, database and WebSockets server code
|
|
|
+│ └── ... ||
|
|
|
+├── src || Front-end code
|
|
|
+│ └── ... ||
|
|
|
+├── test || API automated tests
|
|
|
+│ └── ... ||
|
|
|
+├── webhook_deploy_gogs.js || Continuous integration script
|
|
|
+└── yarn.lock || Project's dependencies versions lock file
|
|
|
+```
|
|
|
+
|
|
|
+## `/docs` directory
|
|
|
+
|
|
|
+The `/docs` directory contains the generated API documentation. This documentation is accessible through `/doc` on the website and describes every routes of the API.
|
|
|
+
|
|
|
+To generate the documentation, use the following npm script:
|
|
|
+
|
|
|
+```sh
|
|
|
+yarn doc
|
|
|
+```
|
|
|
+
|
|
|
+## `/dist` directory
|
|
|
+
|
|
|
+The `/dist` directory contains the build output of the Front-end of the application. It is bundled with WebPack to contain only HTML/CSS/JavaScript files.
|
|
|
+
|
|
|
+To generate the Front-end files, use the following npm script:
|
|
|
+
|
|
|
+```sh
|
|
|
+yarn app:build
|
|
|
+```
|
|
|
+
|
|
|
+## `/images` directory
|
|
|
+
|
|
|
+The `/images` directory contains all the images available for the experiments.
|
|
|
+
|
|
|
+This path is the default one, but you can configure it by setting an absolute path with the `IMAGES_PATH` environment variable when running the application.
|
|
|
+
|
|
|
+```console
|
|
|
+└── images ||
|
|
|
+ ├── Appart1opt02 || A scene directory
|
|
|
+ │ ├── appartAopt_00890.png || Scene images
|
|
|
+ │ ├── ... ||
|
|
|
+ │ └── extracts || Images extracts cut by the server
|
|
|
+ │ ├── x4_y4 || A cutting configuration (4 and 4 cuts on x and y axis)
|
|
|
+ │ │ ├── zone00001 || Image extract zone 1 (top left of image)
|
|
|
+ │ │ │ ├── Appart1opt02_zone00001_00020.png || The actual extract (x4_y4 config, zone 1, quality 20)
|
|
|
+ │ │ │ └── ... ||
|
|
|
+ │ │ └── ... ||
|
|
|
+ │ └── ... ||
|
|
|
+ └── ... ||
|
|
|
+```
|
|
|
+
|
|
|
+## `/logs` directory
|
|
|
+
|
|
|
+The `/logs` directory contains all the logs of the application.
|
|
|
+
|
|
|
+```console
|
|
|
+└── logs ||
|
|
|
+ ├── db.error.log || Database errors
|
|
|
+ ├── db.log || Database logs
|
|
|
+ ├── extractsRemoverService.error.log || Extracts remover service errors
|
|
|
+ ├── extractsRemoverService.log || Extracts remover service logs
|
|
|
+ ├── server.combined.log || Server combined logs
|
|
|
+ ├── server.error.log || Server errors
|
|
|
+ ├── ws.error.log || WebSockets server errors
|
|
|
+ └── ws.log || WebSockets server logs
|
|
|
+```
|
|
|
+
|
|
|
+## `/server` directory
|
|
|
+
|
|
|
+The [`/server`](../server) directory contains the Back-end: server, database and WebSockets server code.
|
|
|
+
|
|
|
+```console
|
|
|
+└── server ||
|
|
|
+ ├── database || Database link
|
|
|
+ │ ├── controllers || Database controllers (Functions)
|
|
|
+ │ │ └── Data.js ||
|
|
|
+ │ ├── index.js || Database link module: connects to database and links models
|
|
|
+ │ └── models || Database models (Schemas, types)
|
|
|
+ │ └── Data.js ||
|
|
|
+ ├── functions.js || Common utils for the server
|
|
|
+ ├── index.js || Server module: links server, database and WebSockets server
|
|
|
+ ├── routes || All API routes
|
|
|
+ │ ├── index.js || Router module to inject all routes
|
|
|
+ │ ├── getImage.js ||
|
|
|
+ │ └── ... ||
|
|
|
+ ├── webSocket || WebSockets server
|
|
|
+ │ ├── index.js || Websockets server module: starts server
|
|
|
+ │ └── messageHandler.js || Handle WebSockets messages (JSON)
|
|
|
+ └── winston.config.js || All the server's logging configuration
|
|
|
+```
|
|
|
+
|
|
|
+## `/src` directory
|
|
|
+
|
|
|
+The [`/src`](../src) directory contains the Front-end code.
|
|
|
+
|
|
|
+```console
|
|
|
+└── src ||
|
|
|
+ ├── App.vue || Main template, defines how the page looks
|
|
|
+ ├── components || Common components
|
|
|
+ │ ├── ExperimentsComponents || Experiment-specific components
|
|
|
+ │ │ ├── ExtractConfiguration.vue || Extracts configurator
|
|
|
+ │ │ └── ExtractsToImage.vue || Shows multiple extracts as a unique image
|
|
|
+ │ ├── Loader.vue || Loading component
|
|
|
+ │ ├── ResetAppButton.vue || Global application reset button
|
|
|
+ │ └── ToastMessage.vue || Show a temporary toast message
|
|
|
+ ├── config.utils.js || Some utils related to experiments configuration files
|
|
|
+ ├── functions.js || Common utils
|
|
|
+ ├── main.js || Vue modules and plugins register
|
|
|
+ ├── mixins || Experiments bases: contains utils for a type of experiment
|
|
|
+ │ ├── ExperimentBaseAreSameImages.vue || Images versus based experiment base
|
|
|
+ │ ├── ExperimentBaseExtracts.vue || Extracts-based experiment base
|
|
|
+ │ └── ExperimentBase.vue || Global experiment base, used in every experiments
|
|
|
+ ├── plugins || Vue.js plugins
|
|
|
+ │ └── vuetify.js || Vuetify design framework
|
|
|
+ ├── router || Vue-router (routing logic)
|
|
|
+ │ ├── experiments.js || Experiment-specific routing logic
|
|
|
+ │ └── index.js || Main routing logic
|
|
|
+ ├── store || VueX store (global state management)
|
|
|
+ │ ├── actions.js || Store actions (can be async)
|
|
|
+ │ ├── getters.js || Compute store state values
|
|
|
+ │ ├── index.js || Store module
|
|
|
+ │ ├── mutations.js || Store mutations (must be synchronous and atomic)
|
|
|
+ │ └── state.js || Store initial state
|
|
|
+ ├── style.css || Global application style
|
|
|
+ └── views || Application views (pages)
|
|
|
+ ├── Experiments || Experiments
|
|
|
+ │ ├── AreSameImagesRandom.vue || Two random quality images (versus)
|
|
|
+ │ ├── AreSameImagesReferenceOneExtract.vue || Two reference images, one has a random quality extract (versus)
|
|
|
+ │ ├── AreSameImagesReference.vue || One random quality image, one reference image (versus)
|
|
|
+ │ └── MatchExtractsWithReference.vue || Lowest quality extracts, match them to reference image
|
|
|
+ ├── ExperimentsList.vue || A list of all available experiments
|
|
|
+ ├── ExperimentValidated.vue || The experiment ending screen
|
|
|
+ ├── GdprNotice.vue || The GDPR notice
|
|
|
+ ├── HostConfig.vue || The application host configuration
|
|
|
+ └── SelectExperimentScene.vue || Experiment scene selector
|
|
|
+```
|
|
|
+
|
|
|
+## `/test` directory
|
|
|
+
|
|
|
+The [`/test`](../test) directory contains the automated tests of the application.
|
|
|
+
|
|
|
+```console
|
|
|
+└── test ||
|
|
|
+ ├── api || API tests
|
|
|
+ │ ├── getImage.js || A test file
|
|
|
+ │ ├── ... ||
|
|
|
+ │ ├── _test_functions.js || Common utils for the tests
|
|
|
+ │ ├── _test_setup_start.js || Script called before running all the tests
|
|
|
+ │ └── _test_setup_stop.js || Script called after running all the tests
|
|
|
+ └── images_test || Some experiment images copied for tests
|
|
|
+ └── ... ||
|
|
|
+```
|
|
|
+
|
|
|
+To run these automated tests, use the following npm script:
|
|
|
+```sh
|
|
|
+yarn app:build
|
|
|
+```
|