Overview
Gitea’s frontend is built with Vue.js 3, TypeScript, and Webpack, combining server-rendered templates with reactive components.Technology Stack
Framework
Vue.js 3.5+
- Composition API
- Single-file components
- Reactive state management
Language
TypeScript
- Type-safe JavaScript
- Better IDE support
- Fewer runtime errors
Build Tool
Webpack 5
- Module bundling
- Asset optimization
- Code splitting
Package Manager
pnpm 10+
- Fast, efficient
- Monorepo support
- Disk space savings
Directory Structure
Build System
Development Build
Production Build
Build Configuration
Webpack configuration inwebpack.config.ts:
Vue Components
Component Structure
Registering Components
Template Integration
Styling
CSS Architecture
Gitea uses a combination of:- Base styles: Core styling and resets
- Component styles: Scoped to Vue components
- Utility classes: Tailwind-inspired utilities
- CSS variables: For theming
CSS Variables
Responsive Design
TypeScript
Type Definitions
API Client
State Management
Reactive Store
Testing
Unit Tests
E2E Tests
Playwright tests intests/e2e/:
Performance Optimization
Code Splitting
Asset Optimization
- Image optimization: WebP format with fallbacks
- Icon sprites: SVG sprite sheets
- CSS minification: Production builds
- Tree shaking: Remove unused code
Best Practices
Use TypeScript
Always type your components and functions
Scoped Styles
Use
<style scoped> to prevent style leakageComposition API
Prefer Composition API over Options API
Accessibility
Use semantic HTML and ARIA attributes
See Also
Architecture
Overall architecture overview
Building
Build Gitea from source
Contributing
Contribution guidelines