{"id":13670066,"url":"https://github.com/shamscorner/vitesse-stackter-clean-architect","last_synced_at":"2025-04-14T15:50:26.915Z","repository":{"id":39568962,"uuid":"401505152","full_name":"shamscorner/vitesse-stackter-clean-architect","owner":"shamscorner","description":"If you are really into the \"Vitesse\" starter template created by Anthony Fu (Vue core team member) but want to use the clean architectural pattern instead of monolithic architecture, then you can clone this repo and use your own project. Have fun 🙂!","archived":false,"fork":false,"pushed_at":"2022-11-05T11:20:14.000Z","size":834,"stargazers_count":72,"open_issues_count":0,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-28T04:39:15.810Z","etag":null,"topics":["clean-architecture","clean-code","javascript","modular-design","tailwindcss","vite","vue","windicss"],"latest_commit_sha":null,"homepage":"https://vite-vue3-clean-arch.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shamscorner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"shamscorner"}},"created_at":"2021-08-30T22:41:57.000Z","updated_at":"2025-02-23T13:39:15.000Z","dependencies_parsed_at":"2023-01-21T02:16:46.585Z","dependency_job_id":null,"html_url":"https://github.com/shamscorner/vitesse-stackter-clean-architect","commit_stats":null,"previous_names":[],"tags_count":8,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shamscorner%2Fvitesse-stackter-clean-architect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shamscorner%2Fvitesse-stackter-clean-architect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shamscorner%2Fvitesse-stackter-clean-architect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shamscorner%2Fvitesse-stackter-clean-architect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shamscorner","download_url":"https://codeload.github.com/shamscorner/vitesse-stackter-clean-architect/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248909787,"owners_count":21181780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","clean-code","javascript","modular-design","tailwindcss","vite","vue","windicss"],"created_at":"2024-08-02T09:00:31.315Z","updated_at":"2025-04-14T15:50:26.885Z","avatar_url":"https://github.com/shamscorner.png","language":"TypeScript","funding_links":["https://github.com/sponsors/shamscorner"],"categories":["Variations","clean-architecture"],"sub_categories":["Dev tools"],"readme":"\u003cp align='center'\u003e\n  \u003cimg src='https://user-images.githubusercontent.com/11247099/154486817-f86b8f20-5463-4122-b6e9-930622e757f2.png' alt='Vitesse - Opinionated Vite Starter Template' width='600'/\u003e\n\u003c/p\u003e\n\n\u003cp align='center'\u003e\nMocking up web app with \u003cb\u003eVitesse\u003c/b\u003e\u003csup\u003e\u003cem\u003e(speed)\u003c/em\u003e\u003c/sup\u003e\u003cbr\u003e with modular design pattern.\n\u003c/p\u003e\n\n\u003cbr\u003e\n\nIf you are really into the \"Vitesse\" starter template created by [Anthony Fu](https://github.com/antfu) (Vue core team member) but want to use the clean architectural pattern instead of monolithic architecture, then you can clone this repo and use your own project. If you want a quick introduction concept, you can read this very short [blog post](https://www.shamscorner.com/blog/vue-3-vite-modular-architecture-vitesse).\n\n\u003cbr\u003e\n\n\u003cp align='center'\u003e\n\u003ca href=\"https://vite-vue3-clean-arch.netlify.app/\" target=\"_blank\"\u003eLive Demo\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n## Features\n\n- ⚡️ [Vue 3](https://github.com/vuejs/core), [Vite 2](https://github.com/vitejs/vite), [pnpm](https://pnpm.io/), [ESBuild](https://github.com/evanw/esbuild) - born with fastness\n\n- 🗂 [File based routing](./src/common/pages)\n\n- 📦 [Components auto importing](./src/common/components)\n\n- 🍍 [State Management via Pinia](https://pinia.vuejs.org/)\n\n- 📑 [Layout system](./src/common/layouts)\n\n- 📲 [PWA](https://github.com/antfu/vite-plugin-pwa)\n\n- 🎨 [Tailwind CSS V3](https://tailwindcss.com/) - next generation utility-first CSS framework\n\n- 😃 [Use icons from any icon sets, with no compromise](https://github.com/antfu/unplugin-icons)\n\n- 🌍 [I18n ready](./locales)\n\n- 🚀 Shipped with [Apollo GraphQL](https://www.apollographql.com/)\n\n- 🗒 [Markdown Support](https://github.com/antfu/vite-plugin-vue-markdown)\n\n- 🔥 Use the [new `\u003cscript setup\u003e` syntax](https://github.com/vuejs/rfcs/pull/227)\n\n- 🤙🏻 [Reactivity Transform](https://vuejs.org/guide/extras/reactivity-transform.html) enabled\n\n- 📥 [APIs auto importing](https://github.com/antfu/unplugin-auto-import) - use Composition API and others directly\n\n- 🖨 Static-site generation (SSG) via [vite-ssg](https://github.com/antfu/vite-ssg)\n\n- 🦔 Critical CSS via [critters](https://github.com/GoogleChromeLabs/critters)\n\n- 🦾 TypeScript, of course\n\n- ⚙️ Unit Testing with [Vitest](https://github.com/vitest-dev/vitest), E2E Testing with [Cypress](https://cypress.io/) on [GitHub Actions](https://github.com/features/actions)\n\n- ☁️ Deploy on Netlify, zero-config\n\n\u003cbr\u003e\n\n## Pre-packed\n\n### UI Frameworks\n\n- [Tailwind CSS V3](https://tailwindcss.com/) - Rapidly build modern websites without ever leaving your HTML\n\n### Icons\n\n- [Iconify](https://iconify.design) - use icons from any icon sets [🔍Icônes](https://icones.netlify.app/)\n- [`unplugin-icons`](https://github.com/antfu/unplugin-icons) - icons as Vue components\n\n### Plugins\n\n- [Vue Router](https://github.com/vuejs/router)\n  - [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) - file system based routing\n  - [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts) - layouts for pages\n- [Pinia](https://pinia.vuejs.org) - Intuitive, type safe, light and flexible Store for Vue using the composition api\n- [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - components auto import\n- [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - Directly use Vue Composition API and others without importing\n- [`vite-plugin-pwa`](https://github.com/antfu/vite-plugin-pwa) - PWA\n- [`vite-plugin-vue-markdown`](https://github.com/antfu/vite-plugin-vue-markdown) - Markdown as components / components in Markdown\n  - [`markdown-it-prism`](https://github.com/jGleitz/markdown-it-prism) - [Prism](https://prismjs.com/) for syntax highlighting\n  - [`prism-theme-vars`](https://github.com/antfu/prism-theme-vars) - customizable Prism.js theme using CSS variables\n- [Vue I18n](https://github.com/intlify/vue-i18n-next) - Internationalization\n  - [`vite-plugin-vue-i18n`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n) - Vite plugin for Vue I18n\n- [VueUse](https://github.com/antfu/vueuse) - collection of useful composition APIs\n- [`@vueuse/head`](https://github.com/vueuse/head) - manipulate document head reactively\n- [`vite-ssg-sitemap`](https://github.com/jbaubree/vite-ssg-sitemap) - Sitemap generator\n- [`vite-plugin-vue-inspector`](https://github.com/webfansplz/vite-plugin-vue-inspector) - jump to local IDE source code while click the element of browser automatically\n- [Vue Apollo GraphQL](https://v4.apollo.vuejs.org/)\n  - [@apollo/client](https://github.com/apollographql/apollo-client) - Fully-featured caching GraphQL client with vue integration\n  - [@vue/apollo-composable](https://github.com/vuejs/apollo) - Apollo GraphQL functions for Vue Composition API\n\n### Coding Style\n\n- Use Composition API with [`\u003cscript setup\u003e` SFC syntax](https://github.com/vuejs/rfcs/pull/227)\n- [ESLint](https://eslint.org/) with [@antfu/eslint-config](https://github.com/antfu/eslint-config), single quotes, no semi.\n\n### Dev tools\n\n- [TypeScript](https://www.typescriptlang.org/)\n- [Vitest](https://github.com/vitest-dev/vitest) - Unit testing powered by Vite\n- [Cypress](https://cypress.io/) - E2E Testing\n- [pnpm](https://pnpm.js.org/) - fast, disk space efficient package manager\n- [`vite-ssg`](https://github.com/antfu/vite-ssg) - Static-site generation\n  - [critters](https://github.com/GoogleChromeLabs/critters) - Critical CSS\n- [Netlify](https://www.netlify.com/) - zero-config deployment\n- [VS Code Extensions](./.vscode/extensions.json)\n  - [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - Fire up Vite server automatically\n  - [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) - Vue 3 `\u003cscript setup\u003e` IDE support\n  - [Iconify IntelliSense](https://marketplace.visualstudio.com/items?itemName=antfu.iconify) - Icon inline display and autocomplete\n  - [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally) - All in one i18n support\n  - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n\n## Variations\n\nAs this template is strongly opinionated, the following provides a curated list for community-maintained variations with different preferences and feature sets. Check them out as well. PR to add yours is also welcome!\n\n###### Official\n\n- [vitesse-lite](https://github.com/antfu/vitesse-lite) - Lightweight version of Vitesse\n- [vitesse-nuxt3](https://github.com/antfu/vitesse-nuxt3) - Vitesse for Nuxt 3\n- [vitesse-nuxt-bridge](https://github.com/antfu/vitesse-nuxt-bridge) - Vitesse for Nuxt 2 with Bridge\n- [vitesse-webext](https://github.com/antfu/vitesse-webext) - WebExtension Vite starter template\n- [vitesse-stackter-clean-architect](https://github.com/shamscorner/vitesse-stackter-clean-architect) by [@shamscorner](https://github.com/shamscorner) - A modular clean architecture pattern in vitesse template\n\n###### Community\n\n- [vitesse-ssr-template](https://github.com/frandiox/vitesse-ssr-template) by [@frandiox](https://github.com/frandiox) - Vitesse with SSR\n- [vitespa](https://github.com/ctholho/vitespa) by [@ctholho](https://github.com/ctholho) - Like Vitesse but without SSG/SSR\n- [vitailse](https://github.com/zynth17/vitailse) by [@zynth17](https://github.com/zynth17) - Like Vitesse but with TailwindCSS\n- [vitesse-modernized-chrome-ext](https://github.com/xiaoluoboding/vitesse-modernized-chrome-ext) by [@xiaoluoboding](https://github.com/xiaoluoboding) - ⚡️ Modernized Chrome Extension Manifest V3 Vite Starter Template\n- [vitesse-enterprise](https://github.com/FranciscoKloganB/vitesse-enterprise) by [@FranciscoKloganB](https://github.com/FranciscoKloganB) - Consistent coding styles regardless of team-size.\n- [vitecamp](https://github.com/nekobc1998923/vitecamp) by [@nekobc1998923](https://github.com/nekobc1998923) - Like Vitesse but without SSG/SSR/File based routing, includes Element Plus\n- [vitesse-lite-react](https://github.com/lxy-yz/vitesse-lite-react) by [@lxy-yz](https://github.com/lxy-yz) - vitesse-lite React fork\n- [vide](https://github.com/Nico-Mayer/vide) by [@nico-mayer](https://github.com/Nico-Mayer) - Vite superlight Beginner Starter Template\n- [vitesse-h5](https://github.com/YunYouJun/vitesse-h5) by [@YunYouJun](https://github.com/YunYouJun) - Vitesse for Mobile\n- [bat](https://github.com/olgam4/bat) by [@olgam4](https://github.com/olgam4) - Vitesse for SolidJS\n\n## Try it now!\n\u003e This project requires Node == 17.6.0\n\n### GitHub Template\n\n[Create a repo from this template on GitHub](https://github.com/shamscorner/vitesse-stackter-clean-architect/generate).\n\n### Clone to local\n\nIf you prefer to do it manually with the cleaner git history\n\n```bash\nnpx degit antfu/vitesse my-vitesse-app\ncd my-vitesse-app\npnpm i # If you don't have pnpm installed, run: npm install -g pnpm\n```\n\n## Checklist\n\nWhen you use this template, try follow the checklist to update your info properly\n\n- [ ] Change the author name in `LICENSE`\n- [ ] Change the title in `App.vue`\n- [ ] Change the hostname in `vite.config.ts`\n- [ ] Change the favicon in `public`\n- [ ] Remove the `.github` folder which contains the funding info\n- [ ] Clean up the READMEs and remove routes\n- [ ] Update client service url for Apollo GraphQL in `apollo.config.js` if you use GraphQL API\n- [ ] Update http link for GraphQL API in `src/common/ApolloClient.ts` if you use GraphQL API\n\nAnd, enjoy :)\n\n## Usage\n\n### Development\n\nJust run and visit http://localhost:3333\n\n```bash\npnpm dev\n```\n\n### Build\n\nTo build the App, run\n\n```bash\npnpm build\n```\n\nAnd you will see the generated file in `dist` that ready to be served.\n\n### Separation of Concerns\n\n- Create separate folder for each module and place them under `/src` folder\n- The following folders are auto imported within each module\n    - `components/`\n    - `modules/`\n    - `pages/`\n    - `stores/`\n- Place all the layouts in the `common/layouts` folder\n- Place all the custom styles in the `common/styles` folder and import them into `main.css`\n\n### Deploy on Netlify\n\nGo to [Netlify](https://app.netlify.com/start) and select your clone, `OK` along the way, and your App will be live in a minute.\n\n### Docker Production Build\n\nFirst, build the vitesse image by opening the terminal in the project's root directory.\n\n```bash\ndocker buildx build . -t vitesse:latest\n```\n\nRun the image and specify port mapping with the `-p` flag.\n\n```bash\ndocker run --rm -it -p 8080:80 vitesse:latest\n```\n\n## Why\n\nI have created several Vite apps recently. Setting the configs up is kinda the bottleneck for me to make the ideas simply come true within a very short time.\n\nSo I made this starter template for myself to create apps more easily, along with some good practices that I have learned from making those apps. It's strongly opinionated, but feel free to tweak it or even maintains your own forks. [(see community maintained variation forks)](#variations)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshamscorner%2Fvitesse-stackter-clean-architect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshamscorner%2Fvitesse-stackter-clean-architect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshamscorner%2Fvitesse-stackter-clean-architect/lists"}