Skip to content

Commit 76dd360

Browse files
committed
first commit
0 parents  commit 76dd360

File tree

371 files changed

+9655
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

371 files changed

+9655
-0
lines changed

.env.example

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
VITE_BASE_API_URL=localhost:4000
2+
PORT=3000
3+
NODE_ENV=development
4+
VITE_NODE_ENV=development
5+
VITE_ENV=development
6+
7+
VITE_BASE_API_URL=https://api.sampleapis.com
8+
VITE_HOST=http://localhost:3000
9+
VITE_COOKIE_DOMAIN=localhost
10+
VITE_APP_VERSION=0.0.1
11+
VITE_E2E_ENABLE=0

.eslintrc.cjs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/* eslint-env node */
2+
require('@rushstack/eslint-patch/modern-module-resolution')
3+
4+
module.exports = {
5+
root: true,
6+
extends: [
7+
"plugin:@tanstack/eslint-plugin-query/recommended",
8+
'plugin:vue/vue3-essential',
9+
'eslint:recommended',
10+
'@vue/eslint-config-typescript',
11+
'@vue/eslint-config-prettier/skip-formatting'
12+
],
13+
parserOptions: {
14+
ecmaVersion: 'latest'
15+
},
16+
rules: {
17+
'vue/multi-word-component-names': 0
18+
}
19+
}

