An open API service indexing awesome lists of open source software.

https://github.com/workworklabs/landingpage

WorkWork Frotend
https://github.com/workworklabs/landingpage

Last synced: 4 months ago
JSON representation

WorkWork Frotend

Awesome Lists containing this project

README

          

# WorkWork Landing Page Template

A modern, fully-featured Vue 3 + TypeScript landing page template with complete component architecture and extensibility.

## ๐Ÿš€ Features

### Architecture
- **Vue 3** with Composition API & ``
- **TypeScript** for type safety
- **Pinia** for state management
- **Vue Router** for routing
- **Vite** for fast development and building

### Components
- **Modular Architecture**: Fully componentized with clear separation
- **Base Components**: Reusable UI components (Button, Input, Card)
- **Layout Components**: Header, Footer with responsive navigation
- **Section Components**: Hero, Features, Products, Team, Stats, Newsletter
- **Form Handling**: Built-in validation with Composables

### Features
- โœ… **Fully Responsive** - Mobile-first design
- โœ… **TypeScript** - Complete type safety
- โœ… **State Management** - Pinia stores for content and app state
- โœ… **Form Validation** - Real-time validation with custom composables
- โœ… **Smooth Animations** - CSS transitions and keyframes
- โœ… **SEO Optimized** - Meta tags, structured data
- โœ… **Performance** - Code splitting, lazy loading
- โœ… **Accessibility** - ARIA labels, keyboard navigation
- โœ… **Modern CSS** - CSS Grid, Flexbox, custom properties

## ๐Ÿ“ Project Structure

```
src/
โ”œโ”€โ”€ components/
โ”‚ โ”œโ”€โ”€ base/ # Reusable UI components
โ”‚ โ”‚ โ”œโ”€โ”€ BaseButton.vue
โ”‚ โ”‚ โ”œโ”€โ”€ BaseInput.vue
โ”‚ โ”‚ โ””โ”€โ”€ BaseCard.vue
โ”‚ โ”œโ”€โ”€ forms/ # Form components
โ”‚ โ”‚ โ””โ”€โ”€ NewsletterForm.vue
โ”‚ โ”œโ”€โ”€ layout/ # Layout components
โ”‚ โ”‚ โ”œโ”€โ”€ AppHeader.vue
โ”‚ โ”‚ โ””โ”€โ”€ AppFooter.vue
โ”‚ โ””โ”€โ”€ sections/ # Page sections
โ”‚ โ”œโ”€โ”€ HeroSection.vue
โ”‚ โ”œโ”€โ”€ FeaturesSection.vue
โ”‚ โ”œโ”€โ”€ ProductsSection.vue
โ”‚ โ”œโ”€โ”€ TeamSection.vue
โ”‚ โ””โ”€โ”€ StatsSection.vue
โ”œโ”€โ”€ composables/ # Vue composables
โ”‚ โ””โ”€โ”€ useFormValidation.ts
โ”œโ”€โ”€ stores/ # Pinia stores
โ”‚ โ”œโ”€โ”€ app.ts
โ”‚ โ””โ”€โ”€ content.ts
โ”œโ”€โ”€ types/ # TypeScript types
โ”‚ โ””โ”€โ”€ index.ts
โ”œโ”€โ”€ views/ # Page views
โ”‚ โ””โ”€โ”€ HomeView.vue
โ”œโ”€โ”€ router/ # Vue Router
โ”‚ โ””โ”€โ”€ index.ts
โ”œโ”€โ”€ App.vue
โ””โ”€โ”€ main.ts
```

## ๐Ÿ›  Development

### Prerequisites
- Node.js 16+
- npm or yarn

### Setup
```bash
# Install dependencies
npm install

# Copy environment file
cp .env.example .env

# Start development server
npm run dev
```

### Available Scripts
```bash
npm run dev # Start dev server
npm run build # Build for production
npm run preview # Preview production build
npm run type-check # TypeScript type checking
npm run lint # Lint with ESLint
npm run format # Format with Prettier
```

## ๐ŸŽจ Customization

### Content Management
All content is managed through Pinia stores:
- **`stores/content.ts`** - Page content, navigation, team data
- **`stores/app.ts`** - App configuration, UI state

### Styling
- CSS-in-Vue with scoped styles
- Custom CSS properties for theming
- Responsive design with mobile-first approach

### Component Extension
1. Create new components in appropriate folders
2. Follow existing patterns for props/events
3. Use TypeScript interfaces from `types/index.ts`
4. Add to content store if needed

## ๐Ÿ”ง Configuration

### Environment Variables
Create `.env` file from `.env.example`:
- `VITE_APP_TITLE` - Application title
- `VITE_API_URL` - API endpoint
- `VITE_GA_ID` - Google Analytics ID

### Build Configuration
- **Vite config**: `vite.config.ts`
- **TypeScript**: `tsconfig.json`
- **Path aliases**: `@/*` maps to `src/*`

## ๐Ÿ“ฑ Responsive Design

Breakpoints:
- `xs`: < 640px
- `sm`: 640px+
- `md`: 768px+
- `lg`: 1024px+
- `xl`: 1280px+
- `2xl`: 1536px+

## ๐Ÿš€ Deployment

### Build
```bash
npm run build
```

### Deploy to Vercel
```bash
npm i -g vercel
vercel --prod
```

### Deploy to Netlify
1. Connect your repo to Netlify
2. Build command: `npm run build`
3. Publish directory: `dist`

## ๐Ÿ“Š Performance

- **Code Splitting**: Automatic route-based splitting
- **Tree Shaking**: Unused code elimination
- **Asset Optimization**: Images and fonts optimized
- **Lazy Loading**: Components loaded on demand

## ๐ŸŽฏ SEO Features

- Meta tags with dynamic content
- Structured data (JSON-LD)
- Semantic HTML
- Open Graph tags
- Twitter Card support
- Canonical URLs

## ๐Ÿงช Testing (Optional)

Add testing framework:
```bash
# Vitest + Testing Library
npm i -D vitest @vue/test-utils jsdom
npm i -D @testing-library/vue @testing-library/jest-dom
```

## ๐Ÿ“ Contributing

1. Fork the repository
2. Create feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Open Pull Request

## ๐Ÿ“„ License

MIT License - see LICENSE file for details

## ๐Ÿค Support

- Create an issue for bugs/features
- Star the repo if it helps you!
- Contribute back improvements

---

**Built with โค๏ธ using Vue3**