# Architecture

Here we define all files and folders that are used in this project.

* `README.md` - main readme file, it specifies the entry point to the project's documentation
* [`package.json`](https://docs.npmjs.com/files/package.json) - main file of the project. It defines the project's dependencies and scripts. It is also used to provide meta-data for many other tools
* `package-lock.json` - lock file for dependencies. It is used to install exactly the same versions of dependencies on each build
* [`nuxt.config.ts`](https://nuxtjs.org/guide/configuration/) - the main configuration file for `Nuxt`. It contains a list of installed plugins and other configuration. It is also used to specify how to build this project
* [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) - is used to specify how to deal with the `ts` files in this project. We can introduce new `ts` features by adding new configuration
* [`.eslintrc.js`](https://eslint.org/docs/user-guide/configuring) - configuration file for `ts`, `js`, and `vue` files linting
* [`stylelint.config.js`](https://stylelint.io/user-guide/configuration/) - configuration file for `stylelint`, which is used for linting styles
* [`.nvmrc`](https://github.com/creationix/nvm) - file with `node` version specification. Make sure that you have it installed, or otherwise, the project will not work at all
* [`.editorconfig`](http://editorconfig.org/) - file with format specification. You need to install the required plugin for your IDE in order to enable it
* [`.gitignore`](https://git-scm.com/docs/gitignore) - file that specifies what should we commit into the repository and we should not
* `docker/` - this folder contains `Dockerfile`s and utility scripts that are used for development and quality assurance
* [`docker-compose.yml`](https://docs.docker.com/compose/compose-file/) - this the file specifies `docker` services that are needed for development and testing
* `.dockerignore` - specifies what files should not be copied to the `docker` image
* [`.gitlab-ci.yml`](https://docs.gitlab.com/ee/ci/yaml/) - GitLab CI configuration file. It basically defines what to do with your project after pushing it to the repository. Currently it is used for testing and releasing a `docker` image
* `jest.config.js` - this file is used to configure [`jest`](https://jestjs.io/)
* [`.vscode/`](https://code.visualstudio.com/docs/getstarted/settings) - `vscode` IDE integration. We store different settings, plugins, and tasks inside this folder

## Client

* `assets/` - this directory contains your images, fonts, or any other files that you want [to be processed](https://nuxtjs.org/guide/assets#webpacked) by `webpack`
* `components/` - the components directory contains your `Vue` components, `Nuxt` doesn't supercharge these components
* `layouts/` - this directory contains your [Application Layouts](https://nuxtjs.org/guide/views#layouts)
* `logic/` - this directory contains your Application Logics. You should put everything that is considered business logic here
* `middleware/` - this directory contains your [Application Middleware](https://nuxtjs.org/guide/routing#middleware). The middleware lets you define custom function to be run before rendering a page or a group of pages (layouts)
* `pages/` - this directory contains your application routes. We rely on `Nuxt`'s [builtin routing](https://nuxtjs.org/guide/routing/)
* `plugins/` - this directory contains your custom [plugins](https://nuxtjs.org/examples/plugins/) for `Nuxt`
* `static/` - the [static](https://nuxtjs.org/guide/assets/#static) files directory. These files are not processed by any loaders and just copied as-is
* `store/` - this directory contains your [Vuex Store](https://nuxtjs.org/guide/vuex-store) files
* `shims/` - this directory contains TypeScript [declaration files](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html), feel free to extend it with your own types

## Tests

* `fixtures/` - this folder contains utility files that are used for testing
* `.eslintrc.js` - this file extends linting rules for testing
* `jest-shims.d.ts` - file to import TypeScript types into current context


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wemake-services.gitbook.io/wemake-vue-template/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
