Frontend Web Architecture: A Modular Monolith Approach
In order to get started, please refer to the the following article/post I have written:
The Idea
A picture worth a thousand words! Here is a summary of what this project tries to accomplished:
TODO
And here the implemantion details:
TODO
Software Stack
nodejs
version
Recommended - If you use asdf-vm as Version Manager, please check the .tool-versions file.
Recommended IDE Setup
VSCode + Volar (and disable Vetur) + TypeScript Vue Plugin (Volar).
.vue
Imports in TS
Type Support for TypeScript cannot handle type information for .vue
imports by default, so we replace the tsc
CLI with vue-tsc
for type checking. In editors, we need TypeScript Vue Plugin (Volar) to make the TypeScript language service aware of .vue
types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a Take Over Mode that is more performant. You can enable it by the following steps:
- Disable the built-in TypeScript Extension
- Run
Extensions: Show Built-in Extensions
from VSCode's command palette - Find
TypeScript and JavaScript Language Features
, right click and selectDisable (Workspace)
- Run
- Reload the VSCode window by running
Developer: Reload Window
from the command palette.
Customize configuration
See Vite Configuration Reference.
Local Development
pnpm install # Install project dependencies
pnpm dev # Compile and Hot-Reload for Development
pnpm build # Type-Check, Compile and Minify for Production
Testing and Code quality
It includes, Static Analisys, Lint and Unit and Integration tests.
Vitest
Run Tests withpnpm test
ESLint
Lint withpnpm lint
References
- https://vitejs.dev/guide/
- https://vitest.dev/guide/
- https://vuejs.org/guide/
- https://vuejs.org/guide/typescript/overview.html
- https://github.com/vuejs/language-tools
- https://pinia.vuejs.org/
- https://github.com/vuejs/awesome-vue
License
Copyright 2023 Fernando Cejas
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.