# Finlion Website

A modern, responsive business website built with Next.js, featuring a contact form, services showcase, and responsive design.

## Features
- Modern, responsive design with Tailwind CSS
- Server-side rendering with Next.js 15+
- Contact form with email integration
- Rate limiting for API routes
- Redis integration for caching and rate limiting
- Docker containerization for both development and production
- Animated UI components with Framer Motion
- Toast notifications system
- Responsive navigation with mobile support
- Services showcase section
- About page
- Contact page with form validation

## Technology Stack
### Frontend
- Next.js 15.0.4 with App Router
- React 19.0.0
- TypeScript
- Tailwind CSS for styling
- Framer Motion for animations
- HeadlessUI for UI components
- Lucide React & React Icons for icons

### Backend
- Next.js API Routes
- Nodemailer for email functionality
- Upstash Redis for rate limiting
- Environment variables management

### Development & Build Tools
- PNPM 9.14.2 package manager
- ESLint for code linting
- TypeScript for type safety
- Docker & Docker Compose
- PostCSS & Autoprefixer

## Getting Started

### Prerequisites
- Node.js 18+ installed
- PNPM package manager
- Docker and Docker Compose (for containerized development)
- Redis (handled through Upstash)

### Environment Variables
Create a `.env` file in the root directory with the following variables:
```env
# Email Configuration
SMTP_HOST=your-smtp-host
SMTP_PORT=your-smtp-port
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password
FROM_EMAIL=your-from-email
TO_EMAIL=your-to-email

# Redis Configuration (for rate limiting)
UPSTASH_REDIS_REST_URL=your-redis-url
UPSTASH_REDIS_REST_TOKEN=your-redis-token
```

### Development Setup

1. Install PNPM (if not already installed):
```bash
corepack enable && corepack prepare pnpm@latest --activate
```

2. Install dependencies:
```bash
pnpm install
```

3. Start the development server:

Using Docker:
```bash
docker compose -f docker-compose.dev.yml up
```

Without Docker:
```bash
pnpm dev
```

The site will be available at `http://localhost:3000`

### Production Deployment

1. Build and run using Docker:
```bash
docker compose up -d
```

The production site will be available at `http://localhost:805`

## Project Structure
```
├── public/               # Static files
│   ├── images/          # Image assets
│   └── ...
├── src/
│   ├── app/            # Next.js app router pages
│   │   ├── api/       # API routes
│   │   ├── about/     # About page
│   │   ├── contact/   # Contact page
│   │   └── services/  # Services page
│   ├── components/    # React components
│   │   ├── home/     # Home page components
│   │   ├── layout/   # Layout components
│   │   ├── providers/ # Context providers
│   │   ├── shared/   # Shared components
│   │   └── ui/       # UI components
│   ├── data/         # Static data
│   ├── lib/          # Utility functions
│   ├── styles/       # Global styles
│   └── types/        # TypeScript types
```

## API Routes
- `/api/contact` - Contact form submission endpoint with rate limiting

## Available Scripts
- `pnpm dev` - Start development server
- `pnpm build` - Build production application
- `pnpm start` - Start production server
- `pnpm lint` - Run ESLint

## Docker Configuration
Three Docker Compose configurations are available:
- `docker-compose.yml` - Production deployment
- `docker-compose.dev.yml` - Development environment with hot reload
- `docker-compose.staging.yml` - Staging environment

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

## License
This project is proprietary and confidential.
