Learning project for Vue 3 + TypeScript + Vite with integrated testing (Vitest + Vue Testing Library).
1. lesson-1 - Vue Basics
Simple counter app to learn fundamental concepts:
- Reactive state with
ref() - Event handling with
@click - Component rendering and DOM updates
- Unit testing with Vitest
2. lesson-2 - Working with Props
Counter component that receives data from parent:
- Props:
initialCount(required),label(optional) - One-way data flow parent → child
- Reset functionality based on props
3. lesson-3 - Expression Evaluator
5. lesson-5 - Building an API frontend with Openapi and Vue
- Vue 3 + TypeScript + Vite - Frontend
- OpenAPI specifics to call a local API
- A comprehensive project demonstrating how to build a simple frontend to a public API with automation tools
- A public API like PicSum browsing images and metadata info
- Creating the right openapi.yaml API interface
- Autogenerated interfaces (openapi-cli-generator)
- Async operations with loading/error states
- Simple browsing to test API frontend with images and metadata info Complete Vue 3 app with routing and expression evaluation:
- Reactive state with
ref()andwatch() - Two-way binding with
v-modeland custom events - Routing with vue-router 5 (auto-navigation)
- Expression parsing with Chevrotain lexer
- Expression evaluation with Function constructor
- Professional tooling: ESLint, Prettier, Vitest
4. lesson-4 - Composables & Form Validation
Advanced Composition API patterns with a Task Manager app:
- Composables for reusable logic
- Computed properties with caching and dependencies
- Lifecycle hooks (onMounted, onUnmounted, watchEffect)
- Async operations with loading/error states
- Form validation with custom rules
- Keyboard navigation with event listeners
5. lesson-5 - Building an API frontend with Openapi and Vue
For each lesson, run commands in its directory:
npm run dev # Start dev server
npm run test:unit # Run tests (lesson-3, lesson-4)
npm run lint # Run linter
npm run format # Run Prettier
npm run build # Build for productionLessons_and_exercises/
├── lesson-1/ # Vue basics + testing
├── lesson-2/ # Props
├── lesson-3/ # Full setup with lint/format
├── lesson-4/ # Composables + form validation
└── README.md # This file
Stack: Vue 3.5+, TypeScript 6, Vite 8, Vitest, ESLint, Prettier, Husky