2025-11-07 11:26:19 +01:00
|
|
|
# Kit Landing Page
|
|
|
|
|
|
|
|
|
|
A stylish, animated landing page for [kit.pivoine.art](https://kit.pivoine.art) - your creative toolkit.
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
- ✨ **Animated UI** - Smooth animations with Framer Motion
|
|
|
|
|
- 🎨 **Modern Design** - Glassmorphism effects, gradients, and animated backgrounds
|
|
|
|
|
- 📱 **Responsive** - Mobile-first design that works on all devices
|
|
|
|
|
- ⚡ **Fast** - Static export with Next.js 16 and Turbopack for optimal performance
|
|
|
|
|
- 🎯 **SEO Optimized** - Proper meta tags and semantic HTML
|
|
|
|
|
- 🚀 **Production Ready** - Docker support with Nginx
|
|
|
|
|
|
|
|
|
|
## Tech Stack
|
|
|
|
|
|
|
|
|
|
- **Next.js 16** - React framework with App Router and Turbopack
|
|
|
|
|
- **React 19** - Latest React with modern features
|
|
|
|
|
- **Tailwind CSS 4** - Utility-first CSS with CSS-first configuration
|
|
|
|
|
- **Framer Motion** - Professional animation library
|
|
|
|
|
- **TypeScript 5** - Type-safe development
|
|
|
|
|
- **ESLint 9** - Latest linting with flat config
|
|
|
|
|
- **pnpm** - Fast, efficient package manager
|
|
|
|
|
|
|
|
|
|
## Getting Started
|
|
|
|
|
|
|
|
|
|
### Prerequisites
|
|
|
|
|
|
|
|
|
|
- Node.js 20+
|
|
|
|
|
- pnpm (via corepack)
|
|
|
|
|
|
|
|
|
|
### Development
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Install dependencies
|
|
|
|
|
pnpm install
|
|
|
|
|
|
|
|
|
|
# Run development server
|
|
|
|
|
pnpm dev
|
|
|
|
|
|
|
|
|
|
# Build for production
|
|
|
|
|
pnpm build
|
|
|
|
|
|
|
|
|
|
# Preview production build locally
|
|
|
|
|
pnpm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Visit [http://localhost:3000](http://localhost:3000) to see the site.
|
|
|
|
|
|
|
|
|
|
## Docker Deployment
|
|
|
|
|
|
2025-11-07 11:29:28 +01:00
|
|
|
### Using Pre-built Image from GHCR
|
|
|
|
|
|
|
|
|
|
The Docker image is automatically built and published to GitHub Container Registry on every push to main:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Pull and run the latest image
|
|
|
|
|
docker pull ghcr.io/valknarness/kit-ui:latest
|
|
|
|
|
docker run -p 80:80 ghcr.io/valknarness/kit-ui:latest
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Build Locally
|
|
|
|
|
|
|
|
|
|
Or build and run locally:
|
2025-11-07 11:26:19 +01:00
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Build the image
|
|
|
|
|
docker build -t kit-landing .
|
|
|
|
|
|
|
|
|
|
# Run the container
|
|
|
|
|
docker run -p 80:80 kit-landing
|
|
|
|
|
```
|
|
|
|
|
|
2025-11-07 11:29:28 +01:00
|
|
|
### Docker Compose
|
|
|
|
|
|
|
|
|
|
For production deployment, see `/home/valknar/Projects/docker-compose/kit/compose.yaml`.
|
|
|
|
|
|
|
|
|
|
### Available Tags
|
|
|
|
|
|
|
|
|
|
- `latest` - Latest build from main branch
|
|
|
|
|
- `main` - Main branch builds
|
|
|
|
|
- `v*` - Semantic version tags (e.g., `v1.0.0`)
|
|
|
|
|
- `<branch>-<sha>` - Branch-specific builds with commit SHA
|
2025-11-07 11:26:19 +01:00
|
|
|
|
|
|
|
|
## Project Structure
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
.
|
|
|
|
|
├── app/
|
|
|
|
|
│ ├── layout.tsx # Root layout with metadata
|
|
|
|
|
│ ├── page.tsx # Home page
|
|
|
|
|
│ └── globals.css # Global styles and utilities
|
|
|
|
|
├── components/
|
|
|
|
|
│ ├── AnimatedBackground.tsx # Animated gradient background
|
|
|
|
|
│ ├── Hero.tsx # Hero section with logo
|
|
|
|
|
│ ├── Logo.tsx # Animated SVG logo
|
|
|
|
|
│ ├── ToolCard.tsx # Tool card component
|
|
|
|
|
│ ├── ToolsGrid.tsx # Grid of available tools
|
|
|
|
|
│ └── Footer.tsx # Footer component
|
|
|
|
|
├── public/ # Static assets
|
|
|
|
|
├── Dockerfile # Multi-stage Docker build
|
|
|
|
|
├── nginx.conf # Nginx configuration
|
|
|
|
|
└── next.config.ts # Next.js configuration
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Customization
|
|
|
|
|
|
|
|
|
|
### Adding New Tools
|
|
|
|
|
|
|
|
|
|
Edit `components/ToolsGrid.tsx` and add a new tool object to the `tools` array:
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
{
|
|
|
|
|
title: 'Tool Name',
|
|
|
|
|
description: 'Tool description',
|
|
|
|
|
url: 'https://tool.kit.pivoine.art',
|
|
|
|
|
gradient: 'gradient-purple-blue', // or 'gradient-cyan-purple'
|
|
|
|
|
icon: (
|
|
|
|
|
// Your SVG icon here
|
|
|
|
|
),
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Styling
|
|
|
|
|
|
|
|
|
|
Tailwind CSS 4 uses a new CSS-first configuration approach:
|
|
|
|
|
|
|
|
|
|
- **Theme customization**: Edit the `@theme` block in `app/globals.css`
|
|
|
|
|
- **Custom utilities**: Add `@utility` blocks in `app/globals.css`
|
|
|
|
|
- **Animations**: Define keyframes directly in the `@theme` block
|
|
|
|
|
- **Colors & fonts**: Configure via CSS custom properties in `@theme`
|
|
|
|
|
|
|
|
|
|
## Available Tools
|
|
|
|
|
|
2025-11-07 11:29:28 +01:00
|
|
|
- **Vert** - Privacy-focused file converter (images, audio, documents)
|
2025-11-07 12:16:46 +01:00
|
|
|
- **Pastel** - Modern color manipulation toolkit with palette generation and accessibility testing
|
2025-11-07 19:13:19 +01:00
|
|
|
- **Stirling** - Powerful PDF toolkit with 50+ operations (merge, split, convert, OCR, sign)
|
2025-11-08 10:20:29 +01:00
|
|
|
- **Units** - Smart unit converter with 187 units across 23 categories (length, mass, temperature, etc.)
|
2025-11-08 17:35:56 +01:00
|
|
|
- **Draw** - Virtual whiteboard for sketching hand-drawn style diagrams (flowcharts, wireframes, collaborative editing)
|
2025-11-09 13:15:12 +01:00
|
|
|
- **Figlet** - ASCII art text generator with 373 fonts (text banners, terminal art, retro designs)
|
2025-11-07 11:26:19 +01:00
|
|
|
|
2025-11-07 11:29:28 +01:00
|
|
|
## CI/CD Pipeline
|
|
|
|
|
|
|
|
|
|
The project uses GitHub Actions for automated Docker image builds:
|
|
|
|
|
|
|
|
|
|
### Workflow Features
|
|
|
|
|
|
|
|
|
|
- ✅ **Automated builds** on push to main and tags
|
|
|
|
|
- ✅ **Multi-architecture support** (linux/amd64, linux/arm64)
|
|
|
|
|
- ✅ **GitHub Container Registry** (GHCR) publishing
|
|
|
|
|
- ✅ **Build caching** for faster builds
|
|
|
|
|
- ✅ **Artifact attestation** for supply chain security
|
|
|
|
|
- ✅ **Semantic versioning** support
|
|
|
|
|
|
|
|
|
|
### Triggering Builds
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Automatic build on push to main
|
|
|
|
|
git push origin main
|
|
|
|
|
|
|
|
|
|
# Create a versioned release
|
|
|
|
|
git tag v1.0.0
|
|
|
|
|
git push origin v1.0.0
|
|
|
|
|
|
|
|
|
|
# Manual trigger via GitHub Actions UI
|
|
|
|
|
# Go to Actions → Build and Push Docker Image → Run workflow
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Using the Published Image
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Latest from main branch
|
|
|
|
|
docker pull ghcr.io/valknarness/kit-ui:latest
|
|
|
|
|
|
|
|
|
|
# Specific version
|
|
|
|
|
docker pull ghcr.io/valknarness/kit-ui:v1.0.0
|
|
|
|
|
|
|
|
|
|
# Specific commit
|
|
|
|
|
docker pull ghcr.io/valknarness/kit-ui:main-abc1234
|
|
|
|
|
```
|
|
|
|
|
|
2025-11-07 11:26:19 +01:00
|
|
|
## Performance
|
|
|
|
|
|
|
|
|
|
- Static export for fast loading
|
|
|
|
|
- Optimized images and assets
|
|
|
|
|
- Gzip compression via Nginx
|
|
|
|
|
- Proper caching headers
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
Private project - All rights reserved.
|
|
|
|
|
|
|
|
|
|
## Author
|
|
|
|
|
|
|
|
|
|
Created for [pivoine.art](https://pivoine.art)
|