A modern, semantic, and maintainable website built with Nuxt 3 and TypeScript.
├── components/
│ ├── layout/ # Layout components (Header, Footer, etc.)
│ ├── ui/ # Reusable UI components
│ ├── features/ # Feature-specific components
│ └── shared/ # Shared components
├── composables/ # Vue composables for shared logic
├── types/ # TypeScript type definitions
├── pages/ # Page components
├── public/ # Static assets
└── assets/ # Processed assets
- TypeScript Support: Full type safety throughout the application
- Semantic HTML: Proper use of HTML5 semantic elements
- Component Architecture: Well-organized, reusable components
- Composables: Shared logic using Vue composables
- Responsive Design: Mobile-first approach with Tailwind CSS
- Performance: Optimized for fast loading and smooth interactions
Components are organized into four main categories:
-
Layout Components: Components that define the overall structure of the application (Header, Footer, etc.)
-
UI Components: Reusable UI elements (Button, Card, Modal, etc.)
-
Feature Components: Components specific to certain features (ProjectCard, ExperienceTimeline, ContactForm, etc.)
-
Shared Components: Components used across multiple features (Icon, LoadingSpinner, etc.)
The application uses TypeScript for:
- Component props and emits
- API responses
- State management
- Utility functions
State is managed using:
- Vue's Composition API
- Custom composables for shared logic
- Props and events for component communication
- Tailwind CSS for utility-first styling
- Custom components for complex UI elements
- Responsive design patterns
- Node.js 16.x or later
- npm or yarn
-
Install dependencies:
npm install
-
Start development server:
npm run dev
-
Build for production:
npm run build
The application is deployed using:
- AWS S3 for static file hosting
- CloudFront for CDN and caching
- Route 53 for DNS management
-
Component Design
- Keep components small and focused
- Use TypeScript for type safety
- Follow Vue 3 Composition API patterns
-
Code Organization
- Group related components together
- Use clear, descriptive names
- Document complex logic
-
Performance
- Lazy load components when possible
- Optimize images and assets
- Use proper caching strategies
-
Accessibility
- Use semantic HTML
- Include proper ARIA attributes
- Ensure keyboard navigation
- Fork the repository
- Create a feature branch
- Mail me for the
.envfile (deveci2024@gmail.com) - Commit your changes
- Push to the branch
- Create a Pull Request