.gitignore

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
.DS_Store
12+
dist
13+
dist-ssr
14+
coverage
15+
*.local
16+
17+
/cypress/videos/
18+
/cypress/screenshots/
19+
20+
# Editor directories and files
21+
.vscode/*
22+
!.vscode/extensions.json
23+
.idea
24+
*.suo
25+
*.ntvs*
26+
*.njsproj
27+
*.sln
28+
*.sw?
29+
30+
*.tsbuildinfo
31+
32+
.env
33+
.yarn/install-state.gz

.prettierrc.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"$schema": "https://json.schemastore.org/prettierrc",
3+
"semi": false,
4+
"tabWidth": 2,
5+
"singleQuote": true,
6+
"printWidth": 100,
7+
"trailingComma": "none"
8+
}

.prototools

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node = "~22"

.vscode/extensions.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"recommendations": [
3+
"Vue.volar",
4+
"dbaeumer.vscode-eslint",
5+
"esbenp.prettier-vscode"
6+
]
7+
}

README.en.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Techmely Vue3 Academy - Free youtube
2+
3+
Thank [hieuhani](https://github.com/hieuhani) for [techgoda](https://github.com/hieuhani/techgoda) project & [publiz](https://github.com/hieuhani/publiz) API for me do this course.
4+
5+
## **We cover the fundamentals, like:**
6+
7+
- Setting up Vue 3 project using Vite
8+
- Integrating VueDevTools with Vue js 3
9+
- Routing with Vue Router and File Based Routing with unplugin-vue-router
10+
- Vue Component and Composable Design with the Composition API
11+
- State management with Pinia
12+
- Modern Javascript (ES2023/ESNext)
13+
- User permissions & Route Guards
14+
- Data and File Storage, plus Authentication with Firebase
15+
- Automatic code review with CodeRabbit
16+
- Linting/Formatting with ESLint + Prettier
17+
- Consuming REST APIs
18+
- Application architecture and best practices
19+
- Error handling and monitoring
20+
21+
## **We also dive into practical real world features and how to implement them quickly:**
22+
23+
- Using OpenAI with some prompts to get some key take-aways from articles.
24+
- Robust and beautiful components with TailwindCSS and ShadCN Vue
25+
- Data filtering and searching strategies across multiple resources (articles, jobs, tags)
26+
- Forms and Validation with Autoform + Zod
27+
- Auto saving on edits to inline content
28+
- Pagination and Infinite scroll support
29+
- Real time commenting
30+
- Analytics and events tracking with Google Analytics 4, Google Tag Manager, and Sentry.
31+
32+
## **Vuejs API we will use**
33+
34+
### **Global & General API**
35+
36+
- [app.directive](https://vuejs.org/api/application.html#app-directive)
37+
- [app.provide](https://vuejs.org/api/application.html#app-provide)
38+
- [app.config.errorHandler](https://vuejs.org/api/application.html#app-config-errorhandler)
39+
- [app.config.performance](https://vuejs.org/api/application.html#app-config-performance)
40+
- [nexttick](https://vuejs.org/api/general.html#nexttick)
41+
- [defineComponent](https://vuejs.org/api/general.html#definecomponent)
42+
- [defineProps & defineEmits](https://vuejs.org/api/sfc-script-setup.html#defineprops-defineemits)
43+
- [defineExpose](https://vuejs.org/api/general.html#defineexpose)
44+
45+
### **Composition API**
46+
47+
- [ref](https://vuejs.org/api/reactivity-core.html#ref)
48+
- [reactive](https://vuejs.org/api/reactivity-core.html#reactive)
49+
- [computed](https://vuejs.org/api/reactivity-core.html#computed)
50+
- [watchEffect](https://vuejs.org/api/reactivity-core.html#watcheffect)
51+
- [watch](https://vuejs.org/api/reactivity-core.html#watch)
52+
- [effectScope](https://vuejs.org/api/reactivity-advanced.html#effectscope)
53+
- [Lifecycle Hooks](https://vuejs.org/api/composition-api-lifecycle.html)
54+
- [Dependency Injection](https://vuejs.org/api/composition-api-dependency-injection.html)
55+
56+
By completing the Vue 3 Techmely, you will be able to land any Vue.js related job or optimize/improve your own projects!
57+
58+
Requirements You should be familiar with JavaScript, HTML, basic CSS, and have fundamental knowledge of Vue.js (specifically with the Composition API).
59+
60+
You could check out our Vuejs courses for FREE: https://www.youtube.com/watch?v=Vg9n_YRGPIY&list=PLwJIrGynFq9B_BQJZJi-ikWDDkYKVUpM5
61+
62+
63+
## Project Setup
64+
65+
```sh
66+
bun i
67+
```
68+
69+
### Compile and Hot-Reload for Development
70+
71+
```sh
72+
bun run dev
73+
```
74+
75+
### ENV Variables
76+
77+
Make sure to provide the env variables listed in the `.env.example` file along with their values.
78+
79+
80+
```
81+
82+
```

README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Techmely Vue3 Academy - Free youtube
2+
3+
Cảm ơn [hieuhani](https://github.com/hieuhani) vì project [techgoda](https://github.com/hieuhani/techgoda) & [publiz](https://github.com/hieuhani/publiz) API đã giúp em hoàn thành course này.
4+
5+
## **We cover the fundamentals, like:**
6+
7+
- Dựng base project với Vue 3 sử dụng Vite
8+
- Tích hợp VueDevTools
9+
- Routing với Vue Router và File Based Routing với unplugin-vue-router
10+
- Vue Component và Composable Design với Composition API
11+
- State management với Pinia
12+
- Dùng Modern Javascript (ES2023/ESNext)
13+
- User permissions & Route Guards
14+
- Data và File Storage, cộng với Authentication với Firebase
15+
- Tự động code review bằng CodeRabbit AI
16+
- Linting/Formatting với ESLint + Prettier
17+
- Consuming REST APIs
18+
- Vận dụng các kiến thức thực tế trong dự án
19+
- Error handling và monitoring
20+
21+
## **Cùng nhau làm các tính năng trong thực tế một cách nhanh chóng:**
22+
23+
- Sử dụng OpenAI với một vài prompts để lấy các thông tin tóm tắt quan trọng của bài viết, bài tìm việc...
24+
- Sử dụng các component tích hợp sẵn và đẹp mắt với TailwindCSS và ShadCN Vue
25+
- Lọc/Tìm kiếm dữ liệu với danh sách bài viết, bài đăng công việc, tags
26+
- Forms và Validation với Autoform + Zod
27+
- Tự động lưu bài viết trong quá trình viết nội dung
28+
- Phân trang và Infinite scroll
29+
- Real time commenting
30+
- Analytics và events tracking với Google Analytics 4, Google Tag Manager, và Sentry.
31+
32+
## **Vuejs API ta sẽ xử dụng**
33+
34+
### **Global & General API**
35+
36+
- [app.directive](https://vuejs.org/api/application.html#app-directive)
37+
- [app.provide](https://vuejs.org/api/application.html#app-provide)
38+
- [app.config.errorHandler](https://vuejs.org/api/application.html#app-config-errorhandler)
39+
- [app.config.performance](https://vuejs.org/api/application.html#app-config-performance)
40+
- [nexttick](https://vuejs.org/api/general.html#nexttick)
41+
- [defineComponent](https://vuejs.org/api/general.html#definecomponent)
42+
- [defineProps & defineEmits](https://vuejs.org/api/sfc-script-setup.html#defineprops-defineemits)
43+
- [defineExpose](https://vuejs.org/api/general.html#defineexpose)
44+
45+
### **Composition API**
46+
47+
- [ref](https://vuejs.org/api/reactivity-core.html#ref)
48+
- [reactive](https://vuejs.org/api/reactivity-core.html#reactive)
49+
- [computed](https://vuejs.org/api/reactivity-core.html#computed)
50+
- [watchEffect](https://vuejs.org/api/reactivity-core.html#watcheffect)
51+
- [watch](https://vuejs.org/api/reactivity-core.html#watch)
52+
- [effectScope](https://vuejs.org/api/reactivity-advanced.html#effectscope)
53+
- [Lifecycle Hooks](https://vuejs.org/api/composition-api-lifecycle.html)
54+
- [Dependency Injection](https://vuejs.org/api/composition-api-dependency-injection.html)
55+
56+
57+
Khi hoàn thành khoá học Vue3 của Techmely, bạn sẽ có khẳ năng tìm được công việc với Vuejs ngoài thực tế bởi những kiến thức, kỹ năng được chia sẻ trong khoá học.
58+
59+
Khoá học yêu cầu bạn nên có nên tảng cơ bản với Javascript, HTML, CSS và đặc biệt là kiến thức cơ bản về Vuejs(đặc biệt là Composition API).
60+
61+
Bạn có thể xem qua khoá Vuejs của Techmely FREE trên [kênh Youtube của team](https://www.youtube.com/watch?v=Vg9n_YRGPIY&list=PLwJIrGynFq9B_BQJZJi-ikWDDkYKVUpM5)
62+
63+
64+
## Project Setup
65+
66+
```bash
67+
bun install
68+
```
69+
70+
### Compile + Hot-Reload cho Development
71+
72+
```bash
73+
bun run dev
74+
```
75+
76+
### ENV Variables
77+
78+
Chắc chắn rằng bạn tạo ra 1 file `.env` chứa các env variables như file `.env.example`.
79+
80+
81+
```bash
82+
cp .env.example .env
83+
```

app.config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
author: {
3+
name: 'Techmely'
4+
}
5+
}

auto-imports.d.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/* eslint-disable */
2+
/* prettier-ignore */
3+
// @ts-nocheck
4+
// noinspection JSUnusedGlobalSymbols
5+
// Generated by unplugin-auto-import
6+
export {}
7+
declare global {
8+
const EffectScope: typeof import('vue')['EffectScope']
9+
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
10+
const computed: typeof import('vue')['computed']
11+
const createApp: typeof import('vue')['createApp']
12+
const customRef: typeof import('vue')['customRef']
13+
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
14+
const defineComponent: typeof import('vue')['defineComponent']
15+
const defineStore: typeof import('pinia')['defineStore']
16+
const effectScope: typeof import('vue')['effectScope']
17+
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
18+
const getCurrentScope: typeof import('vue')['getCurrentScope']
19+
const h: typeof import('vue')['h']
20+
const inject: typeof import('vue')['inject']
21+
const isProxy: typeof import('vue')['isProxy']
22+
const isReactive: typeof import('vue')['isReactive']
23+
const isReadonly: typeof import('vue')['isReadonly']
24+
const isRef: typeof import('vue')['isRef']
25+
const markRaw: typeof import('vue')['markRaw']
26+
const nextTick: typeof import('vue')['nextTick']
27+
const onActivated: typeof import('vue')['onActivated']
28+
const onBeforeMount: typeof import('vue')['onBeforeMount']
29+
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
30+
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
31+
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
32+
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
33+
const onDeactivated: typeof import('vue')['onDeactivated']
34+
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
35+
const onMounted: typeof import('vue')['onMounted']
36+
const onRenderTracked: typeof import('vue')['onRenderTracked']
37+
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
38+
const onScopeDispose: typeof import('vue')['onScopeDispose']
39+
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
40+
const onUnmounted: typeof import('vue')['onUnmounted']
41+
const onUpdated: typeof import('vue')['onUpdated']
42+
const provide: typeof import('vue')['provide']
43+
const reactive: typeof import('vue')['reactive']
44+
const readonly: typeof import('vue')['readonly']
45+
const ref: typeof import('vue')['ref']
46+
const resolveComponent: typeof import('vue')['resolveComponent']
47+
const shallowReactive: typeof import('vue')['shallowReactive']
48+
const shallowReadonly: typeof import('vue')['shallowReadonly']
49+
const shallowRef: typeof import('vue')['shallowRef']
50+
const storeToRefs: typeof import('pinia')['storeToRefs']
51+
const toRaw: typeof import('vue')['toRaw']
52+
const toRef: typeof import('vue')['toRef']
53+
const toRefs: typeof import('vue')['toRefs']
54+
const toValue: typeof import('vue')['toValue']
55+
const triggerRef: typeof import('vue')['triggerRef']
56+
const unref: typeof import('vue')['unref']
57+
const useAttrs: typeof import('vue')['useAttrs']
58+
const useCssModule: typeof import('vue')['useCssModule']
59+
const useCssVars: typeof import('vue')['useCssVars']
60+
const useGlobalStore: typeof import('./src/stores/global')['useGlobalStore']
61+
const useRoute: typeof import('vue-router')['useRoute']
62+
const useRouter: typeof import('vue-router')['useRouter']
63+
const useSlots: typeof import('vue')['useSlots']
64+
const watch: typeof import('vue')['watch']
65+
const watchEffect: typeof import('vue')['watchEffect']
66+
const watchPostEffect: typeof import('vue')['watchPostEffect']
67+
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
68+
}
69+
// for type re-export
70+
declare global {
71+
// @ts-ignore
72+
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
73+
import('vue')
74+
}

bun.lockb

252 KB
Binary file not shown.

0 commit comments

Comments
 (0)