chore: add README.md
This commit is contained in:
203
README.md
Normal file
203
README.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# Ragusa IT-Consulting
|
||||
|
||||
[](https://react.dev)
|
||||
[](https://www.typescriptlang.org)
|
||||
[](https://vitejs.dev)
|
||||
[](https://vitest.dev)
|
||||
|
||||
A modern, performant website for Ragusa IT-Consulting built with React 19, TypeScript, and Vite. Features smooth animations, internationalization (i18n), and a sophisticated design system.
|
||||
|
||||
## Features
|
||||
|
||||
- **Modern React 19** - Latest React features with concurrent rendering
|
||||
- **TypeScript** - Strict type checking for robust code
|
||||
- **Motion** - Beautiful animations and transitions
|
||||
- **i18n** - Internationalization with English and German support
|
||||
- **Responsive Design** - Mobile-first, fully responsive layout
|
||||
- **Accessibility** - ARIA labels, semantic HTML, keyboard navigation
|
||||
- **Performance** - Code splitting, lazy loading, optimized assets
|
||||
- **Testing** - Vitest with React Testing Library for comprehensive test coverage
|
||||
- **Firebase Hosting** - Production-ready deployment setup
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Framework**: React 19.2 with React Router 7
|
||||
- **Build Tool**: Vite 7.3
|
||||
- **Language**: TypeScript 5.9 (strict mode)
|
||||
- **Animation**: Motion (Framer Motion successor)
|
||||
- **Styling**: CSS Modules + Global CSS
|
||||
- **Testing**: Vitest + React Testing Library + jsdom
|
||||
- **Forms**: EmailJS for contact form
|
||||
- **Icons**: React Icons
|
||||
- **WebGL**: OGL for gradient effects
|
||||
- **Deployment**: Firebase Hosting
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 18+ recommended
|
||||
- pnpm (preferred) or npm
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/ragusa-it/ragusaitweb.git
|
||||
cd ragusaitweb
|
||||
|
||||
# Install dependencies
|
||||
pnpm install
|
||||
|
||||
# Copy environment variables
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
### Development
|
||||
|
||||
```bash
|
||||
# Start development server (port 3000)
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
# Production build
|
||||
pnpm build
|
||||
|
||||
# Preview production build
|
||||
pnpm preview
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
pnpm exec vitest
|
||||
|
||||
# Run tests in watch mode
|
||||
pnpm exec vitest --watch
|
||||
|
||||
# Run tests with coverage
|
||||
pnpm exec vitest --coverage
|
||||
|
||||
# Run a single test file
|
||||
pnpm exec vitest src/components/ui/__tests__/Button.test.tsx
|
||||
```
|
||||
|
||||
### Type Checking
|
||||
|
||||
```bash
|
||||
pnpm exec tsc --noEmit
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/
|
||||
│ ├── effects/ # Visual effects (GradientBlinds)
|
||||
│ ├── layout/ # Layout components (Navbar, Footer, FancyCursor)
|
||||
│ ├── sections/ # Page sections (Hero, Services)
|
||||
│ └── ui/ # Reusable UI components (Button, Input, Card, Modal)
|
||||
├── hooks/ # Custom React hooks (useRateLimit, useTypingEffect)
|
||||
├── i18n/ # Internationalization (en, de translations)
|
||||
├── pages/ # Route components (Home, About, Contact)
|
||||
├── styles/ # Global styles and theme
|
||||
├── utils/ # Utility functions (debounce, security)
|
||||
├── App.tsx # Main app component with routing
|
||||
├── config.ts # App configuration
|
||||
└── main.tsx # Entry point
|
||||
|
||||
public/ # Static assets
|
||||
build/ # Production build output
|
||||
```
|
||||
|
||||
## Available Scripts
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `pnpm dev` | Start development server |
|
||||
| `pnpm build` | Type-check and build for production |
|
||||
| `pnpm preview` | Preview production build locally |
|
||||
|
||||
## Key Features
|
||||
|
||||
### Animation System
|
||||
|
||||
- **FancyCursor**: Custom cursor with blend-mode effects
|
||||
- **GradientBlinds**: WebGL-powered animated gradient background
|
||||
- **PageLoader**: Smooth page transition loading state
|
||||
- **Motion**: All interactive elements use `motion` components for micro-interactions
|
||||
|
||||
### Internationalization
|
||||
|
||||
- Full i18n support with English and German
|
||||
- Language switching with context provider
|
||||
- RTL-ready architecture
|
||||
|
||||
### Performance Optimizations
|
||||
|
||||
- Code splitting with React.lazy() for routes
|
||||
- Preloaded critical fonts
|
||||
- Optimized build with Vite
|
||||
- Rate limiting hooks for form submissions
|
||||
|
||||
### Testing Strategy
|
||||
|
||||
- Unit tests for components
|
||||
- Hook tests for custom logic
|
||||
- Performance tests for heavy components
|
||||
- Security tests for utility functions
|
||||
|
||||
## Design System
|
||||
|
||||
- **Primary Font**: Sora (variable font, weights 100-800)
|
||||
- **Monospace**: JetBrains Mono
|
||||
- **Color Palette**: Dark theme with accent colors (defined in `.jules/palette.md`)
|
||||
- **Spacing**: CSS custom properties for consistent spacing
|
||||
- **Components**: Modular CSS with BEM-like naming in CSS Modules
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Copy `.env.example` to `.env` and configure:
|
||||
|
||||
```env
|
||||
VITE_EMAILJS_SERVICE_ID=your_service_id
|
||||
VITE_EMAILJS_TEMPLATE_ID=your_template_id
|
||||
VITE_EMAILJS_PUBLIC_KEY=your_public_key
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
The site is configured for Firebase Hosting. Build output goes to `build/` directory.
|
||||
|
||||
```bash
|
||||
# Build and deploy
|
||||
pnpm build
|
||||
firebase deploy
|
||||
```
|
||||
|
||||
## Browser Support
|
||||
|
||||
- Chrome 90+
|
||||
- Firefox 88+
|
||||
- Safari 14+
|
||||
- Edge 90+
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Follow the existing code style (see AGENTS.md)
|
||||
2. Use TypeScript strict mode
|
||||
3. Write tests for new features
|
||||
4. Ensure all tests pass before committing
|
||||
5. Use conventional commit messages
|
||||
|
||||
## License
|
||||
|
||||
ISC License - See package.json for details
|
||||
|
||||
---
|
||||
|
||||
**Ragusa IT-Consulting** - Professional Web Development & IT Support
|
||||
Reference in New Issue
Block a user