├── src ├── style.css ├── postcss.config.js ├── assets │ ├── vue.svg │ └── main.css ├── stores │ └── theme.js ├── store │ └── index.js ├── App.vue ├── components │ ├── HelloWorld.vue │ ├── HeaderComponent.vue │ └── FooterComponent.vue ├── views │ ├── AboutView.vue │ ├── ProjectsView.vue │ ├── ContactView.vue │ ├── Homeview.vue │ ├── StudentsView.vue │ ├── BlogView.vue │ ├── AchievementsVIew.vue │ ├── CoursesView.vue │ ├── ScheduleView.vue │ └── QAView.vue ├── router │ └── index.js └── main.js ├── .vscode └── extensions.json ├── postcss.config.js ├── .gitignore ├── README.md ├── package.json ├── vite.config.js ├── public └── vite.svg ├── index.html └── tailwind.config.js /src/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /src/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 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 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + Vite 2 | 3 | This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` 26 | 27 | 38 | -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | 39 | 44 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | // import { defineConfig } from 'vite' 2 | // import vue from '@vitejs/plugin-vue' 3 | 4 | // // https://vite.dev/config/ 5 | // export default defineConfig({ 6 | // plugins: [vue()], 7 | // }) 8 | 9 | 10 | 11 | 12 | import { defineConfig } from 'vite' 13 | import vue from '@vitejs/plugin-vue' 14 | import path from 'path' 15 | 16 | export default defineConfig({ 17 | plugins: [vue()], 18 | resolve: { 19 | alias: { 20 | '@': path.resolve(__dirname, './src'), 21 | }, 22 | }, 23 | server: { 24 | port: 3000, 25 | open: true, 26 | cors: true 27 | }, 28 | build: { 29 | outDir: 'dist', 30 | assetsDir: 'assets', 31 | minify: 'terser', 32 | terserOptions: { 33 | compress: { 34 | drop_console: true, 35 | drop_debugger: true, 36 | }, 37 | }, 38 | rollupOptions: { 39 | output: { 40 | manualChunks: { 41 | 'vendor': ['vue', 'vue-router', 'pinia'], 42 | 'ui': ['@vueuse/core', '@vueuse/motion'], 43 | } 44 | } 45 | } 46 | } 47 | }) -------------------------------------------------------------------------------- /src/views/AboutView.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from "vue-router" 2 | 3 | 4 | const routes = [ 5 | { 6 | path: "/", 7 | name: "home", 8 | component: () => import("../views/Homeview.vue"), 9 | }, 10 | { 11 | path: "/achievements", 12 | name: "achievements", 13 | component: () => import("../views/AchievementsView.vue"), 14 | }, 15 | { 16 | path: "/students", 17 | name: "students", 18 | component: () => import("../views/StudentsView.vue"), 19 | }, 20 | { 21 | path: "/courses", 22 | name: "courses", 23 | component: () => import("../views/CoursesView.vue"), 24 | }, 25 | { 26 | path: "/blog", 27 | name: "blog", 28 | component: () => import("../views/BlogView.vue"), 29 | }, 30 | { 31 | path: "/schedule", 32 | name: "schedule", 33 | component: () => import("../views/ScheduleView.vue"), 34 | }, 35 | { 36 | path: "/qa", 37 | name: "qa", 38 | component: () => import("../views/QAView.vue"), 39 | }, 40 | { 41 | path: "/contact", 42 | name: "contact", 43 | component: () => import("../views/ContactView.vue"), 44 | }, 45 | ] 46 | 47 | const router = createRouter({ 48 | history: createWebHistory(import.meta.env.BASE_URL), 49 | routes, 50 | scrollBehavior() { 51 | return { top: 0 } 52 | }, 53 | }) 54 | 55 | export default router 56 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | AzamjonBro Portfolio 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
43 | 44 | 45 | -------------------------------------------------------------------------------- /src/views/ProjectsView.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | const defaultConfig = require("shadcn/ui/tailwind.config") 3 | 4 | module.exports = { 5 | ...defaultConfig, 6 | content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}", "*.{js,ts,jsx,tsx,mdx}"], 7 | theme: { 8 | ...defaultConfig.theme, 9 | extend: { 10 | ...defaultConfig.theme.extend, 11 | colors: { 12 | ...defaultConfig.theme.extend.colors, 13 | primary: { 14 | ...defaultConfig.theme.extend.colors.primary, 15 | 50: "#eff6ff", 16 | 100: "#dbeafe", 17 | 200: "#bfdbfe", 18 | 300: "#93c5fd", 19 | 400: "#60a5fa", 20 | 500: "#3b82f6", 21 | 600: "#2563eb", 22 | 700: "#1d4ed8", 23 | 800: "#1e40af", 24 | 900: "#1e3a8a", 25 | }, 26 | secondary: { 27 | ...defaultConfig.theme.extend.colors.secondary, 28 | 50: "#f0fdfa", 29 | 100: "#ccfbf1", 30 | 200: "#99f6e4", 31 | 300: "#5eead4", 32 | 400: "#2dd4bf", 33 | 500: "#14b8a6", 34 | 600: "#0d9488", 35 | 700: "#0f766e", 36 | 800: "#115e59", 37 | 900: "#134e4a", 38 | }, 39 | accent: { 40 | ...defaultConfig.theme.extend.colors.accent, 41 | 50: "#f5f3ff", 42 | 100: "#ede9fe", 43 | 200: "#ddd6fe", 44 | 300: "#c4b5fd", 45 | 400: "#a78bfa", 46 | 500: "#8b5cf6", 47 | 600: "#7c3aed", 48 | 700: "#6d28d9", 49 | 800: "#5b21b6", 50 | 900: "#4c1d95", 51 | 950: "#3b0764", 52 | }, 53 | destructive: { 54 | DEFAULT: "hsl(var(--destructive))", 55 | foreground: "hsl(var(--destructive-foreground))", 56 | }, 57 | muted: { 58 | DEFAULT: "hsl(var(--muted))", 59 | foreground: "hsl(var(--muted-foreground))", 60 | }, 61 | popover: { 62 | DEFAULT: "hsl(var(--popover))", 63 | foreground: "hsl(var(--popover-foreground))", 64 | }, 65 | card: { 66 | DEFAULT: "hsl(var(--card))", 67 | foreground: "hsl(var(--card-foreground))", 68 | }, 69 | }, 70 | fontFamily: { 71 | sans: ["Montserrat", "sans-serif"], 72 | }, 73 | boxShadow: { 74 | custom: "0 4px 20px -2px rgba(0, 0, 0, 0.1)", 75 | }, 76 | animation: { 77 | "pulse-slow": "pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite", 78 | }, 79 | }, 80 | }, 81 | plugins: [ 82 | ...defaultConfig.plugins, 83 | require("@tailwindcss/typography"), 84 | require("@tailwindcss/forms"), 85 | require("tailwindcss-animate"), 86 | ], 87 | } 88 | -------------------------------------------------------------------------------- /src/views/ContactView.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | -------------------------------------------------------------------------------- /src/components/HeaderComponent.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 99 | 100 | 106 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue" 2 | import { createPinia } from "pinia" 3 | import App from "./App.vue" 4 | import router from "./router" 5 | import { createI18n } from "vue-i18n" 6 | // import "./assets/main.css" 7 | 8 | // Tarjimalar 9 | const messages = { 10 | uz: { 11 | nav: { 12 | home: "Bosh sahifa", 13 | achievements: "Yutuqlar", 14 | students: "O'quvchilar", 15 | courses: "Kurslar", 16 | blog: "Blog", 17 | schedule: "Jadval", 18 | qa: "Savol-javob", 19 | contact: "Bog'lanish", 20 | }, 21 | home: { 22 | hero: { 23 | title: "Zamonaviy ta'lim, zamonaviy yondashuv", 24 | subtitle: "Dasturlash va web-dizayn bo'yicha professional ta'lim", 25 | coursesButton: "Kurslarni ko'rish", 26 | contactButton: "Bog'lanish", 27 | }, 28 | about: { 29 | title: "Men haqimda", 30 | description: 31 | "Professional o'qituvchi va dasturchi sifatida 10 yildan ortiq tajribaga egaman. Mening maqsadim - o'quvchilarni zamonaviy texnologiyalar bilan tanishtirish va ularga amaliy ko'nikmalarni o'rgatish.", 32 | readMoreButton: "Ko'proq o'qish", 33 | stats: { 34 | yearsExperience: "yillik tajriba", 35 | studentsCount: "o'quvchilar", 36 | coursesCount: "kurslar", 37 | awardsCount: "mukofotlar", 38 | }, 39 | }, 40 | courses: { 41 | title: "Mashhur kurslar", 42 | subtitle: "Eng ko'p talab qilinadigan va yuqori baholanadigan kurslarimiz", 43 | detailsButton: "Batafsil", 44 | allCoursesButton: "Barcha kurslar", 45 | }, 46 | testimonials: { 47 | title: "O'quvchilar fikrlari", 48 | subtitle: "Bizning o'quvchilarimiz nima deyishadi", 49 | }, 50 | cta: { 51 | title: "Karyerangizni bugun boshlang", 52 | description: "Zamonaviy dasturlash ko'nikmalarini o'rganing va IT sohasida muvaffaqiyatga erishing", 53 | button: "Ro'yxatdan o'tish", 54 | }, 55 | }, 56 | schedule: { 57 | title: "Dars jadvali", 58 | subtitle: "Joriy va kelgusi darslar jadvali", 59 | currentTime: "Hozirgi vaqt", 60 | currentClass: "Joriy dars", 61 | noCurrentClass: "Hozirda dars yo'q", 62 | weeklySchedule: "Haftalik jadval", 63 | time: "Vaqt", 64 | upcomingClasses: "Kelgusi darslar", 65 | class: "Dars", 66 | consultation: "Konsultatsiya", 67 | addToCalendar: "Taqvimga qo'shish", 68 | }, 69 | students: { 70 | title: "O'quvchilar", 71 | subtitle: "Mening eng yaxshi o'quvchilarim va ularning yutuqlari", 72 | successMap: { 73 | title: "Muvaffaqiyat xaritasi", 74 | }, 75 | testimonials: { 76 | title: "O'quvchilar fikrlari", 77 | }, 78 | }, 79 | courses: { 80 | title: "Kurslar", 81 | subtitle: "Barcha mavjud kurslar va o'quv dasturlari", 82 | categories: { 83 | all: "Barchasi", 84 | programming: "Dasturlash", 85 | design: "Dizayn", 86 | frontend: "Frontend", 87 | backend: "Backend", 88 | }, 89 | paid: "Pullik", 90 | free: "Bepul", 91 | viewButton: "Ko'rish", 92 | youtube: { 93 | title: "YouTube darslari", 94 | viewAllButton: "Barcha videolarni ko'rish", 95 | }, 96 | downloads: { 97 | title: "Yuklab olish uchun materiallar", 98 | downloadButton: "Yuklab olish", 99 | }, 100 | }, 101 | blog: { 102 | title: "Blog", 103 | subtitle: "Eng so'nggi maqolalar va yangiliklar", 104 | featured: "Tavsiya etilgan", 105 | readMore: "Ko'proq o'qish", 106 | searchPlaceholder: "Maqolalarni qidirish...", 107 | }, 108 | achievements: { 109 | title: "Yutuqlar", 110 | subtitle: "Mening professional yutuqlarim va sertifikatlarim", 111 | tabs: { 112 | certificates: "Sertifikatlar", 113 | courses: "O'tilgan kurslar", 114 | awards: "Mukofotlar", 115 | }, 116 | verifyButton: "Tekshirish", 117 | }, 118 | }, 119 | en: { 120 | nav: { 121 | home: "Home", 122 | achievements: "Achievements", 123 | students: "Students", 124 | courses: "Courses", 125 | blog: "Blog", 126 | schedule: "Schedule", 127 | qa: "Q&A", 128 | contact: "Contact", 129 | }, 130 | // You can expand English content as needed 131 | }, 132 | ru: { 133 | nav: { 134 | home: "Главная", 135 | achievements: "Достижения", 136 | students: "Студенты", 137 | courses: "Курсы", 138 | blog: "Блог", 139 | schedule: "Расписание", 140 | qa: "Вопросы", 141 | contact: "Контакты", 142 | }, 143 | // You can expand Russian content as needed 144 | }, 145 | } 146 | 147 | // Tilni tekshirish 148 | const supportedLanguages = ["uz", "en", "ru"] 149 | const savedLang = localStorage.getItem("language") 150 | const locale = supportedLanguages.includes(savedLang) ? savedLang : "uz" 151 | 152 | // i18n sozlamasi 153 | const i18n = createI18n({ 154 | legacy: false, 155 | locale, 156 | fallbackLocale: "uz", 157 | messages, 158 | }) 159 | 160 | // Vue ilovasini yaratish 161 | const app = createApp(App) 162 | const pinia = createPinia() 163 | 164 | app.use(router) 165 | app.use(pinia) 166 | app.use(i18n) 167 | 168 | app.mount("#app") 169 | -------------------------------------------------------------------------------- /src/components/FooterComponent.vue: -------------------------------------------------------------------------------- 1 | 88 | 89 | 95 | -------------------------------------------------------------------------------- /src/views/Homeview.vue: -------------------------------------------------------------------------------- 1 | 148 | 149 | 194 | -------------------------------------------------------------------------------- /src/views/StudentsView.vue: -------------------------------------------------------------------------------- 1 | 115 | 116 | 232 | 233 | -------------------------------------------------------------------------------- /src/views/BlogView.vue: -------------------------------------------------------------------------------- 1 | 137 | 138 | -------------------------------------------------------------------------------- /src/views/AchievementsVIew.vue: -------------------------------------------------------------------------------- 1 | 165 | 166 | 298 | 299 | -------------------------------------------------------------------------------- /src/views/CoursesView.vue: -------------------------------------------------------------------------------- 1 | 166 | 167 | -------------------------------------------------------------------------------- /src/views/ScheduleView.vue: -------------------------------------------------------------------------------- 1 | 157 | 158 | -------------------------------------------------------------------------------- /src/views/QAView.vue: -------------------------------------------------------------------------------- 1 | 116 | 117 | 213 | 214 | --------------------------------------------------------------------------------