Compare commits
6 Commits
master
...
fix/node-c
| Author | SHA1 | Date | |
|---|---|---|---|
| 9974811a3e | |||
| 291fc63a4c | |||
| 6ff35e26f4 | |||
| 46fad7ecc2 | |||
| 43c660c01e | |||
| 9477ff6de0 |
151
.github/copilot-instructions.md
vendored
Normal file
151
.github/copilot-instructions.md
vendored
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
# SmartSolTech Website - AI Coding Agent Instructions
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
SmartSolTech is a **Korean tech services company** PWA with an admin panel, portfolio management, Telegram integration, and service calculator. Built with Node.js/Express backend, EJS templating, MongoDB, and modern PWA features.
|
||||||
|
|
||||||
|
## Architecture & Key Patterns
|
||||||
|
|
||||||
|
### 🏗️ Backend Architecture
|
||||||
|
- **Main server**: `server.js` - Express app with comprehensive middleware stack
|
||||||
|
- **Models**: MongoDB with Mongoose ODM - all in `/models/` (User, Portfolio, Service, Contact, SiteSettings)
|
||||||
|
- **Routes**: RESTful API patterns in `/routes/` - separate files per domain
|
||||||
|
- **Authentication**: Dual auth system - JWT tokens for API, sessions for web pages
|
||||||
|
- **Validation**: express-validator middleware in `/middleware/validation.js` with Korean error messages
|
||||||
|
|
||||||
|
### 🔑 Authentication Pattern
|
||||||
|
```javascript
|
||||||
|
// Two authentication strategies:
|
||||||
|
// 1. JWT for API endpoints (authenticateToken)
|
||||||
|
// 2. Session-based for web pages (authenticateSession)
|
||||||
|
// See middleware/auth.js for implementations
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📊 Data Models Key Features
|
||||||
|
- **Portfolio**: Has virtual `primaryImage` getter, text search indexes, and SEO fields
|
||||||
|
- **Service**: Complex pricing structure with features array (included/not included)
|
||||||
|
- **User**: bcrypt password hashing with pre-save hook and comparePassword method
|
||||||
|
- **All models**: Use timestamps and have soft-delete patterns where applicable
|
||||||
|
|
||||||
|
### 🛣️ Route Organization
|
||||||
|
- **Admin routes** (`/admin`): Session-based auth, server-side rendered EJS views
|
||||||
|
- **API routes** (`/api/*`): JWT auth, JSON responses, rate-limited
|
||||||
|
- **Public routes** (`/`): Mixed auth (optional), EJS templates with PWA support
|
||||||
|
|
||||||
|
## Development Workflow
|
||||||
|
|
||||||
|
### 🚀 Essential Commands
|
||||||
|
```bash
|
||||||
|
# Development with hot reload and file watching
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# Initialize database with admin user and sample data
|
||||||
|
npm run init-db
|
||||||
|
|
||||||
|
# Production build with webpack optimization
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Database setup creates:
|
||||||
|
# - Admin user (from .env: ADMIN_EMAIL/ADMIN_PASSWORD)
|
||||||
|
# - Sample services, portfolio items, site settings
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔧 Environment Setup
|
||||||
|
**Critical `.env` variables**:
|
||||||
|
- `MONGODB_URI` - Database connection
|
||||||
|
- `SESSION_SECRET`, `JWT_SECRET` - Security keys
|
||||||
|
- `ADMIN_EMAIL`, `ADMIN_PASSWORD` - Initial admin account
|
||||||
|
- `TELEGRAM_BOT_TOKEN` - Optional Telegram integration
|
||||||
|
- `NODE_ENV` - Controls error verbosity and security settings
|
||||||
|
|
||||||
|
## Frontend Architecture
|
||||||
|
|
||||||
|
### 🎨 View Layer (EJS Templates)
|
||||||
|
- **Layout system**: `views/layout.ejs` is main wrapper
|
||||||
|
- **Partials**: `views/partials/` for reusable components (navigation, footer)
|
||||||
|
- **Admin panel**: Separate layout `admin/layout.ejs` with different styling
|
||||||
|
- **Internationalization**: Content in Korean, supports locales in `/locales/`
|
||||||
|
|
||||||
|
### 📱 PWA Implementation
|
||||||
|
- **Service Worker**: `public/sw.js` - caches static files, dynamic routes, and API responses
|
||||||
|
- **Manifest**: `public/manifest.json` - app metadata and icons
|
||||||
|
- **Offline-first**: Service worker handles network failures gracefully
|
||||||
|
- **Cache strategy**: Static files cached immediately, dynamic content cached on demand
|
||||||
|
|
||||||
|
### 🎯 Frontend JavaScript Patterns
|
||||||
|
- **Main script**: `public/js/main.js` - handles navigation, scroll effects, form interactions
|
||||||
|
- **Calculator**: `public/js/calculator.js` - complex service pricing calculations
|
||||||
|
- **Libraries**: AOS animations, Tailwind CSS, Socket.io for real-time features
|
||||||
|
|
||||||
|
## Key Integration Points
|
||||||
|
|
||||||
|
### 📧 Communication Systems
|
||||||
|
- **Telegram Bot**: Optional integration for admin notifications (contact forms, orders)
|
||||||
|
- **Email**: Nodemailer for SMTP email sending (contact forms, notifications)
|
||||||
|
- **Real-time**: Socket.io setup for live updates (dashboard, notifications)
|
||||||
|
|
||||||
|
### 🔒 Security Patterns
|
||||||
|
- **Helmet**: CSP headers allowing specific domains (fonts.googleapis.com, cdnjs.cloudflare.com)
|
||||||
|
- **Rate limiting**: Applied to `/api/*` routes (100 requests/15min per IP)
|
||||||
|
- **Input validation**: Korean-language error messages, comprehensive field validation
|
||||||
|
- **File uploads**: Multer with Sharp image processing, stored in `public/uploads/`
|
||||||
|
|
||||||
|
### 🗄️ Database Patterns
|
||||||
|
- **Connection**: Single MongoDB connection with connection pooling
|
||||||
|
- **Indexing**: Text search on Portfolio, compound indexes for performance
|
||||||
|
- **Session storage**: MongoDB session store for persistence
|
||||||
|
|
||||||
|
## Business Logic Specifics
|
||||||
|
|
||||||
|
### 💰 Service Calculator
|
||||||
|
- **Complex pricing**: Base price + features + timeline modifiers
|
||||||
|
- **Multi-step form**: Service selection → customization → contact info → quote
|
||||||
|
- **Integration**: Calculator data feeds into Contact model for lead tracking
|
||||||
|
|
||||||
|
### 🎨 Portfolio Management
|
||||||
|
- **Image handling**: Multiple images per project, primary image logic
|
||||||
|
- **Categories**: Predefined categories (web-development, mobile-app, ui-ux-design, etc.)
|
||||||
|
- **SEO optimization**: Meta fields, structured data for portfolio items
|
||||||
|
|
||||||
|
### 👑 Admin Panel Features
|
||||||
|
- **Dashboard**: Statistics, recent activity, quick actions
|
||||||
|
- **Content management**: CRUD for Portfolio, Services, Site Settings
|
||||||
|
- **Media gallery**: File upload with image optimization
|
||||||
|
- **Contact management**: Lead tracking, status updates, response handling
|
||||||
|
|
||||||
|
## Common Tasks & Patterns
|
||||||
|
|
||||||
|
### 🔧 Adding New Features
|
||||||
|
1. **Model**: Create in `/models/` with proper validation and indexes
|
||||||
|
2. **Routes**: Add to `/routes/` with appropriate auth middleware
|
||||||
|
3. **Views**: EJS templates in `/views/` using layout system
|
||||||
|
4. **API**: JSON endpoints with validation middleware
|
||||||
|
5. **Frontend**: Add to `public/js/` with proper event handling
|
||||||
|
|
||||||
|
### 🐛 Debugging Workflow
|
||||||
|
- **Development**: Use `npm run dev` for auto-restart and detailed logging
|
||||||
|
- **Database**: Check MongoDB connection and sample data with `npm run init-db`
|
||||||
|
- **Authentication**: Test both JWT (API) and session (web) auth flows
|
||||||
|
- **PWA**: Check service worker registration and cache behavior in dev tools
|
||||||
|
|
||||||
|
### 📦 Deployment Considerations
|
||||||
|
- **Environment**: Production requires secure cookies, CSP, and rate limiting
|
||||||
|
- **Database**: Ensure MongoDB indexes are created for performance
|
||||||
|
- **Assets**: Static files served by Express, consider CDN for production
|
||||||
|
- **Monitoring**: Error handling sends different messages based on NODE_ENV
|
||||||
|
|
||||||
|
## File Structure Quick Reference
|
||||||
|
```
|
||||||
|
├── models/ # MongoDB schemas with business logic
|
||||||
|
├── routes/ # Express routes (API + web pages)
|
||||||
|
├── middleware/ # Auth, validation, error handling
|
||||||
|
├── views/ # EJS templates with Korean content
|
||||||
|
├── public/ # Static assets + PWA files
|
||||||
|
├── scripts/ # Database init, dev server, build tools
|
||||||
|
└── server.js # Main Express application
|
||||||
|
```
|
||||||
|
|
||||||
|
## Korean Language Notes
|
||||||
|
- **UI Text**: All user-facing content in Korean
|
||||||
|
- **Error Messages**: Validation errors in Korean (`middleware/validation.js`)
|
||||||
|
- **Admin Interface**: Korean labels and messages throughout admin panel
|
||||||
|
- **SEO Content**: Korean meta descriptions and structured data
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Environment Configuration
|
|
||||||
NODE_ENV=development
|
|
||||||
PORT=3000
|
|
||||||
|
|
||||||
# Database
|
|
||||||
MONGODB_URI=mongodb://localhost:27017/smartsoltech
|
|
||||||
|
|
||||||
# JWT Secret
|
|
||||||
JWT_SECRET=your_super_secret_jwt_key_here_change_in_production
|
|
||||||
|
|
||||||
# Session Secret
|
|
||||||
SESSION_SECRET=your_session_secret_here_change_in_production
|
|
||||||
|
|
||||||
# Telegram Bot
|
|
||||||
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
|
|
||||||
TELEGRAM_CHAT_ID=your_telegram_chat_id_here
|
|
||||||
|
|
||||||
# Email Configuration (for contact forms)
|
|
||||||
EMAIL_HOST=smtp.gmail.com
|
|
||||||
EMAIL_PORT=587
|
|
||||||
EMAIL_USER=your_email@gmail.com
|
|
||||||
EMAIL_PASS=your_email_password
|
|
||||||
|
|
||||||
# Admin Credentials (default)
|
|
||||||
ADMIN_EMAIL=admin@smartsoltech.kr
|
|
||||||
ADMIN_PASSWORD=admin123456
|
|
||||||
|
|
||||||
# File Upload
|
|
||||||
MAX_FILE_SIZE=10485760
|
|
||||||
UPLOAD_PATH=./public/uploads
|
|
||||||
|
|
||||||
# Site Configuration
|
|
||||||
SITE_URL=https://smartsoltech.kr
|
|
||||||
SITE_NAME=SmartSolTech
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Environment Configuration
|
|
||||||
NODE_ENV=development
|
|
||||||
PORT=3000
|
|
||||||
|
|
||||||
# Database
|
|
||||||
MONGODB_URI=mongodb://localhost:27017/smartsoltech
|
|
||||||
|
|
||||||
# JWT Secret
|
|
||||||
JWT_SECRET=your_super_secret_jwt_key_here_change_in_production
|
|
||||||
|
|
||||||
# Session Secret
|
|
||||||
SESSION_SECRET=your_session_secret_here_change_in_production
|
|
||||||
|
|
||||||
# Telegram Bot
|
|
||||||
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
|
|
||||||
TELEGRAM_CHAT_ID=your_telegram_chat_id_here
|
|
||||||
|
|
||||||
# Email Configuration (for contact forms)
|
|
||||||
EMAIL_HOST=smtp.gmail.com
|
|
||||||
EMAIL_PORT=587
|
|
||||||
EMAIL_USER=your_email@gmail.com
|
|
||||||
EMAIL_PASS=your_email_password
|
|
||||||
|
|
||||||
# Admin Credentials (default)
|
|
||||||
ADMIN_EMAIL=admin@smartsoltech.kr
|
|
||||||
ADMIN_PASSWORD=admin123456
|
|
||||||
|
|
||||||
# File Upload
|
|
||||||
MAX_FILE_SIZE=10485760
|
|
||||||
UPLOAD_PATH=./public/uploads
|
|
||||||
|
|
||||||
# Site Configuration
|
|
||||||
SITE_URL=https://smartsoltech.kr
|
|
||||||
SITE_NAME=SmartSolTech
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
node_modules/
|
|
||||||
.env
|
|
||||||
.env.local
|
|
||||||
.env.production
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
.DS_Store
|
|
||||||
dist/
|
|
||||||
build/
|
|
||||||
uploads/
|
|
||||||
*.log
|
|
||||||
.vscode/
|
|
||||||
.idea/
|
|
||||||
coverage/
|
|
||||||
.nyc_output/
|
|
||||||
*.tgz
|
|
||||||
*.tar.gz
|
|
||||||
.cache/
|
|
||||||
.parcel-cache/
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
node_modules/
|
|
||||||
.env
|
|
||||||
.env.local
|
|
||||||
.env.production
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
.DS_Store
|
|
||||||
dist/
|
|
||||||
build/
|
|
||||||
uploads/
|
|
||||||
*.log
|
|
||||||
.vscode/
|
|
||||||
.idea/
|
|
||||||
coverage/
|
|
||||||
.nyc_output/
|
|
||||||
*.tgz
|
|
||||||
*.tar.gz
|
|
||||||
.cache/
|
|
||||||
.parcel-cache/
|
|
||||||
63
.history/ADMINLTE_CSP_FIX_20251026213607.md
Normal file
63
.history/ADMINLTE_CSP_FIX_20251026213607.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# AdminLTE CSP Fix - Исправление Content Security Policy
|
||||||
|
|
||||||
|
## Проблема
|
||||||
|
Content Security Policy (CSP) блокировал загрузку jQuery и Bootstrap из CDN, что приводило к ошибкам:
|
||||||
|
|
||||||
|
```
|
||||||
|
Content-Security-Policy: The page's settings blocked a script (script-src-elem) at https://code.jquery.com/jquery-3.6.0.min.js
|
||||||
|
Content-Security-Policy: The page's settings blocked a script (script-src-elem) at https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js
|
||||||
|
```
|
||||||
|
|
||||||
|
## Причина
|
||||||
|
В server.js в настройках helmet CSP для `scriptSrc` отсутствовали домены:
|
||||||
|
- `https://code.jquery.com` (для jQuery)
|
||||||
|
- `https://cdn.jsdelivr.net` (для Bootstrap)
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
Обновлены CSP настройки в `/server.js`:
|
||||||
|
|
||||||
|
### ДО:
|
||||||
|
```javascript
|
||||||
|
scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com"],
|
||||||
|
```
|
||||||
|
|
||||||
|
### ПОСЛЕ:
|
||||||
|
```javascript
|
||||||
|
scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com", "https://code.jquery.com", "https://cdn.jsdelivr.net"],
|
||||||
|
```
|
||||||
|
|
||||||
|
## Полная CSP конфигурация
|
||||||
|
```javascript
|
||||||
|
app.use(helmet({
|
||||||
|
contentSecurityPolicy: {
|
||||||
|
directives: {
|
||||||
|
defaultSrc: ["'self'"],
|
||||||
|
styleSrc: ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com", "https://cdnjs.cloudflare.com", "https://cdn.jsdelivr.net", "https://unpkg.com", "https://cdn.tailwindcss.com"],
|
||||||
|
fontSrc: ["'self'", "https://fonts.gstatic.com", "https://cdnjs.cloudflare.com"],
|
||||||
|
scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com", "https://code.jquery.com", "https://cdn.jsdelivr.net"],
|
||||||
|
imgSrc: ["'self'", "data:", "https:"],
|
||||||
|
connectSrc: ["'self'", "ws:", "wss:", "https://cdnjs.cloudflare.com", "https://cdn.jsdelivr.net", "https://unpkg.com", "https://fonts.googleapis.com", "https://fonts.gstatic.com", "https://cdn.tailwindcss.com"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
```
|
||||||
|
|
||||||
|
## Результат
|
||||||
|
✅ AdminLTE 3 теперь работает полностью:
|
||||||
|
- ✅ CSS стили загружаются
|
||||||
|
- ✅ jQuery загружается без ошибок CSP
|
||||||
|
- ✅ Bootstrap загружается без ошибок CSP
|
||||||
|
- ✅ AdminLTE JavaScript функции работают
|
||||||
|
- ✅ Интерактивные элементы функциональны
|
||||||
|
|
||||||
|
## Тестирование
|
||||||
|
После исправления CSP:
|
||||||
|
1. Перезапустить сервер: `npm start`
|
||||||
|
2. Открыть админку: `http://localhost:3000/admin`
|
||||||
|
3. Проверить консоль браузера - ошибки CSP исчезли
|
||||||
|
4. Проверить функциональность: навигация, выпадающие меню, модальные окна
|
||||||
|
|
||||||
|
## Примечания
|
||||||
|
- Исправление обеспечивает безопасность через CSP при разрешении необходимых CDN
|
||||||
|
- AdminLTE теперь полностью функциональна с корейской локализацией
|
||||||
|
- Все зависимости загружаются правильно
|
||||||
63
.history/ADMINLTE_CSP_FIX_20251026213623.md
Normal file
63
.history/ADMINLTE_CSP_FIX_20251026213623.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# AdminLTE CSP Fix - Исправление Content Security Policy
|
||||||
|
|
||||||
|
## Проблема
|
||||||
|
Content Security Policy (CSP) блокировал загрузку jQuery и Bootstrap из CDN, что приводило к ошибкам:
|
||||||
|
|
||||||
|
```
|
||||||
|
Content-Security-Policy: The page's settings blocked a script (script-src-elem) at https://code.jquery.com/jquery-3.6.0.min.js
|
||||||
|
Content-Security-Policy: The page's settings blocked a script (script-src-elem) at https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js
|
||||||
|
```
|
||||||
|
|
||||||
|
## Причина
|
||||||
|
В server.js в настройках helmet CSP для `scriptSrc` отсутствовали домены:
|
||||||
|
- `https://code.jquery.com` (для jQuery)
|
||||||
|
- `https://cdn.jsdelivr.net` (для Bootstrap)
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
Обновлены CSP настройки в `/server.js`:
|
||||||
|
|
||||||
|
### ДО:
|
||||||
|
```javascript
|
||||||
|
scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com"],
|
||||||
|
```
|
||||||
|
|
||||||
|
### ПОСЛЕ:
|
||||||
|
```javascript
|
||||||
|
scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com", "https://code.jquery.com", "https://cdn.jsdelivr.net"],
|
||||||
|
```
|
||||||
|
|
||||||
|
## Полная CSP конфигурация
|
||||||
|
```javascript
|
||||||
|
app.use(helmet({
|
||||||
|
contentSecurityPolicy: {
|
||||||
|
directives: {
|
||||||
|
defaultSrc: ["'self'"],
|
||||||
|
styleSrc: ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com", "https://cdnjs.cloudflare.com", "https://cdn.jsdelivr.net", "https://unpkg.com", "https://cdn.tailwindcss.com"],
|
||||||
|
fontSrc: ["'self'", "https://fonts.gstatic.com", "https://cdnjs.cloudflare.com"],
|
||||||
|
scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com", "https://code.jquery.com", "https://cdn.jsdelivr.net"],
|
||||||
|
imgSrc: ["'self'", "data:", "https:"],
|
||||||
|
connectSrc: ["'self'", "ws:", "wss:", "https://cdnjs.cloudflare.com", "https://cdn.jsdelivr.net", "https://unpkg.com", "https://fonts.googleapis.com", "https://fonts.gstatic.com", "https://cdn.tailwindcss.com"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
```
|
||||||
|
|
||||||
|
## Результат
|
||||||
|
✅ AdminLTE 3 теперь работает полностью:
|
||||||
|
- ✅ CSS стили загружаются
|
||||||
|
- ✅ jQuery загружается без ошибок CSP
|
||||||
|
- ✅ Bootstrap загружается без ошибок CSP
|
||||||
|
- ✅ AdminLTE JavaScript функции работают
|
||||||
|
- ✅ Интерактивные элементы функциональны
|
||||||
|
|
||||||
|
## Тестирование
|
||||||
|
После исправления CSP:
|
||||||
|
1. Перезапустить сервер: `npm start`
|
||||||
|
2. Открыть админку: `http://localhost:3000/admin`
|
||||||
|
3. Проверить консоль браузера - ошибки CSP исчезли
|
||||||
|
4. Проверить функциональность: навигация, выпадающие меню, модальные окна
|
||||||
|
|
||||||
|
## Примечания
|
||||||
|
- Исправление обеспечивает безопасность через CSP при разрешении необходимых CDN
|
||||||
|
- AdminLTE теперь полностью функциональна с корейской локализацией
|
||||||
|
- Все зависимости загружаются правильно
|
||||||
109
.history/ADMINLTE_SETUP_COMPLETE_20251026212843.md
Normal file
109
.history/ADMINLTE_SETUP_COMPLETE_20251026212843.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# SmartSolTech AdminLTE 3 - Документация
|
||||||
|
|
||||||
|
## ✅ Успешно настроен AdminLTE 3!
|
||||||
|
|
||||||
|
AdminLTE 3 теперь полностью интегрирован в ваш сайт SmartSolTech как основная админ-панель.
|
||||||
|
|
||||||
|
## 🎯 Что было сделано:
|
||||||
|
|
||||||
|
### 1. **Полная замена старой админки**
|
||||||
|
- ❌ Удалена старая Tailwind-админка
|
||||||
|
- ❌ Удалены все демо-файлы и сравнения
|
||||||
|
- ❌ Удален Tabler и связанные файлы
|
||||||
|
- ✅ AdminLTE 3 стал основной админкой
|
||||||
|
|
||||||
|
### 2. **Новый дизайн и функциональность**
|
||||||
|
- 🎨 **Корейская локализация** - все элементы переведены
|
||||||
|
- 📊 **Современный dashboard** с информативными карточками
|
||||||
|
- 🔢 **Статистика в sidebar** - счетчики портфолио, услуг, сообщений
|
||||||
|
- 📱 **Адаптивный дизайн** для всех устройств
|
||||||
|
- 🎭 **Профессиональная цветовая схема**
|
||||||
|
|
||||||
|
### 3. **Интеграция с существующей системой**
|
||||||
|
- 🔗 **Полная совместимость** с текущими маршрутами
|
||||||
|
- 📊 **Middleware для статистики** на всех страницах
|
||||||
|
- 🔐 **Сохранена вся авторизация** и безопасность
|
||||||
|
- 💾 **Все данные остались** без изменений
|
||||||
|
|
||||||
|
## 🎨 Основные возможности AdminLTE:
|
||||||
|
|
||||||
|
### Dashboard (대시보드)
|
||||||
|
- 📈 **Статистические карточки** с progress bar
|
||||||
|
- 📋 **Последние проекты** с статусами (완료/진행중/계획)
|
||||||
|
- 📧 **Последние сообщения** с цветными статусами
|
||||||
|
- ⚡ **Быстрые действия** с градиентными кнопками
|
||||||
|
- 📊 **Системный статус** и метрики
|
||||||
|
|
||||||
|
### Навигация
|
||||||
|
- 🎯 **Активные индикаторы** текущей страницы
|
||||||
|
- 🔢 **Счетчики в sidebar** для каждого раздела
|
||||||
|
- 🌟 **Группировка разделов** (основные + системные)
|
||||||
|
- 📱 **Складное меню** для мобильных
|
||||||
|
|
||||||
|
### Дизайн
|
||||||
|
- 🇰🇷 **Шрифт Noto Sans KR** для корейского текста
|
||||||
|
- 🎨 **Градиентные элементы** и современные цвета
|
||||||
|
- 💎 **Закругленные карточки** с тенями
|
||||||
|
- ⚡ **Плавные анимации** и переходы
|
||||||
|
|
||||||
|
## 🔧 Техническая информация:
|
||||||
|
|
||||||
|
### Файлы
|
||||||
|
- `views/admin/layout.ejs` - Основной layout AdminLTE
|
||||||
|
- `views/admin/dashboard.ejs` - Новый dashboard
|
||||||
|
- `routes/admin.js` - Обновленные маршруты с middleware
|
||||||
|
|
||||||
|
### CSS & JS
|
||||||
|
- AdminLTE 3 CSS из `node_modules/admin-lte/dist/css/`
|
||||||
|
- jQuery + Bootstrap 4 для функциональности
|
||||||
|
- Font Awesome 6 для иконок
|
||||||
|
- Custom CSS для корейских шрифтов
|
||||||
|
|
||||||
|
### Middleware
|
||||||
|
```javascript
|
||||||
|
// Автоматически добавляет статистику на все админ-страницы
|
||||||
|
const addStats = async (req, res, next) => {
|
||||||
|
// portfolioCount, servicesCount, contactsCount
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Доступные URL:
|
||||||
|
|
||||||
|
- **Админ-панель:** http://localhost:3000/admin
|
||||||
|
- **Dashboard:** http://localhost:3000/admin/dashboard
|
||||||
|
- **Портфолио:** http://localhost:3000/admin/portfolio
|
||||||
|
- **Услуги:** http://localhost:3000/admin/services
|
||||||
|
- **Сообщения:** http://localhost:3000/admin/contacts
|
||||||
|
- **Медиа:** http://localhost:3000/admin/media
|
||||||
|
- **Настройки:** http://localhost:3000/admin/settings
|
||||||
|
- **Телеграм:** http://localhost:3000/admin/telegram
|
||||||
|
- **Баннеры:** http://localhost:3000/admin/banner-editor
|
||||||
|
|
||||||
|
## 💡 Преимущества новой админки:
|
||||||
|
|
||||||
|
1. **Профессиональный вид** - соответствует корейским стандартам
|
||||||
|
2. **Удобство использования** - интуитивный интерфейс
|
||||||
|
3. **Производительность** - быстрая загрузка
|
||||||
|
4. **Мобильность** - отлично работает на телефонах
|
||||||
|
5. **Стабильность** - проверенное решение
|
||||||
|
6. **Бесплатность** - никаких лицензионных ограничений
|
||||||
|
|
||||||
|
## 🎯 Что дальше?
|
||||||
|
|
||||||
|
AdminLTE 3 полностью готов к работе! Можете:
|
||||||
|
|
||||||
|
1. **Войти в админку** по адресу `/admin`
|
||||||
|
2. **Управлять контентом** через новый интерфейс
|
||||||
|
3. **Добавлять проекты** и услуги
|
||||||
|
4. **Настраивать сайт** через удобные формы
|
||||||
|
5. **Следить за статистикой** в реальном времени
|
||||||
|
|
||||||
|
## 🔑 Логин:
|
||||||
|
- **Email:** admin@smartsoltech.kr
|
||||||
|
- **Пароль:** как настроено в .env
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**🎉 AdminLTE 3 успешно настроен и готов к использованию!**
|
||||||
|
|
||||||
|
Старая админка полностью удалена, новая AdminLTE интегрирована и работает со всеми существующими функциями сайта.
|
||||||
109
.history/ADMINLTE_SETUP_COMPLETE_20251026212848.md
Normal file
109
.history/ADMINLTE_SETUP_COMPLETE_20251026212848.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# SmartSolTech AdminLTE 3 - Документация
|
||||||
|
|
||||||
|
## ✅ Успешно настроен AdminLTE 3!
|
||||||
|
|
||||||
|
AdminLTE 3 теперь полностью интегрирован в ваш сайт SmartSolTech как основная админ-панель.
|
||||||
|
|
||||||
|
## 🎯 Что было сделано:
|
||||||
|
|
||||||
|
### 1. **Полная замена старой админки**
|
||||||
|
- ❌ Удалена старая Tailwind-админка
|
||||||
|
- ❌ Удалены все демо-файлы и сравнения
|
||||||
|
- ❌ Удален Tabler и связанные файлы
|
||||||
|
- ✅ AdminLTE 3 стал основной админкой
|
||||||
|
|
||||||
|
### 2. **Новый дизайн и функциональность**
|
||||||
|
- 🎨 **Корейская локализация** - все элементы переведены
|
||||||
|
- 📊 **Современный dashboard** с информативными карточками
|
||||||
|
- 🔢 **Статистика в sidebar** - счетчики портфолио, услуг, сообщений
|
||||||
|
- 📱 **Адаптивный дизайн** для всех устройств
|
||||||
|
- 🎭 **Профессиональная цветовая схема**
|
||||||
|
|
||||||
|
### 3. **Интеграция с существующей системой**
|
||||||
|
- 🔗 **Полная совместимость** с текущими маршрутами
|
||||||
|
- 📊 **Middleware для статистики** на всех страницах
|
||||||
|
- 🔐 **Сохранена вся авторизация** и безопасность
|
||||||
|
- 💾 **Все данные остались** без изменений
|
||||||
|
|
||||||
|
## 🎨 Основные возможности AdminLTE:
|
||||||
|
|
||||||
|
### Dashboard (대시보드)
|
||||||
|
- 📈 **Статистические карточки** с progress bar
|
||||||
|
- 📋 **Последние проекты** с статусами (완료/진행중/계획)
|
||||||
|
- 📧 **Последние сообщения** с цветными статусами
|
||||||
|
- ⚡ **Быстрые действия** с градиентными кнопками
|
||||||
|
- 📊 **Системный статус** и метрики
|
||||||
|
|
||||||
|
### Навигация
|
||||||
|
- 🎯 **Активные индикаторы** текущей страницы
|
||||||
|
- 🔢 **Счетчики в sidebar** для каждого раздела
|
||||||
|
- 🌟 **Группировка разделов** (основные + системные)
|
||||||
|
- 📱 **Складное меню** для мобильных
|
||||||
|
|
||||||
|
### Дизайн
|
||||||
|
- 🇰🇷 **Шрифт Noto Sans KR** для корейского текста
|
||||||
|
- 🎨 **Градиентные элементы** и современные цвета
|
||||||
|
- 💎 **Закругленные карточки** с тенями
|
||||||
|
- ⚡ **Плавные анимации** и переходы
|
||||||
|
|
||||||
|
## 🔧 Техническая информация:
|
||||||
|
|
||||||
|
### Файлы
|
||||||
|
- `views/admin/layout.ejs` - Основной layout AdminLTE
|
||||||
|
- `views/admin/dashboard.ejs` - Новый dashboard
|
||||||
|
- `routes/admin.js` - Обновленные маршруты с middleware
|
||||||
|
|
||||||
|
### CSS & JS
|
||||||
|
- AdminLTE 3 CSS из `node_modules/admin-lte/dist/css/`
|
||||||
|
- jQuery + Bootstrap 4 для функциональности
|
||||||
|
- Font Awesome 6 для иконок
|
||||||
|
- Custom CSS для корейских шрифтов
|
||||||
|
|
||||||
|
### Middleware
|
||||||
|
```javascript
|
||||||
|
// Автоматически добавляет статистику на все админ-страницы
|
||||||
|
const addStats = async (req, res, next) => {
|
||||||
|
// portfolioCount, servicesCount, contactsCount
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Доступные URL:
|
||||||
|
|
||||||
|
- **Админ-панель:** http://localhost:3000/admin
|
||||||
|
- **Dashboard:** http://localhost:3000/admin/dashboard
|
||||||
|
- **Портфолио:** http://localhost:3000/admin/portfolio
|
||||||
|
- **Услуги:** http://localhost:3000/admin/services
|
||||||
|
- **Сообщения:** http://localhost:3000/admin/contacts
|
||||||
|
- **Медиа:** http://localhost:3000/admin/media
|
||||||
|
- **Настройки:** http://localhost:3000/admin/settings
|
||||||
|
- **Телеграм:** http://localhost:3000/admin/telegram
|
||||||
|
- **Баннеры:** http://localhost:3000/admin/banner-editor
|
||||||
|
|
||||||
|
## 💡 Преимущества новой админки:
|
||||||
|
|
||||||
|
1. **Профессиональный вид** - соответствует корейским стандартам
|
||||||
|
2. **Удобство использования** - интуитивный интерфейс
|
||||||
|
3. **Производительность** - быстрая загрузка
|
||||||
|
4. **Мобильность** - отлично работает на телефонах
|
||||||
|
5. **Стабильность** - проверенное решение
|
||||||
|
6. **Бесплатность** - никаких лицензионных ограничений
|
||||||
|
|
||||||
|
## 🎯 Что дальше?
|
||||||
|
|
||||||
|
AdminLTE 3 полностью готов к работе! Можете:
|
||||||
|
|
||||||
|
1. **Войти в админку** по адресу `/admin`
|
||||||
|
2. **Управлять контентом** через новый интерфейс
|
||||||
|
3. **Добавлять проекты** и услуги
|
||||||
|
4. **Настраивать сайт** через удобные формы
|
||||||
|
5. **Следить за статистикой** в реальном времени
|
||||||
|
|
||||||
|
## 🔑 Логин:
|
||||||
|
- **Email:** admin@smartsoltech.kr
|
||||||
|
- **Пароль:** как настроено в .env
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**🎉 AdminLTE 3 успешно настроен и готов к использованию!**
|
||||||
|
|
||||||
|
Старая админка полностью удалена, новая AdminLTE интегрирована и работает со всеми существующими функциями сайта.
|
||||||
145
.history/ADMIN_BUNDLE_RECOMMENDATIONS_20251026211921.md
Normal file
145
.history/ADMIN_BUNDLE_RECOMMENDATIONS_20251026211921.md
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
# SmartSolTech Admin Bundle Рекомендации
|
||||||
|
|
||||||
|
## 🎯 Итоговый Выбор: AdminLTE 3
|
||||||
|
|
||||||
|
После детального анализа и тестирования обеих админ-панелей, **AdminLTE 3** является оптимальным выбором для SmartSolTech.
|
||||||
|
|
||||||
|
## 📊 Анализ Установленных Решений
|
||||||
|
|
||||||
|
### 1. AdminLTE 3 ✅ (Рекомендуется)
|
||||||
|
|
||||||
|
**Установка:** `npm install admin-lte`
|
||||||
|
|
||||||
|
**Преимущества:**
|
||||||
|
- ✅ **Полностью бесплатен** - нет скрытых платежей
|
||||||
|
- ✅ **Отличная поддержка корейского языка** - идеально для вашей аудитории
|
||||||
|
- ✅ **Богатая экосистема компонентов** - все необходимые элементы UI
|
||||||
|
- ✅ **Стабильность** - проверенное временем решение
|
||||||
|
- ✅ **Большое сообщество** - легко найти помощь и примеры
|
||||||
|
- ✅ **jQuery совместимость** - работает с существующим кодом
|
||||||
|
|
||||||
|
**Интеграция:**
|
||||||
|
```javascript
|
||||||
|
// Уже создано:
|
||||||
|
/views/admin/layout-adminlte.ejs // Основной layout
|
||||||
|
/views/admin/dashboard-adminlte.ejs // Dashboard с корейской локализацией
|
||||||
|
/demo/demo-adminlte // Демо URL
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Tabler ⚠️ (Альтернатива)
|
||||||
|
|
||||||
|
**Установка:** `npm install @tabler/core @tabler/icons`
|
||||||
|
|
||||||
|
**Преимущества:**
|
||||||
|
- ✅ **Современный дизайн** - более свежий внешний вид
|
||||||
|
- ✅ **Высокая производительность** - быстрая загрузка
|
||||||
|
- ✅ **3000+ SVG иконок** - богатая иконография
|
||||||
|
- ✅ **Bootstrap 5** - современные стандарты
|
||||||
|
|
||||||
|
**Недостатки:**
|
||||||
|
- ⚠️ **Требует Node.js 20+** (у вас 18.19.1)
|
||||||
|
- ⚠️ **Менее зрелое решение** - меньше документации на корейском
|
||||||
|
- ⚠️ **Меньше готовых компонентов** - больше кастомизации
|
||||||
|
|
||||||
|
## 🔧 Готовые к Использованию URL
|
||||||
|
|
||||||
|
После запуска сервера доступны:
|
||||||
|
|
||||||
|
1. **Страница сравнения:** http://localhost:3000/demo/admin-comparison
|
||||||
|
2. **AdminLTE Demo:** http://localhost:3000/demo/demo-adminlte
|
||||||
|
3. **Tabler Demo:** http://localhost:3000/demo/demo-tabler
|
||||||
|
|
||||||
|
## 🚀 Интеграция с Существующей Админкой
|
||||||
|
|
||||||
|
### Вариант 1: Постепенная Миграция (Рекомендуется)
|
||||||
|
|
||||||
|
1. **Обновить существующий layout:**
|
||||||
|
```bash
|
||||||
|
# Заменить существующий layout на AdminLTE
|
||||||
|
cp views/admin/layout-adminlte.ejs views/admin/layout.ejs
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Обновить dashboard:**
|
||||||
|
```bash
|
||||||
|
# Заменить dashboard на AdminLTE версию
|
||||||
|
cp views/admin/dashboard-adminlte.ejs views/admin/dashboard.ejs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 2: Параллельная Система
|
||||||
|
|
||||||
|
Оставить существующую админку и добавить новую через роуты:
|
||||||
|
```javascript
|
||||||
|
// В routes/admin.js добавить:
|
||||||
|
router.get('/modern', (req, res) => {
|
||||||
|
res.render('admin/dashboard-adminlte', {
|
||||||
|
layout: 'admin/layout-adminlte'
|
||||||
|
// ... остальные данные
|
||||||
|
});
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 Кастомизация под SmartSolTech
|
||||||
|
|
||||||
|
### Цветовая Схема
|
||||||
|
```css
|
||||||
|
/* Добавлено в layout-adminlte.ejs: */
|
||||||
|
.nav-sidebar .nav-link.active {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand-text {
|
||||||
|
color: #007bff !important;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Корейская Локализация
|
||||||
|
- ✅ Все меню переведены на корейский
|
||||||
|
- ✅ Даты в корейском формате
|
||||||
|
- ✅ Статусы и сообщения на корейском
|
||||||
|
- ✅ Шрифт Noto Sans KR для корректного отображения
|
||||||
|
|
||||||
|
## 📋 Следующие Шаги
|
||||||
|
|
||||||
|
1. **Тестирование:**
|
||||||
|
```bash
|
||||||
|
# Откройте демо:
|
||||||
|
http://localhost:3000/demo/admin-comparison
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Интеграция:**
|
||||||
|
```bash
|
||||||
|
# Если решили использовать AdminLTE:
|
||||||
|
cp views/admin/layout-adminlte.ejs views/admin/layout.ejs
|
||||||
|
cp views/admin/dashboard-adminlte.ejs views/admin/dashboard.ejs
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Создание дополнительных страниц:**
|
||||||
|
- Список портфолио в стиле AdminLTE
|
||||||
|
- Управление услугами
|
||||||
|
- Страница контактов
|
||||||
|
- Настройки системы
|
||||||
|
|
||||||
|
## 💡 Дополнительные Рекомендации
|
||||||
|
|
||||||
|
### Для Улучшения UX:
|
||||||
|
1. **Темная тема** - AdminLTE поддерживает переключение тем
|
||||||
|
2. **Мобильная оптимизация** - уже включена
|
||||||
|
3. **Уведомления** - можно добавить toast-уведомления
|
||||||
|
4. **Виджеты** - использовать info-box для статистики
|
||||||
|
|
||||||
|
### Производительность:
|
||||||
|
- AdminLTE загружается быстро (~500KB)
|
||||||
|
- Минимальные зависимости
|
||||||
|
- Отличная совместимость с вашим стеком
|
||||||
|
|
||||||
|
## 🎯 Финальная Рекомендация
|
||||||
|
|
||||||
|
**Используйте AdminLTE 3** для SmartSolTech потому что:
|
||||||
|
|
||||||
|
1. **Готов к production** - стабилен и протестирован
|
||||||
|
2. **Корейская аудитория** - отличная поддержка языка
|
||||||
|
3. **Бесплатный** - нет лицензионных ограничений
|
||||||
|
4. **Совместимость** - работает с вашей текущей архитектурой
|
||||||
|
5. **Поддержка** - большое сообщество и документация
|
||||||
|
|
||||||
|
Начните с демо-версии по адресу `/demo/demo-adminlte` и при желании интегрируйте в основную админку!
|
||||||
145
.history/ADMIN_BUNDLE_RECOMMENDATIONS_20251026212002.md
Normal file
145
.history/ADMIN_BUNDLE_RECOMMENDATIONS_20251026212002.md
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
# SmartSolTech Admin Bundle Рекомендации
|
||||||
|
|
||||||
|
## 🎯 Итоговый Выбор: AdminLTE 3
|
||||||
|
|
||||||
|
После детального анализа и тестирования обеих админ-панелей, **AdminLTE 3** является оптимальным выбором для SmartSolTech.
|
||||||
|
|
||||||
|
## 📊 Анализ Установленных Решений
|
||||||
|
|
||||||
|
### 1. AdminLTE 3 ✅ (Рекомендуется)
|
||||||
|
|
||||||
|
**Установка:** `npm install admin-lte`
|
||||||
|
|
||||||
|
**Преимущества:**
|
||||||
|
- ✅ **Полностью бесплатен** - нет скрытых платежей
|
||||||
|
- ✅ **Отличная поддержка корейского языка** - идеально для вашей аудитории
|
||||||
|
- ✅ **Богатая экосистема компонентов** - все необходимые элементы UI
|
||||||
|
- ✅ **Стабильность** - проверенное временем решение
|
||||||
|
- ✅ **Большое сообщество** - легко найти помощь и примеры
|
||||||
|
- ✅ **jQuery совместимость** - работает с существующим кодом
|
||||||
|
|
||||||
|
**Интеграция:**
|
||||||
|
```javascript
|
||||||
|
// Уже создано:
|
||||||
|
/views/admin/layout-adminlte.ejs // Основной layout
|
||||||
|
/views/admin/dashboard-adminlte.ejs // Dashboard с корейской локализацией
|
||||||
|
/demo/demo-adminlte // Демо URL
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Tabler ⚠️ (Альтернатива)
|
||||||
|
|
||||||
|
**Установка:** `npm install @tabler/core @tabler/icons`
|
||||||
|
|
||||||
|
**Преимущества:**
|
||||||
|
- ✅ **Современный дизайн** - более свежий внешний вид
|
||||||
|
- ✅ **Высокая производительность** - быстрая загрузка
|
||||||
|
- ✅ **3000+ SVG иконок** - богатая иконография
|
||||||
|
- ✅ **Bootstrap 5** - современные стандарты
|
||||||
|
|
||||||
|
**Недостатки:**
|
||||||
|
- ⚠️ **Требует Node.js 20+** (у вас 18.19.1)
|
||||||
|
- ⚠️ **Менее зрелое решение** - меньше документации на корейском
|
||||||
|
- ⚠️ **Меньше готовых компонентов** - больше кастомизации
|
||||||
|
|
||||||
|
## 🔧 Готовые к Использованию URL
|
||||||
|
|
||||||
|
После запуска сервера доступны:
|
||||||
|
|
||||||
|
1. **Страница сравнения:** http://localhost:3000/demo/admin-comparison
|
||||||
|
2. **AdminLTE Demo:** http://localhost:3000/demo/demo-adminlte
|
||||||
|
3. **Tabler Demo:** http://localhost:3000/demo/demo-tabler
|
||||||
|
|
||||||
|
## 🚀 Интеграция с Существующей Админкой
|
||||||
|
|
||||||
|
### Вариант 1: Постепенная Миграция (Рекомендуется)
|
||||||
|
|
||||||
|
1. **Обновить существующий layout:**
|
||||||
|
```bash
|
||||||
|
# Заменить существующий layout на AdminLTE
|
||||||
|
cp views/admin/layout-adminlte.ejs views/admin/layout.ejs
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Обновить dashboard:**
|
||||||
|
```bash
|
||||||
|
# Заменить dashboard на AdminLTE версию
|
||||||
|
cp views/admin/dashboard-adminlte.ejs views/admin/dashboard.ejs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 2: Параллельная Система
|
||||||
|
|
||||||
|
Оставить существующую админку и добавить новую через роуты:
|
||||||
|
```javascript
|
||||||
|
// В routes/admin.js добавить:
|
||||||
|
router.get('/modern', (req, res) => {
|
||||||
|
res.render('admin/dashboard-adminlte', {
|
||||||
|
layout: 'admin/layout-adminlte'
|
||||||
|
// ... остальные данные
|
||||||
|
});
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 Кастомизация под SmartSolTech
|
||||||
|
|
||||||
|
### Цветовая Схема
|
||||||
|
```css
|
||||||
|
/* Добавлено в layout-adminlte.ejs: */
|
||||||
|
.nav-sidebar .nav-link.active {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand-text {
|
||||||
|
color: #007bff !important;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Корейская Локализация
|
||||||
|
- ✅ Все меню переведены на корейский
|
||||||
|
- ✅ Даты в корейском формате
|
||||||
|
- ✅ Статусы и сообщения на корейском
|
||||||
|
- ✅ Шрифт Noto Sans KR для корректного отображения
|
||||||
|
|
||||||
|
## 📋 Следующие Шаги
|
||||||
|
|
||||||
|
1. **Тестирование:**
|
||||||
|
```bash
|
||||||
|
# Откройте демо:
|
||||||
|
http://localhost:3000/demo/admin-comparison
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Интеграция:**
|
||||||
|
```bash
|
||||||
|
# Если решили использовать AdminLTE:
|
||||||
|
cp views/admin/layout-adminlte.ejs views/admin/layout.ejs
|
||||||
|
cp views/admin/dashboard-adminlte.ejs views/admin/dashboard.ejs
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Создание дополнительных страниц:**
|
||||||
|
- Список портфолио в стиле AdminLTE
|
||||||
|
- Управление услугами
|
||||||
|
- Страница контактов
|
||||||
|
- Настройки системы
|
||||||
|
|
||||||
|
## 💡 Дополнительные Рекомендации
|
||||||
|
|
||||||
|
### Для Улучшения UX:
|
||||||
|
1. **Темная тема** - AdminLTE поддерживает переключение тем
|
||||||
|
2. **Мобильная оптимизация** - уже включена
|
||||||
|
3. **Уведомления** - можно добавить toast-уведомления
|
||||||
|
4. **Виджеты** - использовать info-box для статистики
|
||||||
|
|
||||||
|
### Производительность:
|
||||||
|
- AdminLTE загружается быстро (~500KB)
|
||||||
|
- Минимальные зависимости
|
||||||
|
- Отличная совместимость с вашим стеком
|
||||||
|
|
||||||
|
## 🎯 Финальная Рекомендация
|
||||||
|
|
||||||
|
**Используйте AdminLTE 3** для SmartSolTech потому что:
|
||||||
|
|
||||||
|
1. **Готов к production** - стабилен и протестирован
|
||||||
|
2. **Корейская аудитория** - отличная поддержка языка
|
||||||
|
3. **Бесплатный** - нет лицензионных ограничений
|
||||||
|
4. **Совместимость** - работает с вашей текущей архитектурой
|
||||||
|
5. **Поддержка** - большое сообщество и документация
|
||||||
|
|
||||||
|
Начните с демо-версии по адресу `/demo/demo-adminlte` и при желании интегрируйте в основную админку!
|
||||||
@@ -1,280 +0,0 @@
|
|||||||
# SmartSolTech Website
|
|
||||||
|
|
||||||
Современный PWA сайт для SmartSolTech с админ-панелью, управлением портфолио, интеграцией с Telegram ботом и калькулятором стоимости услуг.
|
|
||||||
|
|
||||||
## 🚀 Особенности
|
|
||||||
|
|
||||||
- **Современный дизайн**: Отзывчивый интерфейс с анимациями и современным UI/UX
|
|
||||||
- **PWA**: Прогрессивное веб-приложение с поддержкой офлайн-режима
|
|
||||||
- **Админ-панель**: Управление портфолио, услугами, медиа-контентом и настройками сайта
|
|
||||||
- **Интеграция с Telegram**: Подключение к Telegram боту для уведомлений
|
|
||||||
- **Калькулятор стоимости**: Интерактивный калькулятор расчета стоимости услуг
|
|
||||||
- **Система аутентификации**: Безопасная авторизация с JWT токенами
|
|
||||||
- **Загрузка файлов**: Оптимизация изображений и управление медиа-контентом
|
|
||||||
- **SEO оптимизация**: Настроенные мета-теги и структурированные данные
|
|
||||||
|
|
||||||
## 🛠️ Технологии
|
|
||||||
|
|
||||||
### Backend
|
|
||||||
- **Node.js** - Серверная платформа
|
|
||||||
- **Express.js** - Веб-фреймворк
|
|
||||||
- **MongoDB** - База данных
|
|
||||||
- **Mongoose** - ODM для MongoDB
|
|
||||||
- **JWT** - Токены аутентификации
|
|
||||||
- **bcrypt** - Хеширование паролей
|
|
||||||
- **Multer** - Загрузка файлов
|
|
||||||
- **Sharp** - Обработка изображений
|
|
||||||
|
|
||||||
### Frontend
|
|
||||||
- **EJS** - Шаблонизатор
|
|
||||||
- **Tailwind CSS** - CSS фреймворк
|
|
||||||
- **AOS** - Библиотека анимаций
|
|
||||||
- **Font Awesome** - Иконки
|
|
||||||
- **Service Worker** - PWA функциональность
|
|
||||||
|
|
||||||
### Дополнительно
|
|
||||||
- **node-telegram-bot-api** - Интеграция с Telegram
|
|
||||||
- **Nodemailer** - Отправка email
|
|
||||||
- **Helmet** - Безопасность
|
|
||||||
- **express-rate-limit** - Ограничение запросов
|
|
||||||
|
|
||||||
## 📦 Установка
|
|
||||||
|
|
||||||
1. **Клонирование репозитория**
|
|
||||||
```bash
|
|
||||||
git clone <repository-url>
|
|
||||||
cd sst_site
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Установка зависимостей**
|
|
||||||
```bash
|
|
||||||
npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Настройка переменных окружения**
|
|
||||||
```bash
|
|
||||||
cp .env.example .env
|
|
||||||
```
|
|
||||||
|
|
||||||
Отредактируйте файл `.env` с вашими настройками:
|
|
||||||
```env
|
|
||||||
NODE_ENV=development
|
|
||||||
PORT=3000
|
|
||||||
|
|
||||||
# Database
|
|
||||||
MONGODB_URI=mongodb://localhost:27017/smartsoltech
|
|
||||||
|
|
||||||
# Security
|
|
||||||
SESSION_SECRET=your-super-secret-session-key
|
|
||||||
JWT_SECRET=your-super-secret-jwt-key
|
|
||||||
|
|
||||||
# File Upload
|
|
||||||
UPLOAD_PATH=./uploads
|
|
||||||
MAX_FILE_SIZE=10485760
|
|
||||||
|
|
||||||
# Email Configuration
|
|
||||||
SMTP_HOST=smtp.gmail.com
|
|
||||||
SMTP_PORT=587
|
|
||||||
SMTP_USER=your-email@gmail.com
|
|
||||||
SMTP_PASS=your-app-password
|
|
||||||
|
|
||||||
# Telegram Bot (Optional)
|
|
||||||
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
|
|
||||||
|
|
||||||
# Admin Account
|
|
||||||
ADMIN_EMAIL=admin@smartsoltech.kr
|
|
||||||
ADMIN_PASSWORD=change-this-password
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Инициализация базы данных**
|
|
||||||
```bash
|
|
||||||
npm run init-db
|
|
||||||
```
|
|
||||||
|
|
||||||
5. **Запуск в режиме разработки**
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Сайт будет доступен по адресу: `http://localhost:3000`
|
|
||||||
|
|
||||||
## 🗂️ Структура проекта
|
|
||||||
|
|
||||||
```
|
|
||||||
sst_site/
|
|
||||||
├── models/ # Модели данных (MongoDB)
|
|
||||||
│ ├── User.js
|
|
||||||
│ ├── Portfolio.js
|
|
||||||
│ ├── Service.js
|
|
||||||
│ ├── Contact.js
|
|
||||||
│ └── SiteSettings.js
|
|
||||||
├── routes/ # Маршруты API
|
|
||||||
│ ├── index.js
|
|
||||||
│ ├── auth.js
|
|
||||||
│ ├── contact.js
|
|
||||||
│ ├── calculator.js
|
|
||||||
│ ├── portfolio.js
|
|
||||||
│ ├── services.js
|
|
||||||
│ ├── media.js
|
|
||||||
│ └── admin.js
|
|
||||||
├── views/ # Шаблоны EJS
|
|
||||||
│ ├── layout.ejs
|
|
||||||
│ ├── index.ejs
|
|
||||||
│ ├── calculator.ejs
|
|
||||||
│ └── partials/
|
|
||||||
├── public/ # Статические файлы
|
|
||||||
│ ├── css/
|
|
||||||
│ ├── js/
|
|
||||||
│ ├── images/
|
|
||||||
│ ├── manifest.json
|
|
||||||
│ └── sw.js
|
|
||||||
├── middleware/ # Промежуточное ПО
|
|
||||||
├── scripts/ # Служебные скрипты
|
|
||||||
│ ├── init-db.js
|
|
||||||
│ ├── dev.js
|
|
||||||
│ └── build.js
|
|
||||||
├── uploads/ # Загруженные файлы
|
|
||||||
├── server.js # Главный файл сервера
|
|
||||||
├── package.json
|
|
||||||
└── README.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📋 Доступные команды
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Разработка
|
|
||||||
npm run dev # Запуск в режиме разработки с hot reload
|
|
||||||
|
|
||||||
# Продакшн
|
|
||||||
npm start # Запуск в продакшн режиме
|
|
||||||
npm run build # Сборка для продакшна
|
|
||||||
|
|
||||||
# База данных
|
|
||||||
npm run init-db # Инициализация БД с тестовыми данными
|
|
||||||
|
|
||||||
# Тестирование
|
|
||||||
npm test # Запуск тестов (пока не реализовано)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔐 Админ-панель
|
|
||||||
|
|
||||||
После инициализации базы данных вы можете войти в админ-панель:
|
|
||||||
|
|
||||||
- **URL**: `http://localhost:3000/admin`
|
|
||||||
- **Email**: `admin@smartsoltech.kr` (или из .env)
|
|
||||||
- **Пароль**: Указанный в .env файле
|
|
||||||
|
|
||||||
### Возможности админ-панели:
|
|
||||||
- Управление портфолио проектами
|
|
||||||
- Редактирование услуг и их стоимости
|
|
||||||
- Загрузка и управление медиа-файлами
|
|
||||||
- Просмотр и управление контактными формами
|
|
||||||
- Настройки сайта и SEO
|
|
||||||
- Управление пользователями
|
|
||||||
|
|
||||||
## 🤖 Интеграция с Telegram
|
|
||||||
|
|
||||||
Для настройки Telegram бота:
|
|
||||||
|
|
||||||
1. Создайте бота через [@BotFather](https://t.me/BotFather)
|
|
||||||
2. Получите токен бота
|
|
||||||
3. Добавьте токен в `.env` файл: `TELEGRAM_BOT_TOKEN=your-token`
|
|
||||||
4. Перезапустите сервер
|
|
||||||
|
|
||||||
Бот будет отправлять уведомления о:
|
|
||||||
- Новых контактных формах
|
|
||||||
- Заказах через калькулятор
|
|
||||||
- Новых комментариях
|
|
||||||
|
|
||||||
## 💰 Калькулятор стоимости
|
|
||||||
|
|
||||||
Интерактивный калькулятор позволяет клиентам:
|
|
||||||
- Выбрать тип услуги
|
|
||||||
- Указать дополнительные параметры
|
|
||||||
- Получить примерную стоимость
|
|
||||||
- Отправить заявку на расчет
|
|
||||||
|
|
||||||
Настройки калькулятора можно изменить в админ-панели.
|
|
||||||
|
|
||||||
## 🔒 Безопасность
|
|
||||||
|
|
||||||
Проект включает следующие меры безопасности:
|
|
||||||
- Хеширование паролей с bcrypt
|
|
||||||
- JWT токены для аутентификации
|
|
||||||
- Защита от CSRF атак
|
|
||||||
- Ограничение количества запросов
|
|
||||||
- Валидация входных данных
|
|
||||||
- Безопасные HTTP заголовки
|
|
||||||
|
|
||||||
## 📱 PWA функции
|
|
||||||
|
|
||||||
- Установка на устройство
|
|
||||||
- Офлайн работа
|
|
||||||
- Push уведомления
|
|
||||||
- Фоновая синхронизация
|
|
||||||
- Адаптивные иконки
|
|
||||||
- Splash screen
|
|
||||||
|
|
||||||
## 🚀 Деплой
|
|
||||||
|
|
||||||
### Для продакшна:
|
|
||||||
|
|
||||||
1. **Сборка приложения**
|
|
||||||
```bash
|
|
||||||
npm run build
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Настройка сервера**
|
|
||||||
- Установите Node.js и MongoDB
|
|
||||||
- Настройте переменные окружения
|
|
||||||
- Настройте прокси-сервер (nginx)
|
|
||||||
|
|
||||||
3. **Запуск**
|
|
||||||
```bash
|
|
||||||
cd dist
|
|
||||||
npm install --production
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker деплой:
|
|
||||||
|
|
||||||
```dockerfile
|
|
||||||
FROM node:18-alpine
|
|
||||||
WORKDIR /app
|
|
||||||
COPY package*.json ./
|
|
||||||
RUN npm ci --only=production
|
|
||||||
COPY . .
|
|
||||||
EXPOSE 3000
|
|
||||||
CMD ["npm", "start"]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🤝 Участие в разработке
|
|
||||||
|
|
||||||
1. Форкните репозиторий
|
|
||||||
2. Создайте ветку для фичи (`git checkout -b feature/AmazingFeature`)
|
|
||||||
3. Сделайте коммит (`git commit -m 'Add some AmazingFeature'`)
|
|
||||||
4. Отправьте в ветку (`git push origin feature/AmazingFeature`)
|
|
||||||
5. Откройте Pull Request
|
|
||||||
|
|
||||||
## 📝 Лицензия
|
|
||||||
|
|
||||||
Этот проект лицензирован под MIT License - подробности в файле [LICENSE](LICENSE).
|
|
||||||
|
|
||||||
## 📞 Поддержка
|
|
||||||
|
|
||||||
Если у вас есть вопросы или проблемы:
|
|
||||||
|
|
||||||
- Email: info@smartsoltech.kr
|
|
||||||
- GitHub Issues: [Create Issue](../../issues)
|
|
||||||
- Telegram: @smartsoltech
|
|
||||||
|
|
||||||
## 🙏 Благодарности
|
|
||||||
|
|
||||||
- [Express.js](https://expressjs.com/) - За отличный веб-фреймворк
|
|
||||||
- [MongoDB](https://www.mongodb.com/) - За гибкую базу данных
|
|
||||||
- [Tailwind CSS](https://tailwindcss.com/) - За удобный CSS фреймворк
|
|
||||||
- [AOS](https://michalsnik.github.io/aos/) - За красивые анимации
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**SmartSolTech** - Умные решения для вашего бизнеса 🚀
|
|
||||||
@@ -1,280 +0,0 @@
|
|||||||
# SmartSolTech Website
|
|
||||||
|
|
||||||
Современный PWA сайт для SmartSolTech с админ-панелью, управлением портфолио, интеграцией с Telegram ботом и калькулятором стоимости услуг.
|
|
||||||
|
|
||||||
## 🚀 Особенности
|
|
||||||
|
|
||||||
- **Современный дизайн**: Отзывчивый интерфейс с анимациями и современным UI/UX
|
|
||||||
- **PWA**: Прогрессивное веб-приложение с поддержкой офлайн-режима
|
|
||||||
- **Админ-панель**: Управление портфолио, услугами, медиа-контентом и настройками сайта
|
|
||||||
- **Интеграция с Telegram**: Подключение к Telegram боту для уведомлений
|
|
||||||
- **Калькулятор стоимости**: Интерактивный калькулятор расчета стоимости услуг
|
|
||||||
- **Система аутентификации**: Безопасная авторизация с JWT токенами
|
|
||||||
- **Загрузка файлов**: Оптимизация изображений и управление медиа-контентом
|
|
||||||
- **SEO оптимизация**: Настроенные мета-теги и структурированные данные
|
|
||||||
|
|
||||||
## 🛠️ Технологии
|
|
||||||
|
|
||||||
### Backend
|
|
||||||
- **Node.js** - Серверная платформа
|
|
||||||
- **Express.js** - Веб-фреймворк
|
|
||||||
- **MongoDB** - База данных
|
|
||||||
- **Mongoose** - ODM для MongoDB
|
|
||||||
- **JWT** - Токены аутентификации
|
|
||||||
- **bcrypt** - Хеширование паролей
|
|
||||||
- **Multer** - Загрузка файлов
|
|
||||||
- **Sharp** - Обработка изображений
|
|
||||||
|
|
||||||
### Frontend
|
|
||||||
- **EJS** - Шаблонизатор
|
|
||||||
- **Tailwind CSS** - CSS фреймворк
|
|
||||||
- **AOS** - Библиотека анимаций
|
|
||||||
- **Font Awesome** - Иконки
|
|
||||||
- **Service Worker** - PWA функциональность
|
|
||||||
|
|
||||||
### Дополнительно
|
|
||||||
- **node-telegram-bot-api** - Интеграция с Telegram
|
|
||||||
- **Nodemailer** - Отправка email
|
|
||||||
- **Helmet** - Безопасность
|
|
||||||
- **express-rate-limit** - Ограничение запросов
|
|
||||||
|
|
||||||
## 📦 Установка
|
|
||||||
|
|
||||||
1. **Клонирование репозитория**
|
|
||||||
```bash
|
|
||||||
git clone <repository-url>
|
|
||||||
cd sst_site
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Установка зависимостей**
|
|
||||||
```bash
|
|
||||||
npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Настройка переменных окружения**
|
|
||||||
```bash
|
|
||||||
cp .env.example .env
|
|
||||||
```
|
|
||||||
|
|
||||||
Отредактируйте файл `.env` с вашими настройками:
|
|
||||||
```env
|
|
||||||
NODE_ENV=development
|
|
||||||
PORT=3000
|
|
||||||
|
|
||||||
# Database
|
|
||||||
MONGODB_URI=mongodb://localhost:27017/smartsoltech
|
|
||||||
|
|
||||||
# Security
|
|
||||||
SESSION_SECRET=your-super-secret-session-key
|
|
||||||
JWT_SECRET=your-super-secret-jwt-key
|
|
||||||
|
|
||||||
# File Upload
|
|
||||||
UPLOAD_PATH=./uploads
|
|
||||||
MAX_FILE_SIZE=10485760
|
|
||||||
|
|
||||||
# Email Configuration
|
|
||||||
SMTP_HOST=smtp.gmail.com
|
|
||||||
SMTP_PORT=587
|
|
||||||
SMTP_USER=your-email@gmail.com
|
|
||||||
SMTP_PASS=your-app-password
|
|
||||||
|
|
||||||
# Telegram Bot (Optional)
|
|
||||||
TELEGRAM_BOT_TOKEN=your-telegram-bot-token
|
|
||||||
|
|
||||||
# Admin Account
|
|
||||||
ADMIN_EMAIL=admin@smartsoltech.kr
|
|
||||||
ADMIN_PASSWORD=change-this-password
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Инициализация базы данных**
|
|
||||||
```bash
|
|
||||||
npm run init-db
|
|
||||||
```
|
|
||||||
|
|
||||||
5. **Запуск в режиме разработки**
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Сайт будет доступен по адресу: `http://localhost:3000`
|
|
||||||
|
|
||||||
## 🗂️ Структура проекта
|
|
||||||
|
|
||||||
```
|
|
||||||
sst_site/
|
|
||||||
├── models/ # Модели данных (MongoDB)
|
|
||||||
│ ├── User.js
|
|
||||||
│ ├── Portfolio.js
|
|
||||||
│ ├── Service.js
|
|
||||||
│ ├── Contact.js
|
|
||||||
│ └── SiteSettings.js
|
|
||||||
├── routes/ # Маршруты API
|
|
||||||
│ ├── index.js
|
|
||||||
│ ├── auth.js
|
|
||||||
│ ├── contact.js
|
|
||||||
│ ├── calculator.js
|
|
||||||
│ ├── portfolio.js
|
|
||||||
│ ├── services.js
|
|
||||||
│ ├── media.js
|
|
||||||
│ └── admin.js
|
|
||||||
├── views/ # Шаблоны EJS
|
|
||||||
│ ├── layout.ejs
|
|
||||||
│ ├── index.ejs
|
|
||||||
│ ├── calculator.ejs
|
|
||||||
│ └── partials/
|
|
||||||
├── public/ # Статические файлы
|
|
||||||
│ ├── css/
|
|
||||||
│ ├── js/
|
|
||||||
│ ├── images/
|
|
||||||
│ ├── manifest.json
|
|
||||||
│ └── sw.js
|
|
||||||
├── middleware/ # Промежуточное ПО
|
|
||||||
├── scripts/ # Служебные скрипты
|
|
||||||
│ ├── init-db.js
|
|
||||||
│ ├── dev.js
|
|
||||||
│ └── build.js
|
|
||||||
├── uploads/ # Загруженные файлы
|
|
||||||
├── server.js # Главный файл сервера
|
|
||||||
├── package.json
|
|
||||||
└── README.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📋 Доступные команды
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Разработка
|
|
||||||
npm run dev # Запуск в режиме разработки с hot reload
|
|
||||||
|
|
||||||
# Продакшн
|
|
||||||
npm start # Запуск в продакшн режиме
|
|
||||||
npm run build # Сборка для продакшна
|
|
||||||
|
|
||||||
# База данных
|
|
||||||
npm run init-db # Инициализация БД с тестовыми данными
|
|
||||||
|
|
||||||
# Тестирование
|
|
||||||
npm test # Запуск тестов (пока не реализовано)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔐 Админ-панель
|
|
||||||
|
|
||||||
После инициализации базы данных вы можете войти в админ-панель:
|
|
||||||
|
|
||||||
- **URL**: `http://localhost:3000/admin`
|
|
||||||
- **Email**: `admin@smartsoltech.kr` (или из .env)
|
|
||||||
- **Пароль**: Указанный в .env файле
|
|
||||||
|
|
||||||
### Возможности админ-панели:
|
|
||||||
- Управление портфолио проектами
|
|
||||||
- Редактирование услуг и их стоимости
|
|
||||||
- Загрузка и управление медиа-файлами
|
|
||||||
- Просмотр и управление контактными формами
|
|
||||||
- Настройки сайта и SEO
|
|
||||||
- Управление пользователями
|
|
||||||
|
|
||||||
## 🤖 Интеграция с Telegram
|
|
||||||
|
|
||||||
Для настройки Telegram бота:
|
|
||||||
|
|
||||||
1. Создайте бота через [@BotFather](https://t.me/BotFather)
|
|
||||||
2. Получите токен бота
|
|
||||||
3. Добавьте токен в `.env` файл: `TELEGRAM_BOT_TOKEN=your-token`
|
|
||||||
4. Перезапустите сервер
|
|
||||||
|
|
||||||
Бот будет отправлять уведомления о:
|
|
||||||
- Новых контактных формах
|
|
||||||
- Заказах через калькулятор
|
|
||||||
- Новых комментариях
|
|
||||||
|
|
||||||
## 💰 Калькулятор стоимости
|
|
||||||
|
|
||||||
Интерактивный калькулятор позволяет клиентам:
|
|
||||||
- Выбрать тип услуги
|
|
||||||
- Указать дополнительные параметры
|
|
||||||
- Получить примерную стоимость
|
|
||||||
- Отправить заявку на расчет
|
|
||||||
|
|
||||||
Настройки калькулятора можно изменить в админ-панели.
|
|
||||||
|
|
||||||
## 🔒 Безопасность
|
|
||||||
|
|
||||||
Проект включает следующие меры безопасности:
|
|
||||||
- Хеширование паролей с bcrypt
|
|
||||||
- JWT токены для аутентификации
|
|
||||||
- Защита от CSRF атак
|
|
||||||
- Ограничение количества запросов
|
|
||||||
- Валидация входных данных
|
|
||||||
- Безопасные HTTP заголовки
|
|
||||||
|
|
||||||
## 📱 PWA функции
|
|
||||||
|
|
||||||
- Установка на устройство
|
|
||||||
- Офлайн работа
|
|
||||||
- Push уведомления
|
|
||||||
- Фоновая синхронизация
|
|
||||||
- Адаптивные иконки
|
|
||||||
- Splash screen
|
|
||||||
|
|
||||||
## 🚀 Деплой
|
|
||||||
|
|
||||||
### Для продакшна:
|
|
||||||
|
|
||||||
1. **Сборка приложения**
|
|
||||||
```bash
|
|
||||||
npm run build
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Настройка сервера**
|
|
||||||
- Установите Node.js и MongoDB
|
|
||||||
- Настройте переменные окружения
|
|
||||||
- Настройте прокси-сервер (nginx)
|
|
||||||
|
|
||||||
3. **Запуск**
|
|
||||||
```bash
|
|
||||||
cd dist
|
|
||||||
npm install --production
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker деплой:
|
|
||||||
|
|
||||||
```dockerfile
|
|
||||||
FROM node:18-alpine
|
|
||||||
WORKDIR /app
|
|
||||||
COPY package*.json ./
|
|
||||||
RUN npm ci --only=production
|
|
||||||
COPY . .
|
|
||||||
EXPOSE 3000
|
|
||||||
CMD ["npm", "start"]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🤝 Участие в разработке
|
|
||||||
|
|
||||||
1. Форкните репозиторий
|
|
||||||
2. Создайте ветку для фичи (`git checkout -b feature/AmazingFeature`)
|
|
||||||
3. Сделайте коммит (`git commit -m 'Add some AmazingFeature'`)
|
|
||||||
4. Отправьте в ветку (`git push origin feature/AmazingFeature`)
|
|
||||||
5. Откройте Pull Request
|
|
||||||
|
|
||||||
## 📝 Лицензия
|
|
||||||
|
|
||||||
Этот проект лицензирован под MIT License - подробности в файле [LICENSE](LICENSE).
|
|
||||||
|
|
||||||
## 📞 Поддержка
|
|
||||||
|
|
||||||
Если у вас есть вопросы или проблемы:
|
|
||||||
|
|
||||||
- Email: info@smartsoltech.kr
|
|
||||||
- GitHub Issues: [Create Issue](../../issues)
|
|
||||||
- Telegram: @smartsoltech
|
|
||||||
|
|
||||||
## 🙏 Благодарности
|
|
||||||
|
|
||||||
- [Express.js](https://expressjs.com/) - За отличный веб-фреймворк
|
|
||||||
- [MongoDB](https://www.mongodb.com/) - За гибкую базу данных
|
|
||||||
- [Tailwind CSS](https://tailwindcss.com/) - За удобный CSS фреймворк
|
|
||||||
- [AOS](https://michalsnik.github.io/aos/) - За красивые анимации
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**SmartSolTech** - Умные решения для вашего бизнеса 🚀
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Home",
|
|
||||||
"about": "About",
|
|
||||||
"services": "Services",
|
|
||||||
"portfolio": "Portfolio",
|
|
||||||
"contact": "Contact",
|
|
||||||
"calculator": "Calculator",
|
|
||||||
"admin": "Admin"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "Innovative web development, mobile apps, UI/UX design leading your business digital transformation",
|
|
||||||
"cta_primary": "Start Project",
|
|
||||||
"cta_secondary": "View Portfolio"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "Digital solutions completed with cutting-edge technology and creative ideas",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Web Development",
|
|
||||||
"description": "Modern and responsive websites and web applications development",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Mobile App",
|
|
||||||
"description": "Native and cross-platform apps for iOS and Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX Design",
|
|
||||||
"description": "User-centered intuitive and beautiful interface design",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Digital Marketing",
|
|
||||||
"description": "Digital marketing through SEO, social media, online advertising",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "View All Services"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "Check out the projects completed for customer success",
|
|
||||||
"view_details": "View Details",
|
|
||||||
"view_all": "View All Portfolio"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Check Your Project Estimate",
|
|
||||||
"description": "Select your desired services and requirements to calculate estimates in real time",
|
|
||||||
"cta": "Use Estimate Calculator"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Ready to Start Your Project?",
|
|
||||||
"ready_description": "Turn your ideas into reality. Experts provide the best solutions.",
|
|
||||||
"phone_consultation": "Phone Consultation",
|
|
||||||
"email_inquiry": "Email Inquiry",
|
|
||||||
"telegram_chat": "Telegram Chat",
|
|
||||||
"instant_response": "Instant response available",
|
|
||||||
"free_consultation": "Free Consultation Application",
|
|
||||||
"form": {
|
|
||||||
"name": "Name",
|
|
||||||
"email": "Email",
|
|
||||||
"phone": "Phone",
|
|
||||||
"service_interest": "Service Interest",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Select Service Interest",
|
|
||||||
"web_development": "Web Development",
|
|
||||||
"mobile_app": "Mobile App",
|
|
||||||
"ui_ux_design": "UI/UX Design",
|
|
||||||
"branding": "Branding",
|
|
||||||
"consulting": "Consulting",
|
|
||||||
"other": "Other"
|
|
||||||
},
|
|
||||||
"message": "Please briefly describe your project",
|
|
||||||
"submit": "Apply for Consultation"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Digital solution specialist leading customer success with innovative technology",
|
|
||||||
"overview": {
|
|
||||||
"title": "Creating Future with Innovation and Creativity",
|
|
||||||
"description_1": "SmartSolTech is a digital solution specialist established in 2020, supporting customer business success with innovative technology and creative ideas in web development, mobile apps, and UI/UX design.",
|
|
||||||
"description_2": "We don't just provide technology, but understand customer goals and propose optimal solutions to become partners growing together.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Completed Projects",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Satisfied Customers",
|
|
||||||
"experience": "4 years",
|
|
||||||
"experience_label": "Industry Experience"
|
|
||||||
},
|
|
||||||
"mission": "Our Mission",
|
|
||||||
"mission_text": "Helping all businesses succeed in the digital age through technology",
|
|
||||||
"vision": "Our Vision",
|
|
||||||
"vision_text": "Growing as a global digital solution company representing Korea to lead digital innovation for customers worldwide"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "Core values pursued by SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Innovation",
|
|
||||||
"description": "We provide innovative solutions through continuous R&D and adoption of cutting-edge technology."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Collaboration",
|
|
||||||
"description": "We create the best results through close communication and collaboration with customers."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Quality",
|
|
||||||
"description": "We maintain high quality standards and provide high-quality products that customers can be satisfied with."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Growth",
|
|
||||||
"description": "We grow together with customers and pursue continuous learning and development."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "Introducing the SmartSolTech team with expertise and passion"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "We provide the best solutions with cutting-edge technology and proven tools",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Become a Partner for Success Together",
|
|
||||||
"description": "Take your business to the next level with SmartSolTech",
|
|
||||||
"partnership": "Partnership Inquiry",
|
|
||||||
"portfolio": "View Portfolio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Digital solution specialist leading innovation",
|
|
||||||
"quick_links": "Quick Links",
|
|
||||||
"services": "Services",
|
|
||||||
"contact_info": "Contact Information",
|
|
||||||
"follow_us": "Follow Us",
|
|
||||||
"rights": "All rights reserved."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Light Theme",
|
|
||||||
"dark": "Dark Theme",
|
|
||||||
"toggle": "Toggle Theme"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Loading...",
|
|
||||||
"error": "Error occurred",
|
|
||||||
"success": "Success",
|
|
||||||
"view_more": "View More",
|
|
||||||
"back": "Back",
|
|
||||||
"next": "Next",
|
|
||||||
"previous": "Previous"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Home",
|
|
||||||
"about": "About",
|
|
||||||
"services": "Services",
|
|
||||||
"portfolio": "Portfolio",
|
|
||||||
"contact": "Contact",
|
|
||||||
"calculator": "Calculator",
|
|
||||||
"admin": "Admin"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "Innovative web development, mobile apps, UI/UX design leading your business digital transformation",
|
|
||||||
"cta_primary": "Start Project",
|
|
||||||
"cta_secondary": "View Portfolio"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "Digital solutions completed with cutting-edge technology and creative ideas",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Web Development",
|
|
||||||
"description": "Modern and responsive websites and web applications development",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Mobile App",
|
|
||||||
"description": "Native and cross-platform apps for iOS and Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX Design",
|
|
||||||
"description": "User-centered intuitive and beautiful interface design",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Digital Marketing",
|
|
||||||
"description": "Digital marketing through SEO, social media, online advertising",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "View All Services"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "Check out the projects completed for customer success",
|
|
||||||
"view_details": "View Details",
|
|
||||||
"view_all": "View All Portfolio"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Check Your Project Estimate",
|
|
||||||
"description": "Select your desired services and requirements to calculate estimates in real time",
|
|
||||||
"cta": "Use Estimate Calculator"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Ready to Start Your Project?",
|
|
||||||
"ready_description": "Turn your ideas into reality. Experts provide the best solutions.",
|
|
||||||
"phone_consultation": "Phone Consultation",
|
|
||||||
"email_inquiry": "Email Inquiry",
|
|
||||||
"telegram_chat": "Telegram Chat",
|
|
||||||
"instant_response": "Instant response available",
|
|
||||||
"free_consultation": "Free Consultation Application",
|
|
||||||
"form": {
|
|
||||||
"name": "Name",
|
|
||||||
"email": "Email",
|
|
||||||
"phone": "Phone",
|
|
||||||
"service_interest": "Service Interest",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Select Service Interest",
|
|
||||||
"web_development": "Web Development",
|
|
||||||
"mobile_app": "Mobile App",
|
|
||||||
"ui_ux_design": "UI/UX Design",
|
|
||||||
"branding": "Branding",
|
|
||||||
"consulting": "Consulting",
|
|
||||||
"other": "Other"
|
|
||||||
},
|
|
||||||
"message": "Please briefly describe your project",
|
|
||||||
"submit": "Apply for Consultation"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Digital solution specialist leading customer success with innovative technology",
|
|
||||||
"overview": {
|
|
||||||
"title": "Creating Future with Innovation and Creativity",
|
|
||||||
"description_1": "SmartSolTech is a digital solution specialist established in 2020, supporting customer business success with innovative technology and creative ideas in web development, mobile apps, and UI/UX design.",
|
|
||||||
"description_2": "We don't just provide technology, but understand customer goals and propose optimal solutions to become partners growing together.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Completed Projects",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Satisfied Customers",
|
|
||||||
"experience": "4 years",
|
|
||||||
"experience_label": "Industry Experience"
|
|
||||||
},
|
|
||||||
"mission": "Our Mission",
|
|
||||||
"mission_text": "Helping all businesses succeed in the digital age through technology",
|
|
||||||
"vision": "Our Vision",
|
|
||||||
"vision_text": "Growing as a global digital solution company representing Korea to lead digital innovation for customers worldwide"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "Core values pursued by SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Innovation",
|
|
||||||
"description": "We provide innovative solutions through continuous R&D and adoption of cutting-edge technology."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Collaboration",
|
|
||||||
"description": "We create the best results through close communication and collaboration with customers."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Quality",
|
|
||||||
"description": "We maintain high quality standards and provide high-quality products that customers can be satisfied with."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Growth",
|
|
||||||
"description": "We grow together with customers and pursue continuous learning and development."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "Introducing the SmartSolTech team with expertise and passion"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "We provide the best solutions with cutting-edge technology and proven tools",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Become a Partner for Success Together",
|
|
||||||
"description": "Take your business to the next level with SmartSolTech",
|
|
||||||
"partnership": "Partnership Inquiry",
|
|
||||||
"portfolio": "View Portfolio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Digital solution specialist leading innovation",
|
|
||||||
"quick_links": "Quick Links",
|
|
||||||
"services": "Services",
|
|
||||||
"contact_info": "Contact Information",
|
|
||||||
"follow_us": "Follow Us",
|
|
||||||
"rights": "All rights reserved."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Light Theme",
|
|
||||||
"dark": "Dark Theme",
|
|
||||||
"toggle": "Toggle Theme"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Loading...",
|
|
||||||
"error": "Error occurred",
|
|
||||||
"success": "Success",
|
|
||||||
"view_more": "View More",
|
|
||||||
"back": "Back",
|
|
||||||
"next": "Next",
|
|
||||||
"previous": "Previous"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Home",
|
|
||||||
"about": "About",
|
|
||||||
"services": "Services",
|
|
||||||
"portfolio": "Portfolio",
|
|
||||||
"contact": "Contact",
|
|
||||||
"calculator": "Calculator",
|
|
||||||
"admin": "Admin"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "Innovative web development, mobile apps, UI/UX design leading your business digital transformation",
|
|
||||||
"cta_primary": "Start Project",
|
|
||||||
"cta_secondary": "View Portfolio"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "Digital solutions completed with cutting-edge technology and creative ideas",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Web Development",
|
|
||||||
"description": "Modern and responsive websites and web applications development",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Mobile App",
|
|
||||||
"description": "Native and cross-platform apps for iOS and Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX Design",
|
|
||||||
"description": "User-centered intuitive and beautiful interface design",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Digital Marketing",
|
|
||||||
"description": "Digital marketing through SEO, social media, online advertising",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "View All Services"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "Check out the projects completed for customer success",
|
|
||||||
"view_details": "View Details",
|
|
||||||
"view_all": "View All Portfolio"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Project Cost Calculator",
|
|
||||||
"subtitle": "Select your desired services and requirements to get accurate cost estimates in real time",
|
|
||||||
"meta": {
|
|
||||||
"title": "Project Cost Calculator",
|
|
||||||
"description": "Calculate the cost of your web development, mobile app, or design project with our interactive calculator"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Check Your Project Estimate",
|
|
||||||
"subtitle": "Select your desired services and requirements to calculate costs in real time",
|
|
||||||
"button": "Use Cost Calculator"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "Step 1: Service Selection",
|
|
||||||
"subtitle": "Please select the services you need (multiple selection allowed)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "Step 2: Project Details",
|
|
||||||
"subtitle": "Select project complexity and timeline"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "Project Complexity",
|
|
||||||
"simple": "Simple",
|
|
||||||
"simple_desc": "Basic features, standard design",
|
|
||||||
"medium": "Medium",
|
|
||||||
"medium_desc": "Additional features, custom design",
|
|
||||||
"complex": "Complex",
|
|
||||||
"complex_desc": "Advanced features, complex integrations"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "Development Timeline",
|
|
||||||
"standard": "Standard",
|
|
||||||
"standard_desc": "Normal development timeframe",
|
|
||||||
"rush": "Rush",
|
|
||||||
"rush_desc": "Fast development (+50%)",
|
|
||||||
"extended": "Extended",
|
|
||||||
"extended_desc": "Flexible development timeline (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "Estimate Results",
|
|
||||||
"subtitle": "Here's your preliminary project cost estimate",
|
|
||||||
"estimated_price": "Estimated Price",
|
|
||||||
"price_note": "* Final cost may vary based on project details",
|
|
||||||
"summary": "Project Summary",
|
|
||||||
"selected_services": "Selected Services",
|
|
||||||
"complexity": "Complexity",
|
|
||||||
"timeline": "Timeline",
|
|
||||||
"get_quote": "Get Accurate Quote",
|
|
||||||
"recalculate": "Recalculate",
|
|
||||||
"contact_note": "Contact us for an accurate quote and to discuss project details"
|
|
||||||
},
|
|
||||||
"next_step": "Next Step",
|
|
||||||
"prev_step": "Previous",
|
|
||||||
"calculate": "Calculate"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Ready to Start Your Project?",
|
|
||||||
"ready_description": "Turn your ideas into reality. Experts provide the best solutions.",
|
|
||||||
"phone_consultation": "Phone Consultation",
|
|
||||||
"email_inquiry": "Email Inquiry",
|
|
||||||
"telegram_chat": "Telegram Chat",
|
|
||||||
"instant_response": "Instant response available",
|
|
||||||
"free_consultation": "Free Consultation Application",
|
|
||||||
"form": {
|
|
||||||
"name": "Name",
|
|
||||||
"email": "Email",
|
|
||||||
"phone": "Phone",
|
|
||||||
"service_interest": "Service Interest",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Select Service Interest",
|
|
||||||
"web_development": "Web Development",
|
|
||||||
"mobile_app": "Mobile App",
|
|
||||||
"ui_ux_design": "UI/UX Design",
|
|
||||||
"branding": "Branding",
|
|
||||||
"consulting": "Consulting",
|
|
||||||
"other": "Other"
|
|
||||||
},
|
|
||||||
"message": "Please briefly describe your project",
|
|
||||||
"submit": "Apply for Consultation"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Digital solution specialist leading customer success with innovative technology",
|
|
||||||
"overview": {
|
|
||||||
"title": "Creating Future with Innovation and Creativity",
|
|
||||||
"description_1": "SmartSolTech is a digital solution specialist established in 2020, supporting customer business success with innovative technology and creative ideas in web development, mobile apps, and UI/UX design.",
|
|
||||||
"description_2": "We don't just provide technology, but understand customer goals and propose optimal solutions to become partners growing together.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Completed Projects",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Satisfied Customers",
|
|
||||||
"experience": "4 years",
|
|
||||||
"experience_label": "Industry Experience"
|
|
||||||
},
|
|
||||||
"mission": "Our Mission",
|
|
||||||
"mission_text": "Helping all businesses succeed in the digital age through technology",
|
|
||||||
"vision": "Our Vision",
|
|
||||||
"vision_text": "Growing as a global digital solution company representing Korea to lead digital innovation for customers worldwide"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "Core values pursued by SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Innovation",
|
|
||||||
"description": "We provide innovative solutions through continuous R&D and adoption of cutting-edge technology."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Collaboration",
|
|
||||||
"description": "We create the best results through close communication and collaboration with customers."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Quality",
|
|
||||||
"description": "We maintain high quality standards and provide high-quality products that customers can be satisfied with."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Growth",
|
|
||||||
"description": "We grow together with customers and pursue continuous learning and development."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "Introducing the SmartSolTech team with expertise and passion"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "We provide the best solutions with cutting-edge technology and proven tools",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Become a Partner for Success Together",
|
|
||||||
"description": "Take your business to the next level with SmartSolTech",
|
|
||||||
"partnership": "Partnership Inquiry",
|
|
||||||
"portfolio": "View Portfolio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Digital solution specialist leading innovation",
|
|
||||||
"quick_links": "Quick Links",
|
|
||||||
"services": "Services",
|
|
||||||
"contact_info": "Contact Information",
|
|
||||||
"follow_us": "Follow Us",
|
|
||||||
"rights": "All rights reserved."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Light Theme",
|
|
||||||
"dark": "Dark Theme",
|
|
||||||
"toggle": "Toggle Theme"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Loading...",
|
|
||||||
"error": "Error occurred",
|
|
||||||
"success": "Success",
|
|
||||||
"view_more": "View More",
|
|
||||||
"back": "Back",
|
|
||||||
"next": "Next",
|
|
||||||
"previous": "Previous"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Home",
|
|
||||||
"about": "About",
|
|
||||||
"services": "Services",
|
|
||||||
"portfolio": "Portfolio",
|
|
||||||
"contact": "Contact",
|
|
||||||
"calculator": "Calculator",
|
|
||||||
"admin": "Admin"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "Innovative web development, mobile apps, UI/UX design leading your business digital transformation",
|
|
||||||
"cta_primary": "Start Project",
|
|
||||||
"cta_secondary": "View Portfolio"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "Digital solutions completed with cutting-edge technology and creative ideas",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Web Development",
|
|
||||||
"description": "Modern and responsive websites and web applications development",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Mobile App",
|
|
||||||
"description": "Native and cross-platform apps for iOS and Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX Design",
|
|
||||||
"description": "User-centered intuitive and beautiful interface design",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Digital Marketing",
|
|
||||||
"description": "Digital marketing through SEO, social media, online advertising",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "View All Services"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "Check out the projects completed for customer success",
|
|
||||||
"view_details": "View Details",
|
|
||||||
"view_all": "View All Portfolio"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Project Cost Calculator",
|
|
||||||
"subtitle": "Select your desired services and requirements to get accurate cost estimates in real time",
|
|
||||||
"meta": {
|
|
||||||
"title": "Project Cost Calculator",
|
|
||||||
"description": "Calculate the cost of your web development, mobile app, or design project with our interactive calculator"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Check Your Project Estimate",
|
|
||||||
"subtitle": "Select your desired services and requirements to calculate costs in real time",
|
|
||||||
"button": "Use Cost Calculator"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "Step 1: Service Selection",
|
|
||||||
"subtitle": "Please select the services you need (multiple selection allowed)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "Step 2: Project Details",
|
|
||||||
"subtitle": "Select project complexity and timeline"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "Project Complexity",
|
|
||||||
"simple": "Simple",
|
|
||||||
"simple_desc": "Basic features, standard design",
|
|
||||||
"medium": "Medium",
|
|
||||||
"medium_desc": "Additional features, custom design",
|
|
||||||
"complex": "Complex",
|
|
||||||
"complex_desc": "Advanced features, complex integrations"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "Development Timeline",
|
|
||||||
"standard": "Standard",
|
|
||||||
"standard_desc": "Normal development timeframe",
|
|
||||||
"rush": "Rush",
|
|
||||||
"rush_desc": "Fast development (+50%)",
|
|
||||||
"extended": "Extended",
|
|
||||||
"extended_desc": "Flexible development timeline (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "Estimate Results",
|
|
||||||
"subtitle": "Here's your preliminary project cost estimate",
|
|
||||||
"estimated_price": "Estimated Price",
|
|
||||||
"price_note": "* Final cost may vary based on project details",
|
|
||||||
"summary": "Project Summary",
|
|
||||||
"selected_services": "Selected Services",
|
|
||||||
"complexity": "Complexity",
|
|
||||||
"timeline": "Timeline",
|
|
||||||
"get_quote": "Get Accurate Quote",
|
|
||||||
"recalculate": "Recalculate",
|
|
||||||
"contact_note": "Contact us for an accurate quote and to discuss project details"
|
|
||||||
},
|
|
||||||
"next_step": "Next Step",
|
|
||||||
"prev_step": "Previous",
|
|
||||||
"calculate": "Calculate"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Ready to Start Your Project?",
|
|
||||||
"ready_description": "Turn your ideas into reality. Experts provide the best solutions.",
|
|
||||||
"phone_consultation": "Phone Consultation",
|
|
||||||
"email_inquiry": "Email Inquiry",
|
|
||||||
"telegram_chat": "Telegram Chat",
|
|
||||||
"instant_response": "Instant response available",
|
|
||||||
"free_consultation": "Free Consultation Application",
|
|
||||||
"form": {
|
|
||||||
"name": "Name",
|
|
||||||
"email": "Email",
|
|
||||||
"phone": "Phone",
|
|
||||||
"service_interest": "Service Interest",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Select Service Interest",
|
|
||||||
"web_development": "Web Development",
|
|
||||||
"mobile_app": "Mobile App",
|
|
||||||
"ui_ux_design": "UI/UX Design",
|
|
||||||
"branding": "Branding",
|
|
||||||
"consulting": "Consulting",
|
|
||||||
"other": "Other"
|
|
||||||
},
|
|
||||||
"message": "Please briefly describe your project",
|
|
||||||
"submit": "Apply for Consultation"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Digital solution specialist leading customer success with innovative technology",
|
|
||||||
"overview": {
|
|
||||||
"title": "Creating Future with Innovation and Creativity",
|
|
||||||
"description_1": "SmartSolTech is a digital solution specialist established in 2020, supporting customer business success with innovative technology and creative ideas in web development, mobile apps, and UI/UX design.",
|
|
||||||
"description_2": "We don't just provide technology, but understand customer goals and propose optimal solutions to become partners growing together.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Completed Projects",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Satisfied Customers",
|
|
||||||
"experience": "4 years",
|
|
||||||
"experience_label": "Industry Experience"
|
|
||||||
},
|
|
||||||
"mission": "Our Mission",
|
|
||||||
"mission_text": "Helping all businesses succeed in the digital age through technology",
|
|
||||||
"vision": "Our Vision",
|
|
||||||
"vision_text": "Growing as a global digital solution company representing Korea to lead digital innovation for customers worldwide"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "Core values pursued by SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Innovation",
|
|
||||||
"description": "We provide innovative solutions through continuous R&D and adoption of cutting-edge technology."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Collaboration",
|
|
||||||
"description": "We create the best results through close communication and collaboration with customers."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Quality",
|
|
||||||
"description": "We maintain high quality standards and provide high-quality products that customers can be satisfied with."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Growth",
|
|
||||||
"description": "We grow together with customers and pursue continuous learning and development."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "Introducing the SmartSolTech team with expertise and passion"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "We provide the best solutions with cutting-edge technology and proven tools",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Become a Partner for Success Together",
|
|
||||||
"description": "Take your business to the next level with SmartSolTech",
|
|
||||||
"partnership": "Partnership Inquiry",
|
|
||||||
"portfolio": "View Portfolio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Digital solution specialist leading innovation",
|
|
||||||
"quick_links": "Quick Links",
|
|
||||||
"services": "Services",
|
|
||||||
"contact_info": "Contact Information",
|
|
||||||
"follow_us": "Follow Us",
|
|
||||||
"rights": "All rights reserved."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Light Theme",
|
|
||||||
"dark": "Dark Theme",
|
|
||||||
"toggle": "Toggle Theme"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Loading...",
|
|
||||||
"error": "Error occurred",
|
|
||||||
"success": "Success",
|
|
||||||
"view_more": "View More",
|
|
||||||
"back": "Back",
|
|
||||||
"next": "Next",
|
|
||||||
"previous": "Previous"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
425
.history/locales/en_20251025214900.json
Normal file
425
.history/locales/en_20251025214900.json
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Home",
|
||||||
|
"about": "About",
|
||||||
|
"services": "Services",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"contact": "Contact",
|
||||||
|
"calculator": "Calculator",
|
||||||
|
"admin": "Admin"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Smart",
|
||||||
|
"solutions": "Solutions"
|
||||||
|
},
|
||||||
|
"subtitle": "Grow your business with innovative technology",
|
||||||
|
"description": "Innovative web development, mobile apps, UI/UX design leading your business digital transformation",
|
||||||
|
"cta": {
|
||||||
|
"start": "Get Started",
|
||||||
|
"portfolio": "View Portfolio"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Our",
|
||||||
|
"services": "Services"
|
||||||
|
},
|
||||||
|
"subtitle": "Professional development services to turn your ideas into reality",
|
||||||
|
"description": "Digital solutions completed with cutting-edge technology and creative ideas",
|
||||||
|
"view_all": "View All Services",
|
||||||
|
"web": {
|
||||||
|
"title": "Web Development",
|
||||||
|
"description": "Responsive websites and web application development",
|
||||||
|
"price": "From $500"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Mobile Apps",
|
||||||
|
"description": "iOS and Android native app development",
|
||||||
|
"price": "From $1,000"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Design",
|
||||||
|
"description": "User-centered interface and experience design",
|
||||||
|
"price": "From $300"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Digital Marketing",
|
||||||
|
"description": "SEO, social media marketing, advertising management",
|
||||||
|
"price": "From $200"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Services",
|
||||||
|
"description": "Check out SmartSolTech's professional services. Web development, mobile apps, UI/UX design, digital marketing and other technology solutions.",
|
||||||
|
"keywords": "web development, mobile apps, UI/UX design, digital marketing, technology solutions, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Our",
|
||||||
|
"title_highlight": "Services",
|
||||||
|
"subtitle": "Support business growth with innovative technology"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Starting Price",
|
||||||
|
"consultation": "consultation",
|
||||||
|
"contact": "Contact",
|
||||||
|
"calculate_cost": "Calculate Cost",
|
||||||
|
"popular": "Popular",
|
||||||
|
"coming_soon": "Services Coming Soon",
|
||||||
|
"coming_soon_desc": "We'll soon offer various services!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Project Implementation Process",
|
||||||
|
"subtitle": "We conduct projects with systematic and professional processes",
|
||||||
|
"step1": {
|
||||||
|
"title": "Consultation and Planning",
|
||||||
|
"description": "Accurately understand customer requirements and plan optimal solutions"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Design and Architecture",
|
||||||
|
"description": "Design user-centered intuitive design and robust system architecture"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Development and Implementation",
|
||||||
|
"description": "Develop efficient and scalable solutions using the latest technology and best practices"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Testing and Deployment",
|
||||||
|
"description": "Ensure quality through thorough testing and proceed with stable deployment"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Why Choose SmartSolTech?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Modern Technology Utilization",
|
||||||
|
"description": "Always keep up with the latest technology trends and use proven technology stacks to provide future-oriented solutions."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Expert Team",
|
||||||
|
"description": "A team of experts in each field collaborates to guarantee the highest quality results."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Fast Response",
|
||||||
|
"description": "Complete projects within scheduled timeframes through quick communication and efficient project management."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Continuous Support",
|
||||||
|
"description": "Maintain long-term partnerships through continuous maintenance and technical support even after project completion."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Quality Guarantee",
|
||||||
|
"subtitle": "For customer satisfaction\nHighest quality service"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Ready to Start Your Project?",
|
||||||
|
"subtitle": "We'll propose the optimal solution through free consultation",
|
||||||
|
"free_consultation": "Apply for Free Consultation",
|
||||||
|
"calculate_cost": "Calculate Cost",
|
||||||
|
"view_portfolio": "View Portfolio"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Recent",
|
||||||
|
"projects": "Projects"
|
||||||
|
},
|
||||||
|
"subtitle": "Check out successfully completed projects",
|
||||||
|
"description": "Check out the projects completed for customer success",
|
||||||
|
"view_details": "View Details",
|
||||||
|
"view_all": "View All Portfolio",
|
||||||
|
"categories": {
|
||||||
|
"all": "All",
|
||||||
|
"web": "Web Development",
|
||||||
|
"mobile": "Mobile Apps",
|
||||||
|
"uiux": "UI/UX Design"
|
||||||
|
},
|
||||||
|
"project_details": "Project Details",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "E-commerce",
|
||||||
|
"title": "E-commerce Platform",
|
||||||
|
"description": "Modern online commerce solution with intuitive interface"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Portfolio",
|
||||||
|
"description": "Check out SmartSolTech's diverse projects and success stories. Web development, mobile apps, UI/UX design portfolio.",
|
||||||
|
"keywords": "portfolio, web development, mobile apps, UI/UX design, projects, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Our Portfolio",
|
||||||
|
"subtitle": "Discover innovative projects and creative solutions",
|
||||||
|
"categories": {
|
||||||
|
"all": "All",
|
||||||
|
"web-development": "Web Development",
|
||||||
|
"mobile-app": "Mobile App",
|
||||||
|
"ui-ux-design": "UI/UX Design",
|
||||||
|
"branding": "Branding",
|
||||||
|
"marketing": "Digital Marketing"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "View Details",
|
||||||
|
"projectDetails": "Project Details",
|
||||||
|
"loadMore": "Load More Projects",
|
||||||
|
"contact": "Request Project",
|
||||||
|
"calculate": "Calculate Cost"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "No portfolio yet",
|
||||||
|
"subtitle": "We'll be showcasing amazing projects soon!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Be the star of the next project",
|
||||||
|
"subtitle": "Create innovative digital solutions with us"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "FEATURED",
|
||||||
|
"views": "views",
|
||||||
|
"likes": "likes"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Project Cost Calculator",
|
||||||
|
"subtitle": "Select your desired services and requirements to get accurate cost estimates in real time",
|
||||||
|
"next_step": "Next Step",
|
||||||
|
"prev_step": "Previous Step",
|
||||||
|
"calculate": "Calculate",
|
||||||
|
|
||||||
|
"reset": "Reset",
|
||||||
|
"meta": {
|
||||||
|
"title": "Project Cost Calculator",
|
||||||
|
"description": "Calculate the cost of your web development, mobile app, or design project with our interactive calculator"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Check Your Project Estimate",
|
||||||
|
"subtitle": "Select your desired services and requirements to calculate costs in real time",
|
||||||
|
"button": "Use Cost Calculator"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Choose Your Services",
|
||||||
|
"nav_title": "Step 1: Services",
|
||||||
|
"subtitle": "Select the services you need for your project"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Project Details",
|
||||||
|
"nav_title": "Step 2: Details",
|
||||||
|
"subtitle": "Tell us about your project complexity and timeline"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Project Complexity",
|
||||||
|
"simple": "Simple",
|
||||||
|
"simple_desc": "Basic features and standard functionality",
|
||||||
|
"medium": "Medium",
|
||||||
|
"medium_desc": "Custom features and integrations",
|
||||||
|
"complex": "Complex",
|
||||||
|
"complex_desc": "Advanced features and complex integrations"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Project Timeline",
|
||||||
|
"standard": "Standard (4-8 weeks)",
|
||||||
|
"standard_desc": "Normal development timeline",
|
||||||
|
"rush": "Rush (2-4 weeks)",
|
||||||
|
"rush_desc": "Expedited delivery with additional cost",
|
||||||
|
"extended": "Extended (8+ weeks)",
|
||||||
|
"extended_desc": "Flexible timeline with cost optimization"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Project Estimate",
|
||||||
|
"nav_title": "Result",
|
||||||
|
"subtitle": "Your estimated project cost",
|
||||||
|
"estimated_price": "Estimated Price",
|
||||||
|
"price_note": "This is an approximate cost. Final price may vary based on project complexity.",
|
||||||
|
"summary": "Project Summary",
|
||||||
|
"get_quote": "Get Detailed Quote",
|
||||||
|
"contact_note": "Contact us for a detailed consultation and precise quote.",
|
||||||
|
"recalculate": "Calculate Again",
|
||||||
|
"selected_services": "Selected Services",
|
||||||
|
"complexity": "Complexity",
|
||||||
|
"timeline": "Timeline"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Contact Us",
|
||||||
|
"subtitle": "We're here to help bring your ideas to life"
|
||||||
|
},
|
||||||
|
"ready_title": "Ready to Start Your Project?",
|
||||||
|
"ready_description": "Turn your ideas into reality. Experts provide the best solutions.",
|
||||||
|
"form": {
|
||||||
|
"title": "Project Inquiry",
|
||||||
|
"name": "Name",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Phone",
|
||||||
|
"message": "Message",
|
||||||
|
"submit": "Send Inquiry",
|
||||||
|
"success": "Inquiry sent successfully",
|
||||||
|
"error": "Error occurred while sending inquiry",
|
||||||
|
"service": {
|
||||||
|
"title": "Service Interest",
|
||||||
|
"select": "Select service of interest",
|
||||||
|
"web": "Web Development",
|
||||||
|
"mobile": "Mobile App",
|
||||||
|
"design": "UI/UX Design",
|
||||||
|
"branding": "Branding",
|
||||||
|
"consulting": "Consulting",
|
||||||
|
"other": "Other"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Contact Information"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Phone Inquiry",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Mon-Fri 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Email Inquiry",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "Response within 24 hours"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "For quick response"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Office Address",
|
||||||
|
"line1": "123 Teheran-ro, Gangnam-gu",
|
||||||
|
"line2": "Seoul, South Korea"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Ready?",
|
||||||
|
"start": "Get Started",
|
||||||
|
"question": "Have questions?",
|
||||||
|
"subtitle": "We provide consultation on projects"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Contact",
|
||||||
|
"description": "Contact us anytime for project inquiries or consultation"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "About SmartSolTech",
|
||||||
|
"subtitle": "Creating the future with innovation and technology"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Company Information",
|
||||||
|
"description1": "SmartSolTech is a technology company established in 2020, recognized for expertise in web development, mobile app development, and UI/UX design.",
|
||||||
|
"description2": "We accurately understand customer needs and provide innovative solutions using the latest technology."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Completed Projects",
|
||||||
|
"experience": "Years Experience",
|
||||||
|
"clients": "Satisfied Customers"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Our Mission",
|
||||||
|
"description": "Our mission is to support customer business growth through technology and lead digital innovation."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Innovation",
|
||||||
|
"description": "We provide innovative solutions through continuous R&D and adoption of cutting-edge technology."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Quality",
|
||||||
|
"description": "We maintain high quality standards and provide high-quality products that customers can be satisfied with."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Partnership",
|
||||||
|
"description": "We create the best results through close communication and collaboration with customers."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "We'll Grow Together",
|
||||||
|
"subtitle": "Turn your ideas into reality",
|
||||||
|
"button": "Contact Us"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "About Us",
|
||||||
|
"description": "SmartSolTech is a professional development company that supports customer business growth with innovative technology"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Digital solution specialist leading innovation",
|
||||||
|
"company": {
|
||||||
|
"description": "Digital solution specialist leading innovation"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Quick Links"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Contact",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "123 Teheran-ro, Gangnam-gu, Seoul"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. All rights reserved.",
|
||||||
|
"privacy": "Privacy Policy",
|
||||||
|
"terms": "Terms of Service"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Light Theme",
|
||||||
|
"dark": "Dark Theme",
|
||||||
|
"toggle": "Toggle Theme"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Loading...",
|
||||||
|
"error": "Error occurred",
|
||||||
|
"success": "Success",
|
||||||
|
"view_more": "View More",
|
||||||
|
"back": "Back",
|
||||||
|
"next": "Next",
|
||||||
|
"previous": "Previous",
|
||||||
|
"view_details": "View Details"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Innovative web development, mobile app development, UI/UX design services",
|
||||||
|
"keywords": "web development, mobile apps, UI/UX design, Korea",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Home",
|
||||||
|
"about": "About",
|
||||||
|
"services": "Services",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"calculator": "Calculator"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Admin Panel Login",
|
||||||
|
"dashboard": "Dashboard",
|
||||||
|
"title": "SmartSolTech Admin"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Digital solution specialist leading innovation",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Page not found",
|
||||||
|
"error_occurred": "Error occurred",
|
||||||
|
"title": "Error - SmartSolTech",
|
||||||
|
"default_title": "An Error Occurred",
|
||||||
|
"default_message": "A problem occurred while processing the request.",
|
||||||
|
"back_home": "Back to Home",
|
||||||
|
"go_back": "Go Back",
|
||||||
|
"need_help": "Need Help?",
|
||||||
|
"help_message": "If the problem persists, please contact us anytime.",
|
||||||
|
"contact_support": "Contact Support"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Home page",
|
||||||
|
"about": "About us",
|
||||||
|
"services": "Services",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"contact": "Contact",
|
||||||
|
"calculator": "Calculator"
|
||||||
|
}
|
||||||
|
}
|
||||||
425
.history/locales/en_20251025215055.json
Normal file
425
.history/locales/en_20251025215055.json
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Home",
|
||||||
|
"about": "About",
|
||||||
|
"services": "Services",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"contact": "Contact",
|
||||||
|
"calculator": "Calculator",
|
||||||
|
"admin": "Admin"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Smart",
|
||||||
|
"solutions": "Solutions"
|
||||||
|
},
|
||||||
|
"subtitle": "Grow your business with innovative technology",
|
||||||
|
"description": "Innovative web development, mobile apps, UI/UX design leading your business digital transformation",
|
||||||
|
"cta": {
|
||||||
|
"start": "Get Started",
|
||||||
|
"portfolio": "View Portfolio"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Our",
|
||||||
|
"services": "Services"
|
||||||
|
},
|
||||||
|
"subtitle": "Professional development services to turn your ideas into reality",
|
||||||
|
"description": "Digital solutions completed with cutting-edge technology and creative ideas",
|
||||||
|
"view_all": "View All Services",
|
||||||
|
"web": {
|
||||||
|
"title": "Web Development",
|
||||||
|
"description": "Responsive websites and web application development",
|
||||||
|
"price": "From $500"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Mobile Apps",
|
||||||
|
"description": "iOS and Android native app development",
|
||||||
|
"price": "From $1,000"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Design",
|
||||||
|
"description": "User-centered interface and experience design",
|
||||||
|
"price": "From $300"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Digital Marketing",
|
||||||
|
"description": "SEO, social media marketing, advertising management",
|
||||||
|
"price": "From $200"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Services",
|
||||||
|
"description": "Check out SmartSolTech's professional services. Web development, mobile apps, UI/UX design, digital marketing and other technology solutions.",
|
||||||
|
"keywords": "web development, mobile apps, UI/UX design, digital marketing, technology solutions, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Our",
|
||||||
|
"title_highlight": "Services",
|
||||||
|
"subtitle": "Support business growth with innovative technology"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Starting Price",
|
||||||
|
"consultation": "consultation",
|
||||||
|
"contact": "Contact",
|
||||||
|
"calculate_cost": "Calculate Cost",
|
||||||
|
"popular": "Popular",
|
||||||
|
"coming_soon": "Services Coming Soon",
|
||||||
|
"coming_soon_desc": "We'll soon offer various services!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Project Implementation Process",
|
||||||
|
"subtitle": "We conduct projects with systematic and professional processes",
|
||||||
|
"step1": {
|
||||||
|
"title": "Consultation and Planning",
|
||||||
|
"description": "Accurately understand customer requirements and plan optimal solutions"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Design and Architecture",
|
||||||
|
"description": "Design user-centered intuitive design and robust system architecture"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Development and Implementation",
|
||||||
|
"description": "Develop efficient and scalable solutions using the latest technology and best practices"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Testing and Deployment",
|
||||||
|
"description": "Ensure quality through thorough testing and proceed with stable deployment"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Why Choose SmartSolTech?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Modern Technology Utilization",
|
||||||
|
"description": "Always keep up with the latest technology trends and use proven technology stacks to provide future-oriented solutions."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Expert Team",
|
||||||
|
"description": "A team of experts in each field collaborates to guarantee the highest quality results."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Fast Response",
|
||||||
|
"description": "Complete projects within scheduled timeframes through quick communication and efficient project management."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Continuous Support",
|
||||||
|
"description": "Maintain long-term partnerships through continuous maintenance and technical support even after project completion."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Quality Guarantee",
|
||||||
|
"subtitle": "For customer satisfaction\nHighest quality service"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Ready to Start Your Project?",
|
||||||
|
"subtitle": "We'll propose the optimal solution through free consultation",
|
||||||
|
"free_consultation": "Apply for Free Consultation",
|
||||||
|
"calculate_cost": "Calculate Cost",
|
||||||
|
"view_portfolio": "View Portfolio"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Recent",
|
||||||
|
"projects": "Projects"
|
||||||
|
},
|
||||||
|
"subtitle": "Check out successfully completed projects",
|
||||||
|
"description": "Check out the projects completed for customer success",
|
||||||
|
"view_details": "View Details",
|
||||||
|
"view_all": "View All Portfolio",
|
||||||
|
"categories": {
|
||||||
|
"all": "All",
|
||||||
|
"web": "Web Development",
|
||||||
|
"mobile": "Mobile Apps",
|
||||||
|
"uiux": "UI/UX Design"
|
||||||
|
},
|
||||||
|
"project_details": "Project Details",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "E-commerce",
|
||||||
|
"title": "E-commerce Platform",
|
||||||
|
"description": "Modern online commerce solution with intuitive interface"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Portfolio",
|
||||||
|
"description": "Check out SmartSolTech's diverse projects and success stories. Web development, mobile apps, UI/UX design portfolio.",
|
||||||
|
"keywords": "portfolio, web development, mobile apps, UI/UX design, projects, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Our Portfolio",
|
||||||
|
"subtitle": "Discover innovative projects and creative solutions",
|
||||||
|
"categories": {
|
||||||
|
"all": "All",
|
||||||
|
"web-development": "Web Development",
|
||||||
|
"mobile-app": "Mobile App",
|
||||||
|
"ui-ux-design": "UI/UX Design",
|
||||||
|
"branding": "Branding",
|
||||||
|
"marketing": "Digital Marketing"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "View Details",
|
||||||
|
"projectDetails": "Project Details",
|
||||||
|
"loadMore": "Load More Projects",
|
||||||
|
"contact": "Request Project",
|
||||||
|
"calculate": "Calculate Cost"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "No portfolio yet",
|
||||||
|
"subtitle": "We'll be showcasing amazing projects soon!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Be the star of the next project",
|
||||||
|
"subtitle": "Create innovative digital solutions with us"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "FEATURED",
|
||||||
|
"views": "views",
|
||||||
|
"likes": "likes"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Project Cost Calculator",
|
||||||
|
"subtitle": "Select your desired services and requirements to get accurate cost estimates in real time",
|
||||||
|
"next_step": "Next Step",
|
||||||
|
"prev_step": "Previous Step",
|
||||||
|
"calculate": "Calculate",
|
||||||
|
|
||||||
|
"reset": "Reset",
|
||||||
|
"meta": {
|
||||||
|
"title": "Project Cost Calculator",
|
||||||
|
"description": "Calculate the cost of your web development, mobile app, or design project with our interactive calculator"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Check Your Project Estimate",
|
||||||
|
"subtitle": "Select your desired services and requirements to calculate costs in real time",
|
||||||
|
"button": "Use Cost Calculator"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Choose Your Services",
|
||||||
|
"nav_title": "Step 1: Services",
|
||||||
|
"subtitle": "Select the services you need for your project"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Project Details",
|
||||||
|
"nav_title": "Step 2: Details",
|
||||||
|
"subtitle": "Tell us about your project complexity and timeline"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Project Complexity",
|
||||||
|
"simple": "Simple",
|
||||||
|
"simple_desc": "Basic features and standard functionality",
|
||||||
|
"medium": "Medium",
|
||||||
|
"medium_desc": "Custom features and integrations",
|
||||||
|
"complex": "Complex",
|
||||||
|
"complex_desc": "Advanced features and complex integrations"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Project Timeline",
|
||||||
|
"standard": "Standard (4-8 weeks)",
|
||||||
|
"standard_desc": "Normal development timeline",
|
||||||
|
"rush": "Rush (2-4 weeks)",
|
||||||
|
"rush_desc": "Expedited delivery with additional cost",
|
||||||
|
"extended": "Extended (8+ weeks)",
|
||||||
|
"extended_desc": "Flexible timeline with cost optimization"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Project Estimate",
|
||||||
|
"nav_title": "Result",
|
||||||
|
"subtitle": "Your estimated project cost",
|
||||||
|
"estimated_price": "Estimated Price",
|
||||||
|
"price_note": "This is an approximate cost. Final price may vary based on project complexity.",
|
||||||
|
"summary": "Project Summary",
|
||||||
|
"get_quote": "Get Detailed Quote",
|
||||||
|
"contact_note": "Contact us for a detailed consultation and precise quote.",
|
||||||
|
"recalculate": "Calculate Again",
|
||||||
|
"selected_services": "Selected Services",
|
||||||
|
"complexity": "Complexity",
|
||||||
|
"timeline": "Timeline"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Contact Us",
|
||||||
|
"subtitle": "We're here to help bring your ideas to life"
|
||||||
|
},
|
||||||
|
"ready_title": "Ready to Start Your Project?",
|
||||||
|
"ready_description": "Turn your ideas into reality. Experts provide the best solutions.",
|
||||||
|
"form": {
|
||||||
|
"title": "Project Inquiry",
|
||||||
|
"name": "Name",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Phone",
|
||||||
|
"message": "Message",
|
||||||
|
"submit": "Send Inquiry",
|
||||||
|
"success": "Inquiry sent successfully",
|
||||||
|
"error": "Error occurred while sending inquiry",
|
||||||
|
"service": {
|
||||||
|
"title": "Service Interest",
|
||||||
|
"select": "Select service of interest",
|
||||||
|
"web": "Web Development",
|
||||||
|
"mobile": "Mobile App",
|
||||||
|
"design": "UI/UX Design",
|
||||||
|
"branding": "Branding",
|
||||||
|
"consulting": "Consulting",
|
||||||
|
"other": "Other"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Contact Information"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Phone Inquiry",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Mon-Fri 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Email Inquiry",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "Response within 24 hours"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "For quick response"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Office Address",
|
||||||
|
"line1": "123 Teheran-ro, Gangnam-gu",
|
||||||
|
"line2": "Seoul, South Korea"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Ready?",
|
||||||
|
"start": "Get Started",
|
||||||
|
"question": "Have questions?",
|
||||||
|
"subtitle": "We provide consultation on projects"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Contact",
|
||||||
|
"description": "Contact us anytime for project inquiries or consultation"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "About SmartSolTech",
|
||||||
|
"subtitle": "Creating the future with innovation and technology"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Company Information",
|
||||||
|
"description1": "SmartSolTech is a technology company established in 2020, recognized for expertise in web development, mobile app development, and UI/UX design.",
|
||||||
|
"description2": "We accurately understand customer needs and provide innovative solutions using the latest technology."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Completed Projects",
|
||||||
|
"experience": "Years Experience",
|
||||||
|
"clients": "Satisfied Customers"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Our Mission",
|
||||||
|
"description": "Our mission is to support customer business growth through technology and lead digital innovation."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Innovation",
|
||||||
|
"description": "We provide innovative solutions through continuous R&D and adoption of cutting-edge technology."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Quality",
|
||||||
|
"description": "We maintain high quality standards and provide high-quality products that customers can be satisfied with."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Partnership",
|
||||||
|
"description": "We create the best results through close communication and collaboration with customers."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "We'll Grow Together",
|
||||||
|
"subtitle": "Turn your ideas into reality",
|
||||||
|
"button": "Contact Us"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "About Us",
|
||||||
|
"description": "SmartSolTech is a professional development company that supports customer business growth with innovative technology"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Digital solution specialist leading innovation",
|
||||||
|
"company": {
|
||||||
|
"description": "Digital solution specialist leading innovation"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Quick Links"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Contact",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "123 Teheran-ro, Gangnam-gu, Seoul"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. All rights reserved.",
|
||||||
|
"privacy": "Privacy Policy",
|
||||||
|
"terms": "Terms of Service"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Light Theme",
|
||||||
|
"dark": "Dark Theme",
|
||||||
|
"toggle": "Toggle Theme"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Loading...",
|
||||||
|
"error": "Error occurred",
|
||||||
|
"success": "Success",
|
||||||
|
"view_more": "View More",
|
||||||
|
"back": "Back",
|
||||||
|
"next": "Next",
|
||||||
|
"previous": "Previous",
|
||||||
|
"view_details": "View Details"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Innovative web development, mobile app development, UI/UX design services",
|
||||||
|
"keywords": "web development, mobile apps, UI/UX design, Korea",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Home",
|
||||||
|
"about": "About",
|
||||||
|
"services": "Services",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"calculator": "Calculator"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Admin Panel Login",
|
||||||
|
"dashboard": "Dashboard",
|
||||||
|
"title": "SmartSolTech Admin"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Digital solution specialist leading innovation",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Page not found",
|
||||||
|
"error_occurred": "Error occurred",
|
||||||
|
"title": "Error - SmartSolTech",
|
||||||
|
"default_title": "An Error Occurred",
|
||||||
|
"default_message": "A problem occurred while processing the request.",
|
||||||
|
"back_home": "Back to Home",
|
||||||
|
"go_back": "Go Back",
|
||||||
|
"need_help": "Need Help?",
|
||||||
|
"help_message": "If the problem persists, please contact us anytime.",
|
||||||
|
"contact_support": "Contact Support"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Home page",
|
||||||
|
"about": "About us",
|
||||||
|
"services": "Services",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"contact": "Contact",
|
||||||
|
"calculator": "Calculator"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Басты бет",
|
|
||||||
"about": "Біз туралы",
|
|
||||||
"services": "Қызметтер",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Байланыс",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Ақылды Технологиялық",
|
|
||||||
"subtitle": "Шешімдер",
|
|
||||||
"description": "Инновациялық веб-әзірлеу, мобильді қосымшалар, UI/UX дизайн арқылы бизнестің цифрлық трансформациясын жүргіземіз",
|
|
||||||
"cta_primary": "Жобаны бастау",
|
|
||||||
"cta_secondary": "Портфолионы көру"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Біздің",
|
|
||||||
"title_highlight": "Қызметтер",
|
|
||||||
"description": "Заманауи технология және шығармашылық идеялармен жасалған цифрлық шешімдер",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-әзірлеу",
|
|
||||||
"description": "Заманауи және бейімделгіш веб-сайттар мен веб-қосымшаларды әзірлеу",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильді қосымшалар",
|
|
||||||
"description": "iOS және Android үшін нативті және кросс-платформалық қосымшалар",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Пайдаланушы-орталықты интуитивті және әдемі интерфейс дизайны",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифрлық маркетинг",
|
|
||||||
"description": "SEO, әлеуметтік медиа, онлайн жарнама арқылы цифрлық маркетинг",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Барлық қызметтерді көру"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Соңғы",
|
|
||||||
"title_highlight": "Жобалар",
|
|
||||||
"description": "Тұтынушылардың табысы үшін аяқталған жобаларды тексеріңіз",
|
|
||||||
"view_details": "Толығырақ",
|
|
||||||
"view_all": "Барлық портфолионы көру"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Жобаңыздың бағасын тексеріңіз",
|
|
||||||
"description": "Қажетті қызметтер мен талаптарды таңдап, нақты уақытта бағаны есептеңіз",
|
|
||||||
"cta": "Баға калькуляторын пайдалану"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Жобаңызды бастауға дайынсыз ба?",
|
|
||||||
"ready_description": "Идеяларыңызды шындыққа айналдырыңыз. Сарапшылар ең жақсы шешімдерді ұсынады.",
|
|
||||||
"phone_consultation": "Телефон кеңесі",
|
|
||||||
"email_inquiry": "Электрондық пошта сұрауы",
|
|
||||||
"telegram_chat": "Telegram чаты",
|
|
||||||
"instant_response": "Лезде жауап беру мүмкін",
|
|
||||||
"free_consultation": "Тегін кеңес беру өтініші",
|
|
||||||
"form": {
|
|
||||||
"name": "Аты",
|
|
||||||
"email": "Электрондық пошта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Қызығатын қызмет",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Қызығатын қызметті таңдаңыз",
|
|
||||||
"web_development": "Веб-әзірлеу",
|
|
||||||
"mobile_app": "Мобильді қосымша",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Кеңес беру",
|
|
||||||
"other": "Басқа"
|
|
||||||
},
|
|
||||||
"message": "Жобаңыз туралы қысқаша сипаттаңыз",
|
|
||||||
"submit": "Кеңес беру үшін өтініш беру"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "Туралы",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Инновациялық технологиямен тұтынушылардың табысына жетелейтін цифрлық шешімдер маманы",
|
|
||||||
"overview": {
|
|
||||||
"title": "Инновация мен шығармашылықпен болашақты құру",
|
|
||||||
"description_1": "SmartSolTech - 2020 жылы құрылған цифрлық шешімдер маманы, веб-әзірлеу, мобильді қосымшалар, UI/UX дизайн салаларында инновациялық технология мен шығармашылық идеялар негізінде тұтынушылардың бизнес табысын қолдайды.",
|
|
||||||
"description_2": "Біз жай ғана технологияны ұсынып қана қоймаймыз, тұтынушылардың мақсаттарын түсініп, оларға сәйкес оңтайлы шешімдерді ұсынып, бірге өсетін серіктестер болуды мақсат етеміз.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Аяқталған жобалар",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Қанағаттанған тұтынушылар",
|
|
||||||
"experience": "4 жыл",
|
|
||||||
"experience_label": "Саладағы тәжірибе"
|
|
||||||
},
|
|
||||||
"mission": "Біздің миссия",
|
|
||||||
"mission_text": "Технология арқылы барлық бизнестердің цифрлық дәуірде табысқа жетуіне көмектесу",
|
|
||||||
"vision": "Біздің көзқарас",
|
|
||||||
"vision_text": "Қазақстанды білдіретін жаһандық цифрлық шешімдер компаниясы ретінде өсіп, бүкіл әлемдегі тұтынушылардың цифрлық инновацияларын басқару"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Негізгі",
|
|
||||||
"title_highlight": "Құндылықтар",
|
|
||||||
"description": "SmartSolTech ұстанатын негізгі құндылықтар",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновация",
|
|
||||||
"description": "Үздіксіз зерттеу-әзірлеу және заманауи технологияларды енгізу арқылы инновациялық шешімдерді ұсынамыз."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Ынтымақтастық",
|
|
||||||
"description": "Тұтынушылармен тығыз қарым-қатынас пен ынтымақтастық арқылы ең жақсы нәтижелерді жасаймыз."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Сапа",
|
|
||||||
"description": "Жоғары сапа стандарттарын сақтап, тұтынушылар қанағаттана алатын жоғары сапалы өнімдерді ұсынамыз."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Өсу",
|
|
||||||
"description": "Тұтынушылармен бірге өсіп, үздіксіз оқу мен дамуды мақсат етеміз."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Біздің",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Сараптама мен құлшынысты SmartSolTech командасын таныстырамыз"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологиялық",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Заманауи технология мен дәлелденген құралдармен ең жақсы шешімдерді ұсынамыз",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильді"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Бірге табысқа жететін серіктес болыңыз",
|
|
||||||
"description": "SmartSolTech-пен бизнесіңізді келесі деңгейге дамытыңыз",
|
|
||||||
"partnership": "Серіктестік сұрауы",
|
|
||||||
"portfolio": "Портфолионы көру"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Инновацияны басқаратын цифрлық шешімдер маманы",
|
|
||||||
"quick_links": "Жылдам сілтемелер",
|
|
||||||
"services": "Қызметтер",
|
|
||||||
"contact_info": "Байланыс ақпараты",
|
|
||||||
"follow_us": "Бізді іздеңіз",
|
|
||||||
"rights": "Барлық құқықтар сақталған."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Ашық тема",
|
|
||||||
"dark": "Қараңғы тема",
|
|
||||||
"toggle": "Теманы ауыстыру"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Жүктелуде...",
|
|
||||||
"error": "Қате орын алды",
|
|
||||||
"success": "Сәтті",
|
|
||||||
"view_more": "Көбірек көру",
|
|
||||||
"back": "Артқа",
|
|
||||||
"next": "Келесі",
|
|
||||||
"previous": "Алдыңғы"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Басты бет",
|
|
||||||
"about": "Біз туралы",
|
|
||||||
"services": "Қызметтер",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Байланыс",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Ақылды Технологиялық",
|
|
||||||
"subtitle": "Шешімдер",
|
|
||||||
"description": "Инновациялық веб-әзірлеу, мобильді қосымшалар, UI/UX дизайн арқылы бизнестің цифрлық трансформациясын жүргіземіз",
|
|
||||||
"cta_primary": "Жобаны бастау",
|
|
||||||
"cta_secondary": "Портфолионы көру"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Біздің",
|
|
||||||
"title_highlight": "Қызметтер",
|
|
||||||
"description": "Заманауи технология және шығармашылық идеялармен жасалған цифрлық шешімдер",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-әзірлеу",
|
|
||||||
"description": "Заманауи және бейімделгіш веб-сайттар мен веб-қосымшаларды әзірлеу",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильді қосымшалар",
|
|
||||||
"description": "iOS және Android үшін нативті және кросс-платформалық қосымшалар",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Пайдаланушы-орталықты интуитивті және әдемі интерфейс дизайны",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифрлық маркетинг",
|
|
||||||
"description": "SEO, әлеуметтік медиа, онлайн жарнама арқылы цифрлық маркетинг",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Барлық қызметтерді көру"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Соңғы",
|
|
||||||
"title_highlight": "Жобалар",
|
|
||||||
"description": "Тұтынушылардың табысы үшін аяқталған жобаларды тексеріңіз",
|
|
||||||
"view_details": "Толығырақ",
|
|
||||||
"view_all": "Барлық портфолионы көру"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Жобаңыздың бағасын тексеріңіз",
|
|
||||||
"description": "Қажетті қызметтер мен талаптарды таңдап, нақты уақытта бағаны есептеңіз",
|
|
||||||
"cta": "Баға калькуляторын пайдалану"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Жобаңызды бастауға дайынсыз ба?",
|
|
||||||
"ready_description": "Идеяларыңызды шындыққа айналдырыңыз. Сарапшылар ең жақсы шешімдерді ұсынады.",
|
|
||||||
"phone_consultation": "Телефон кеңесі",
|
|
||||||
"email_inquiry": "Электрондық пошта сұрауы",
|
|
||||||
"telegram_chat": "Telegram чаты",
|
|
||||||
"instant_response": "Лезде жауап беру мүмкін",
|
|
||||||
"free_consultation": "Тегін кеңес беру өтініші",
|
|
||||||
"form": {
|
|
||||||
"name": "Аты",
|
|
||||||
"email": "Электрондық пошта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Қызығатын қызмет",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Қызығатын қызметті таңдаңыз",
|
|
||||||
"web_development": "Веб-әзірлеу",
|
|
||||||
"mobile_app": "Мобильді қосымша",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Кеңес беру",
|
|
||||||
"other": "Басқа"
|
|
||||||
},
|
|
||||||
"message": "Жобаңыз туралы қысқаша сипаттаңыз",
|
|
||||||
"submit": "Кеңес беру үшін өтініш беру"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "Туралы",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Инновациялық технологиямен тұтынушылардың табысына жетелейтін цифрлық шешімдер маманы",
|
|
||||||
"overview": {
|
|
||||||
"title": "Инновация мен шығармашылықпен болашақты құру",
|
|
||||||
"description_1": "SmartSolTech - 2020 жылы құрылған цифрлық шешімдер маманы, веб-әзірлеу, мобильді қосымшалар, UI/UX дизайн салаларында инновациялық технология мен шығармашылық идеялар негізінде тұтынушылардың бизнес табысын қолдайды.",
|
|
||||||
"description_2": "Біз жай ғана технологияны ұсынып қана қоймаймыз, тұтынушылардың мақсаттарын түсініп, оларға сәйкес оңтайлы шешімдерді ұсынып, бірге өсетін серіктестер болуды мақсат етеміз.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Аяқталған жобалар",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Қанағаттанған тұтынушылар",
|
|
||||||
"experience": "4 жыл",
|
|
||||||
"experience_label": "Саладағы тәжірибе"
|
|
||||||
},
|
|
||||||
"mission": "Біздің миссия",
|
|
||||||
"mission_text": "Технология арқылы барлық бизнестердің цифрлық дәуірде табысқа жетуіне көмектесу",
|
|
||||||
"vision": "Біздің көзқарас",
|
|
||||||
"vision_text": "Қазақстанды білдіретін жаһандық цифрлық шешімдер компаниясы ретінде өсіп, бүкіл әлемдегі тұтынушылардың цифрлық инновацияларын басқару"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Негізгі",
|
|
||||||
"title_highlight": "Құндылықтар",
|
|
||||||
"description": "SmartSolTech ұстанатын негізгі құндылықтар",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновация",
|
|
||||||
"description": "Үздіксіз зерттеу-әзірлеу және заманауи технологияларды енгізу арқылы инновациялық шешімдерді ұсынамыз."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Ынтымақтастық",
|
|
||||||
"description": "Тұтынушылармен тығыз қарым-қатынас пен ынтымақтастық арқылы ең жақсы нәтижелерді жасаймыз."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Сапа",
|
|
||||||
"description": "Жоғары сапа стандарттарын сақтап, тұтынушылар қанағаттана алатын жоғары сапалы өнімдерді ұсынамыз."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Өсу",
|
|
||||||
"description": "Тұтынушылармен бірге өсіп, үздіксіз оқу мен дамуды мақсат етеміз."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Біздің",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Сараптама мен құлшынысты SmartSolTech командасын таныстырамыз"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологиялық",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Заманауи технология мен дәлелденген құралдармен ең жақсы шешімдерді ұсынамыз",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильді"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Бірге табысқа жететін серіктес болыңыз",
|
|
||||||
"description": "SmartSolTech-пен бизнесіңізді келесі деңгейге дамытыңыз",
|
|
||||||
"partnership": "Серіктестік сұрауы",
|
|
||||||
"portfolio": "Портфолионы көру"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Инновацияны басқаратын цифрлық шешімдер маманы",
|
|
||||||
"quick_links": "Жылдам сілтемелер",
|
|
||||||
"services": "Қызметтер",
|
|
||||||
"contact_info": "Байланыс ақпараты",
|
|
||||||
"follow_us": "Бізді іздеңіз",
|
|
||||||
"rights": "Барлық құқықтар сақталған."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Ашық тема",
|
|
||||||
"dark": "Қараңғы тема",
|
|
||||||
"toggle": "Теманы ауыстыру"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Жүктелуде...",
|
|
||||||
"error": "Қате орын алды",
|
|
||||||
"success": "Сәтті",
|
|
||||||
"view_more": "Көбірек көру",
|
|
||||||
"back": "Артқа",
|
|
||||||
"next": "Келесі",
|
|
||||||
"previous": "Алдыңғы"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Басты бет",
|
|
||||||
"about": "Біз туралы",
|
|
||||||
"services": "Қызметтер",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Байланыс",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Ақылды Технологиялық",
|
|
||||||
"subtitle": "Шешімдер",
|
|
||||||
"description": "Инновациялық веб-әзірлеу, мобильді қосымшалар, UI/UX дизайн арқылы бизнестің цифрлық трансформациясын жүргіземіз",
|
|
||||||
"cta_primary": "Жобаны бастау",
|
|
||||||
"cta_secondary": "Портфолионы көру"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Біздің",
|
|
||||||
"title_highlight": "Қызметтер",
|
|
||||||
"description": "Заманауи технология және шығармашылық идеялармен жасалған цифрлық шешімдер",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-әзірлеу",
|
|
||||||
"description": "Заманауи және бейімделгіш веб-сайттар мен веб-қосымшаларды әзірлеу",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильді қосымшалар",
|
|
||||||
"description": "iOS және Android үшін нативті және кросс-платформалық қосымшалар",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Пайдаланушы-орталықты интуитивті және әдемі интерфейс дизайны",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифрлық маркетинг",
|
|
||||||
"description": "SEO, әлеуметтік медиа, онлайн жарнама арқылы цифрлық маркетинг",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Барлық қызметтерді көру"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Соңғы",
|
|
||||||
"title_highlight": "Жобалар",
|
|
||||||
"description": "Тұтынушылардың табысы үшін аяқталған жобаларды тексеріңіз",
|
|
||||||
"view_details": "Толығырақ",
|
|
||||||
"view_all": "Барлық портфолионы көру"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Жоба Құнының Калькуляторы",
|
|
||||||
"subtitle": "Қажетті қызметтер мен талаптарды таңдап, нақты уақытта дәл бағаны алыңыз",
|
|
||||||
"meta": {
|
|
||||||
"title": "Жоба құнының калькуляторы",
|
|
||||||
"description": "Веб-әзірлеу, мобильді қосымша немесе дизайн жобасының құнын біздің интерактивті калькулятормен есептеңіз"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Жобаның бағасын тексеріңіз",
|
|
||||||
"subtitle": "Қажетті қызметтер мен талаптарды таңдап, нақты уақытта бағаны есептейміз",
|
|
||||||
"button": "Құн калькуляторын пайдалану"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "1-қадам: Қызмет таңдау",
|
|
||||||
"subtitle": "Қажетті қызметтерді таңдаңыз (бірнеше таңдауға болады)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "2-қадам: Жоба мәліметтері",
|
|
||||||
"subtitle": "Жобаның күрделілігі мен мерзімін таңдаңыз"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "Жобаның күрделілігі",
|
|
||||||
"simple": "Қарапайым",
|
|
||||||
"simple_desc": "Негізгі функциялар, стандартты дизайн",
|
|
||||||
"medium": "Орташа",
|
|
||||||
"medium_desc": "Қосымша функциялар, жеке дизайн",
|
|
||||||
"complex": "Күрделі",
|
|
||||||
"complex_desc": "Кеңейтілген функциялар, күрделі интеграциялар"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "Әзірлеу мерзімі",
|
|
||||||
"standard": "Стандартты",
|
|
||||||
"standard_desc": "Қалыпты әзірлеу мерзімі",
|
|
||||||
"rush": "Асығыс",
|
|
||||||
"rush_desc": "Жылдам әзірлеу (+50%)",
|
|
||||||
"extended": "Кеңейтілген",
|
|
||||||
"extended_desc": "Икемді әзірлеу мерзімі (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "Есептеу нәтижесі",
|
|
||||||
"subtitle": "Міне, сіздің алдын ала жоба құнының бағасы",
|
|
||||||
"estimated_price": "Алдын ала баға",
|
|
||||||
"price_note": "* Соңғы құн жоба мәліметтеріне байланысты өзгеруі мүмкін",
|
|
||||||
"summary": "Жоба қорытындысы",
|
|
||||||
"selected_services": "Таңдалған қызметтер",
|
|
||||||
"complexity": "Күрделілік",
|
|
||||||
"timeline": "Мерзім",
|
|
||||||
"get_quote": "Дәл ұсыныс алу",
|
|
||||||
"recalculate": "Қайта есептеу",
|
|
||||||
"contact_note": "Дәл ұсыныс алу және жоба мәліметтерін талқылау үшін бізбен байланысыңыз"
|
|
||||||
},
|
|
||||||
"next_step": "Келесі қадам",
|
|
||||||
"prev_step": "Артқа",
|
|
||||||
"calculate": "Есептеу"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Жобаңызды бастауға дайынсыз ба?",
|
|
||||||
"ready_description": "Идеяларыңызды шындыққа айналдырыңыз. Сарапшылар ең жақсы шешімдерді ұсынады.",
|
|
||||||
"phone_consultation": "Телефон кеңесі",
|
|
||||||
"email_inquiry": "Электрондық пошта сұрауы",
|
|
||||||
"telegram_chat": "Telegram чаты",
|
|
||||||
"instant_response": "Лезде жауап беру мүмкін",
|
|
||||||
"free_consultation": "Тегін кеңес беру өтініші",
|
|
||||||
"form": {
|
|
||||||
"name": "Аты",
|
|
||||||
"email": "Электрондық пошта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Қызығатын қызмет",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Қызығатын қызметті таңдаңыз",
|
|
||||||
"web_development": "Веб-әзірлеу",
|
|
||||||
"mobile_app": "Мобильді қосымша",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Кеңес беру",
|
|
||||||
"other": "Басқа"
|
|
||||||
},
|
|
||||||
"message": "Жобаңыз туралы қысқаша сипаттаңыз",
|
|
||||||
"submit": "Кеңес беру үшін өтініш беру"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "Туралы",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Инновациялық технологиямен тұтынушылардың табысына жетелейтін цифрлық шешімдер маманы",
|
|
||||||
"overview": {
|
|
||||||
"title": "Инновация мен шығармашылықпен болашақты құру",
|
|
||||||
"description_1": "SmartSolTech - 2020 жылы құрылған цифрлық шешімдер маманы, веб-әзірлеу, мобильді қосымшалар, UI/UX дизайн салаларында инновациялық технология мен шығармашылық идеялар негізінде тұтынушылардың бизнес табысын қолдайды.",
|
|
||||||
"description_2": "Біз жай ғана технологияны ұсынып қана қоймаймыз, тұтынушылардың мақсаттарын түсініп, оларға сәйкес оңтайлы шешімдерді ұсынып, бірге өсетін серіктестер болуды мақсат етеміз.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Аяқталған жобалар",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Қанағаттанған тұтынушылар",
|
|
||||||
"experience": "4 жыл",
|
|
||||||
"experience_label": "Саладағы тәжірибе"
|
|
||||||
},
|
|
||||||
"mission": "Біздің миссия",
|
|
||||||
"mission_text": "Технология арқылы барлық бизнестердің цифрлық дәуірде табысқа жетуіне көмектесу",
|
|
||||||
"vision": "Біздің көзқарас",
|
|
||||||
"vision_text": "Қазақстанды білдіретін жаһандық цифрлық шешімдер компаниясы ретінде өсіп, бүкіл әлемдегі тұтынушылардың цифрлық инновацияларын басқару"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Негізгі",
|
|
||||||
"title_highlight": "Құндылықтар",
|
|
||||||
"description": "SmartSolTech ұстанатын негізгі құндылықтар",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновация",
|
|
||||||
"description": "Үздіксіз зерттеу-әзірлеу және заманауи технологияларды енгізу арқылы инновациялық шешімдерді ұсынамыз."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Ынтымақтастық",
|
|
||||||
"description": "Тұтынушылармен тығыз қарым-қатынас пен ынтымақтастық арқылы ең жақсы нәтижелерді жасаймыз."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Сапа",
|
|
||||||
"description": "Жоғары сапа стандарттарын сақтап, тұтынушылар қанағаттана алатын жоғары сапалы өнімдерді ұсынамыз."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Өсу",
|
|
||||||
"description": "Тұтынушылармен бірге өсіп, үздіксіз оқу мен дамуды мақсат етеміз."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Біздің",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Сараптама мен құлшынысты SmartSolTech командасын таныстырамыз"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологиялық",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Заманауи технология мен дәлелденген құралдармен ең жақсы шешімдерді ұсынамыз",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильді"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Бірге табысқа жететін серіктес болыңыз",
|
|
||||||
"description": "SmartSolTech-пен бизнесіңізді келесі деңгейге дамытыңыз",
|
|
||||||
"partnership": "Серіктестік сұрауы",
|
|
||||||
"portfolio": "Портфолионы көру"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Инновацияны басқаратын цифрлық шешімдер маманы",
|
|
||||||
"quick_links": "Жылдам сілтемелер",
|
|
||||||
"services": "Қызметтер",
|
|
||||||
"contact_info": "Байланыс ақпараты",
|
|
||||||
"follow_us": "Бізді іздеңіз",
|
|
||||||
"rights": "Барлық құқықтар сақталған."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Ашық тема",
|
|
||||||
"dark": "Қараңғы тема",
|
|
||||||
"toggle": "Теманы ауыстыру"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Жүктелуде...",
|
|
||||||
"error": "Қате орын алды",
|
|
||||||
"success": "Сәтті",
|
|
||||||
"view_more": "Көбірек көру",
|
|
||||||
"back": "Артқа",
|
|
||||||
"next": "Келесі",
|
|
||||||
"previous": "Алдыңғы"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
424
.history/locales/kk_20251025214933.json
Normal file
424
.history/locales/kk_20251025214933.json
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Басты бет",
|
||||||
|
"about": "Біз туралы",
|
||||||
|
"services": "Қызметтер",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Байланыс",
|
||||||
|
"calculator": "Калькулятор",
|
||||||
|
"admin": "Әкімші"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Ақылды",
|
||||||
|
"solutions": "Шешімдер"
|
||||||
|
},
|
||||||
|
"subtitle": "Инновациялық технологиялармен бизнесіңізді дамытыңыз",
|
||||||
|
"description": "Бизнесіңіздің цифрлық трансформациясы үшін инновациялық веб-дамыту, мобильді қосымшалар, UI/UX дизайн",
|
||||||
|
"cta": {
|
||||||
|
"start": "Бастау",
|
||||||
|
"portfolio": "Портфолионы көру"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Біздің",
|
||||||
|
"services": "Қызметтер"
|
||||||
|
},
|
||||||
|
"subtitle": "Идеяларыңызды шындыққа айналдыру үшін кәсіби дамыту қызметтері",
|
||||||
|
"description": "Озық технологиялар мен шығармашылық идеяларды пайдаланған цифрлық шешімдер",
|
||||||
|
"view_all": "Барлық қызметтерді көру",
|
||||||
|
"web": {
|
||||||
|
"title": "Веб-дамыту",
|
||||||
|
"description": "Бейімделетін веб-сайттар мен веб-қосымшалар",
|
||||||
|
"price": "$500-дан бастап"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Мобильді қосымшалар",
|
||||||
|
"description": "iOS және Android үшін жергілікті қосымшалар дамыту",
|
||||||
|
"price": "$1,000-нан бастап"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Дизайн",
|
||||||
|
"description": "Интерфейс пен пайдаланушы тәжірибесінің дизайны",
|
||||||
|
"price": "$300-дан бастап"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Цифрлық маркетинг",
|
||||||
|
"description": "SEO, SMM, жарнама басқаруы",
|
||||||
|
"price": "$200-ден бастап"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Қызметтер",
|
||||||
|
"description": "SmartSolTech-тің кәсіби қызметтерін танысыңыз. Веб-дамыту, мобильді қосымшалар, UI/UX дизайн, цифрлық маркетинг және басқа технологиялық шешімдер.",
|
||||||
|
"keywords": "веб-дамыту, мобильді қосымшалар, UI/UX дизайн, цифрлық маркетинг, технологиялық шешімдер, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Біздің",
|
||||||
|
"title_highlight": "Қызметтер",
|
||||||
|
"subtitle": "Инновациялық технологиялармен бизнес өсуін қолдау"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Бастапқы баға",
|
||||||
|
"consultation": "кеңес беру",
|
||||||
|
"contact": "Байланысу",
|
||||||
|
"calculate_cost": "Құнын есептеу",
|
||||||
|
"popular": "Танымал",
|
||||||
|
"coming_soon": "Қызметтер жақында пайда болады",
|
||||||
|
"coming_soon_desc": "Жақында біз әртүрлі қызметтерді ұсынамыз!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Жоба іске асыру процесі",
|
||||||
|
"subtitle": "Біз жобаларды жүйелі және кәсіби тәсілмен жүргіземіз",
|
||||||
|
"step1": {
|
||||||
|
"title": "Кеңес беру және жоспарлау",
|
||||||
|
"description": "Клиенттің талаптарын дәл түсініп, оңтайлы шешімді жоспарлаймыз"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Дизайн және жобалау",
|
||||||
|
"description": "Пайдаланушыға бағытталған интуитивті дизайн мен сенімді жүйе архитектурасын жобалаймыз"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Дамыту және іске асыру",
|
||||||
|
"description": "Ең жаңа технологиялар мен ең жақсы тәжірибелерді пайдаланып тиімді және кеңейтілетін шешімдер дамытамыз"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Тестілеу және енгізу",
|
||||||
|
"description": "Мұқият тестілеу арқылы сапаны қамтамасыз етіп, тұрақты енгізуді жүргіземіз"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Неліктен SmartSolTech таңдау керек?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Заманауи технологияларды пайдалану",
|
||||||
|
"description": "Үнемі ең жаңа технологиялық трендтерді қадағалап, дәлелденген технологиялық стекті пайдаланып болашаққа бағытталған шешімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Сарапшылар командасы",
|
||||||
|
"description": "Әр саладағы сарапшылардан тұратын команда ынтымақтасып ең жоғары сапалы нәтижелерді қамтамасыз етеді."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Жылдам жауап",
|
||||||
|
"description": "Жылдам коммуникация және тиімді жоба басқаруы арқылы белгіленген мерзімде жобаларды аяқтаймыз."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Үздіксіз қолдау",
|
||||||
|
"description": "Жоба аяқталғаннан кейін де үздіксіз қызмет көрсету және техникалық қолдау арқылы ұзақ мерзімді серіктестікті сақтаймыз."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Сапа кепілдігі",
|
||||||
|
"subtitle": "Клиенттердің қанағаттануы үшін\nЕң жоғары сапалы қызмет"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Жобаңызды бастауға дайынсыз ба?",
|
||||||
|
"subtitle": "Тегін кеңес беру арқылы оңтайлы шешімді ұсынамыз",
|
||||||
|
"free_consultation": "Тегін кеңес беруге өтініш беру",
|
||||||
|
"calculate_cost": "Құнын есептеу",
|
||||||
|
"view_portfolio": "Портфолионы көру"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Соңғы",
|
||||||
|
"projects": "Жобалар"
|
||||||
|
},
|
||||||
|
"subtitle": "Сәтті аяқталған жобалармен танысыңыз",
|
||||||
|
"description": "Клиенттердің табысы үшін орындалған жобаларды көріңіз",
|
||||||
|
"view_details": "Толық ақпарат",
|
||||||
|
"view_all": "Барлық портфолионы көру",
|
||||||
|
"categories": {
|
||||||
|
"all": "Барлығы",
|
||||||
|
"web": "Веб-дамыту",
|
||||||
|
"mobile": "Мобильді қосымшалар",
|
||||||
|
"uiux": "UI/UX Дизайн"
|
||||||
|
},
|
||||||
|
"project_details": "Жоба егжей-тегжейлері",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "Электрондық сауда",
|
||||||
|
"title": "Электрондық сауда платформасы",
|
||||||
|
"description": "Интуитивті интерфейсі бар заманауи интернет-сауда шешімі"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Портфолио",
|
||||||
|
"description": "SmartSolTech-тің әртүрлі жобалары мен табыс тарихтарын танысыңыз. Веб-дамыту, мобильді қосымшалар, UI/UX дизайн портфолиосы.",
|
||||||
|
"keywords": "портфолио, веб-дамыту, мобильді қосымшалар, UI/UX дизайн, жобалар, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Біздің портфолио",
|
||||||
|
"subtitle": "Инновациялық жобалар мен шығармашылық шешімдерді ашыңыз",
|
||||||
|
"categories": {
|
||||||
|
"all": "Барлығы",
|
||||||
|
"web-development": "Веб-дамыту",
|
||||||
|
"mobile-app": "Мобильді қосымшалар",
|
||||||
|
"ui-ux-design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"marketing": "Цифрлық маркетинг"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "Толық ақпарат",
|
||||||
|
"projectDetails": "Жоба егжей-тегжейлері",
|
||||||
|
"loadMore": "Көбірек жобаларды жүктеу",
|
||||||
|
"contact": "Жоба тапсырысу",
|
||||||
|
"calculate": "Құнын есептеу"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "Портфолио әзірше бос",
|
||||||
|
"subtitle": "Жақында біз керемет жобаларды таныстырамыз!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Келесі жобаның жұлдызы болыңыз",
|
||||||
|
"subtitle": "Бізбен бірге инновациялық цифрлық шешімдер жасаңыз"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "ҰСЫНЫЛҒАН",
|
||||||
|
"views": "көрініс",
|
||||||
|
"likes": "ұнату"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Жоба құнының калькуляторы",
|
||||||
|
"subtitle": "Нақты уақытта дәл бағалау алу үшін қажетті қызметтер мен талаптарды таңдаңыз",
|
||||||
|
"next_step": "Келесі қадам",
|
||||||
|
"prev_step": "Алдыңғы қадам",
|
||||||
|
"calculate": "Есептеу",
|
||||||
|
"reset": "Қайта бастау",
|
||||||
|
"meta": {
|
||||||
|
"title": "Жоба құнының калькуляторы",
|
||||||
|
"description": "Біздің интерактивті калькулятормен веб-дамыту, мобильді қосымша немесе дизайн жобаңыздың құнын есептеңіз"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Жобаңыздың бағасын тексеріңіз",
|
||||||
|
"subtitle": "Нақты уақытта құнды есептеу үшін қажетті қызметтер мен талаптарды таңдаңыз",
|
||||||
|
"button": "Құн калькуляторын пайдалану"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Қызметтеріңізді таңдаңыз",
|
||||||
|
"nav_title": "1-қадам: Қызметтер",
|
||||||
|
"subtitle": "Жобаңыз үшін қажетті қызметтерді таңдаңыз"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Жоба егжей-тегжейлері",
|
||||||
|
"nav_title": "2-қадам: Егжей-тегжейлер",
|
||||||
|
"subtitle": "Жобаңыздың күрделілігі мен мерзімдері туралы айтыңыз"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Жоба күрделілігі",
|
||||||
|
"simple": "Қарапайым",
|
||||||
|
"simple_desc": "Негізгі функциялар мен стандартты функционал",
|
||||||
|
"medium": "Орташа",
|
||||||
|
"medium_desc": "Пайдаланушы функциялары мен интеграциялар",
|
||||||
|
"complex": "Күрделі",
|
||||||
|
"complex_desc": "Қосымша функциялар мен күрделі интеграциялар"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Жоба мерзімдері",
|
||||||
|
"standard": "Стандартты (4-8 апта)",
|
||||||
|
"standard_desc": "Қалыпты дамыту мерзімдері",
|
||||||
|
"rush": "Шұғыл (2-4 апта)",
|
||||||
|
"rush_desc": "Қосымша құнмен жылдамдатылған жеткізу",
|
||||||
|
"extended": "Кеңейтілген (8+ апта)",
|
||||||
|
"extended_desc": "Құн оңтайландырумен икемді мерзімдер"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Жоба бағасы",
|
||||||
|
"subtitle": "Сіздің есептелген жоба құны",
|
||||||
|
"nav_title": "Баға",
|
||||||
|
"estimated_price": "Есептелген баға",
|
||||||
|
"price_note": "Бұл шамамен құн. Соңғы баға жобаның күрделілігіне байланысты өзгеруі мүмкін.",
|
||||||
|
"summary": "Жоба қорытындысы",
|
||||||
|
"get_quote": "Толық ұсыныс алу",
|
||||||
|
"contact_note": "Толық кеңес беру және дәл ұсыныс алу үшін бізбен байланысыңыз.",
|
||||||
|
"recalculate": "Қайта есептеу",
|
||||||
|
"selected_services": "Таңдалған қызметтер",
|
||||||
|
"complexity": "Күрделілік",
|
||||||
|
"timeline": "Мерзімдер"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Бізбен байланысыңыз",
|
||||||
|
"subtitle": "Біз сіздің идеяларыңызды өмірге келтіруге көмектесуге дайынбыз"
|
||||||
|
},
|
||||||
|
"ready_title": "Жобаңызды бастауға дайынсыз ба?",
|
||||||
|
"ready_description": "Идеяларыңызды шындыққа айналдырыңыз. Сарапшылар ең жақсы шешімдерді ұсынады.",
|
||||||
|
"form": {
|
||||||
|
"title": "Жоба сұранысы",
|
||||||
|
"name": "Аты",
|
||||||
|
"email": "Электрондық пошта",
|
||||||
|
"phone": "Телефон",
|
||||||
|
"message": "Хабарлама",
|
||||||
|
"submit": "Сұраныс жіберу",
|
||||||
|
"success": "Сұраныс сәтті жіберілді",
|
||||||
|
"error": "Сұранысты жіберу кезінде қате пайда болды",
|
||||||
|
"service": {
|
||||||
|
"title": "Қызығушылық қызметі",
|
||||||
|
"select": "Қызығушылық қызметін таңдаңыз",
|
||||||
|
"web": "Веб-дамыту",
|
||||||
|
"mobile": "Мобильді қосымша",
|
||||||
|
"design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"consulting": "Кеңес беру",
|
||||||
|
"other": "Басқа"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Байланыс ақпараты"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Телефон арқылы сұраныс",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Дс-Жм 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Электрондық пошта арқылы сұраныс",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "24 сағат ішінде жауап"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "Жылдам жауап алу үшін"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Кеңсе мекенжайы",
|
||||||
|
"line1": "Тегеран-ро көшесі, 123, Каннам-гу",
|
||||||
|
"line2": "Сеул, Оңтүстік Корея"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Дайынсыз ба?",
|
||||||
|
"start": "Бастау",
|
||||||
|
"question": "Сұрақтарыңыз бар ма?",
|
||||||
|
"subtitle": "Біз жобалар бойынша кеңес береміз"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Байланыс",
|
||||||
|
"description": "Жоба сұранысы немесе кеңес алу үшін кез келген уақытта бізбен байланысыңыз"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "SmartSolTech туралы",
|
||||||
|
"subtitle": "Инновациялар мен технологиялармен болашақты жасаймыз"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Компания туралы ақпарат",
|
||||||
|
"description1": "SmartSolTech - 2020 жылы құрылған технологиялық компания, веб-дамыту, мобильді қосымшалар дамыту және UI/UX дизайн саласындағы сараптамасымен танылған.",
|
||||||
|
"description2": "Біз клиенттердің қажеттіліктерін дәл түсінеміз және ең жаңа технологияларды пайдаланып инновациялық шешімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Аяқталған жобалар",
|
||||||
|
"experience": "Жыл тәжірибе",
|
||||||
|
"clients": "Қанағаттанған клиенттер"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Біздің миссия",
|
||||||
|
"description": "Біздің миссиямыз - технологиялар арқылы клиенттердің бизнес өсуін қолдау және цифрлық инновацияларға көшбасшылық ету."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Инновациялар",
|
||||||
|
"description": "Біз үздіксіз зерттеулер мен озық технологияларды енгізу арқылы инновациялық шешімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Сапа",
|
||||||
|
"description": "Біз жоғары сапа стандарттарын ұстанамыз және клиенттер қанағаттанатын жоғары сапалы өнімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Серіктестік",
|
||||||
|
"description": "Біз клиенттермен тығыз қарым-қатынас пен ынтымақтастық арқылы ең жақсы нәтижелерді жасаймыз."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Біз бірге өсеміз",
|
||||||
|
"subtitle": "Идеяларыңызды шындыққа айналдырыңыз",
|
||||||
|
"button": "Бізбен байланысу"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Біз туралы",
|
||||||
|
"description": "SmartSolTech - инновациялық технологиялармен клиенттердің бизнес өсуін қолдайтын кәсіби дамыту компаниясы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Инновацияларға көшбасшылық ететін цифрлық шешімдер маманы",
|
||||||
|
"company": {
|
||||||
|
"description": "Инновацияларға көшбасшылық ететін цифрлық шешімдер маманы"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Жылдам сілтемелер"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Байланыс",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "Тегеран-ро көшесі, 123, Каннам-гу, Сеул"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. Барлық құқықтар қорғалған.",
|
||||||
|
"privacy": "Құпиялылық саясаты",
|
||||||
|
"terms": "Пайдалану шарттары"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Ашық тема",
|
||||||
|
"dark": "Қараңғы тема",
|
||||||
|
"toggle": "Теманы ауыстыру"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Жүктелуде...",
|
||||||
|
"error": "Қате пайда болды",
|
||||||
|
"success": "Сәтті",
|
||||||
|
"view_more": "Көбірек көру",
|
||||||
|
"back": "Артқа",
|
||||||
|
"next": "Келесі",
|
||||||
|
"previous": "Алдыңғы",
|
||||||
|
"view_details": "Толық ақпарат"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Инновациялық веб-дамыту, мобильді қосымшалар дамыту, UI/UX дизайн",
|
||||||
|
"keywords": "веб-дамыту, мобильді қосымшалар, UI/UX дизайн, Корея",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Басты бет",
|
||||||
|
"about": "Біз туралы",
|
||||||
|
"services": "Қызметтер",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Әкімші панеліне кіру",
|
||||||
|
"dashboard": "Басқару панелі",
|
||||||
|
"title": "SmartSolTech Әкімші"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Инновацияларға көшбасшылық ететін цифрлық шешімдер маманы",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Бет табылмады",
|
||||||
|
"error_occurred": "Қате пайда болды",
|
||||||
|
"title": "Қате - SmartSolTech",
|
||||||
|
"default_title": "Қате пайда болды",
|
||||||
|
"default_message": "Сұранысты өңдеу кезінде мәселе туындады.",
|
||||||
|
"back_home": "Басты бетке оралу",
|
||||||
|
"go_back": "Артқа оралу",
|
||||||
|
"need_help": "Көмек керек пе?",
|
||||||
|
"help_message": "Егер мәселе қайталанса, кез келген уақытта бізбен байланысыңыз.",
|
||||||
|
"contact_support": "Қолдау қызметімен байланысу"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Басты бет",
|
||||||
|
"about": "Біз туралы",
|
||||||
|
"services": "Қызметтер",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Байланыс",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
}
|
||||||
|
}
|
||||||
424
.history/locales/kk_20251025215055.json
Normal file
424
.history/locales/kk_20251025215055.json
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Басты бет",
|
||||||
|
"about": "Біз туралы",
|
||||||
|
"services": "Қызметтер",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Байланыс",
|
||||||
|
"calculator": "Калькулятор",
|
||||||
|
"admin": "Әкімші"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Ақылды",
|
||||||
|
"solutions": "Шешімдер"
|
||||||
|
},
|
||||||
|
"subtitle": "Инновациялық технологиялармен бизнесіңізді дамытыңыз",
|
||||||
|
"description": "Бизнесіңіздің цифрлық трансформациясы үшін инновациялық веб-дамыту, мобильді қосымшалар, UI/UX дизайн",
|
||||||
|
"cta": {
|
||||||
|
"start": "Бастау",
|
||||||
|
"portfolio": "Портфолионы көру"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Біздің",
|
||||||
|
"services": "Қызметтер"
|
||||||
|
},
|
||||||
|
"subtitle": "Идеяларыңызды шындыққа айналдыру үшін кәсіби дамыту қызметтері",
|
||||||
|
"description": "Озық технологиялар мен шығармашылық идеяларды пайдаланған цифрлық шешімдер",
|
||||||
|
"view_all": "Барлық қызметтерді көру",
|
||||||
|
"web": {
|
||||||
|
"title": "Веб-дамыту",
|
||||||
|
"description": "Бейімделетін веб-сайттар мен веб-қосымшалар",
|
||||||
|
"price": "$500-дан бастап"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Мобильді қосымшалар",
|
||||||
|
"description": "iOS және Android үшін жергілікті қосымшалар дамыту",
|
||||||
|
"price": "$1,000-нан бастап"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Дизайн",
|
||||||
|
"description": "Интерфейс пен пайдаланушы тәжірибесінің дизайны",
|
||||||
|
"price": "$300-дан бастап"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Цифрлық маркетинг",
|
||||||
|
"description": "SEO, SMM, жарнама басқаруы",
|
||||||
|
"price": "$200-ден бастап"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Қызметтер",
|
||||||
|
"description": "SmartSolTech-тің кәсіби қызметтерін танысыңыз. Веб-дамыту, мобильді қосымшалар, UI/UX дизайн, цифрлық маркетинг және басқа технологиялық шешімдер.",
|
||||||
|
"keywords": "веб-дамыту, мобильді қосымшалар, UI/UX дизайн, цифрлық маркетинг, технологиялық шешімдер, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Біздің",
|
||||||
|
"title_highlight": "Қызметтер",
|
||||||
|
"subtitle": "Инновациялық технологиялармен бизнес өсуін қолдау"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Бастапқы баға",
|
||||||
|
"consultation": "кеңес беру",
|
||||||
|
"contact": "Байланысу",
|
||||||
|
"calculate_cost": "Құнын есептеу",
|
||||||
|
"popular": "Танымал",
|
||||||
|
"coming_soon": "Қызметтер жақында пайда болады",
|
||||||
|
"coming_soon_desc": "Жақында біз әртүрлі қызметтерді ұсынамыз!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Жоба іске асыру процесі",
|
||||||
|
"subtitle": "Біз жобаларды жүйелі және кәсіби тәсілмен жүргіземіз",
|
||||||
|
"step1": {
|
||||||
|
"title": "Кеңес беру және жоспарлау",
|
||||||
|
"description": "Клиенттің талаптарын дәл түсініп, оңтайлы шешімді жоспарлаймыз"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Дизайн және жобалау",
|
||||||
|
"description": "Пайдаланушыға бағытталған интуитивті дизайн мен сенімді жүйе архитектурасын жобалаймыз"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Дамыту және іске асыру",
|
||||||
|
"description": "Ең жаңа технологиялар мен ең жақсы тәжірибелерді пайдаланып тиімді және кеңейтілетін шешімдер дамытамыз"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Тестілеу және енгізу",
|
||||||
|
"description": "Мұқият тестілеу арқылы сапаны қамтамасыз етіп, тұрақты енгізуді жүргіземіз"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Неліктен SmartSolTech таңдау керек?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Заманауи технологияларды пайдалану",
|
||||||
|
"description": "Үнемі ең жаңа технологиялық трендтерді қадағалап, дәлелденген технологиялық стекті пайдаланып болашаққа бағытталған шешімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Сарапшылар командасы",
|
||||||
|
"description": "Әр саладағы сарапшылардан тұратын команда ынтымақтасып ең жоғары сапалы нәтижелерді қамтамасыз етеді."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Жылдам жауап",
|
||||||
|
"description": "Жылдам коммуникация және тиімді жоба басқаруы арқылы белгіленген мерзімде жобаларды аяқтаймыз."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Үздіксіз қолдау",
|
||||||
|
"description": "Жоба аяқталғаннан кейін де үздіксіз қызмет көрсету және техникалық қолдау арқылы ұзақ мерзімді серіктестікті сақтаймыз."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Сапа кепілдігі",
|
||||||
|
"subtitle": "Клиенттердің қанағаттануы үшін\nЕң жоғары сапалы қызмет"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Жобаңызды бастауға дайынсыз ба?",
|
||||||
|
"subtitle": "Тегін кеңес беру арқылы оңтайлы шешімді ұсынамыз",
|
||||||
|
"free_consultation": "Тегін кеңес беруге өтініш беру",
|
||||||
|
"calculate_cost": "Құнын есептеу",
|
||||||
|
"view_portfolio": "Портфолионы көру"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Соңғы",
|
||||||
|
"projects": "Жобалар"
|
||||||
|
},
|
||||||
|
"subtitle": "Сәтті аяқталған жобалармен танысыңыз",
|
||||||
|
"description": "Клиенттердің табысы үшін орындалған жобаларды көріңіз",
|
||||||
|
"view_details": "Толық ақпарат",
|
||||||
|
"view_all": "Барлық портфолионы көру",
|
||||||
|
"categories": {
|
||||||
|
"all": "Барлығы",
|
||||||
|
"web": "Веб-дамыту",
|
||||||
|
"mobile": "Мобильді қосымшалар",
|
||||||
|
"uiux": "UI/UX Дизайн"
|
||||||
|
},
|
||||||
|
"project_details": "Жоба егжей-тегжейлері",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "Электрондық сауда",
|
||||||
|
"title": "Электрондық сауда платформасы",
|
||||||
|
"description": "Интуитивті интерфейсі бар заманауи интернет-сауда шешімі"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Портфолио",
|
||||||
|
"description": "SmartSolTech-тің әртүрлі жобалары мен табыс тарихтарын танысыңыз. Веб-дамыту, мобильді қосымшалар, UI/UX дизайн портфолиосы.",
|
||||||
|
"keywords": "портфолио, веб-дамыту, мобильді қосымшалар, UI/UX дизайн, жобалар, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Біздің портфолио",
|
||||||
|
"subtitle": "Инновациялық жобалар мен шығармашылық шешімдерді ашыңыз",
|
||||||
|
"categories": {
|
||||||
|
"all": "Барлығы",
|
||||||
|
"web-development": "Веб-дамыту",
|
||||||
|
"mobile-app": "Мобильді қосымшалар",
|
||||||
|
"ui-ux-design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"marketing": "Цифрлық маркетинг"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "Толық ақпарат",
|
||||||
|
"projectDetails": "Жоба егжей-тегжейлері",
|
||||||
|
"loadMore": "Көбірек жобаларды жүктеу",
|
||||||
|
"contact": "Жоба тапсырысу",
|
||||||
|
"calculate": "Құнын есептеу"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "Портфолио әзірше бос",
|
||||||
|
"subtitle": "Жақында біз керемет жобаларды таныстырамыз!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Келесі жобаның жұлдызы болыңыз",
|
||||||
|
"subtitle": "Бізбен бірге инновациялық цифрлық шешімдер жасаңыз"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "ҰСЫНЫЛҒАН",
|
||||||
|
"views": "көрініс",
|
||||||
|
"likes": "ұнату"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Жоба құнының калькуляторы",
|
||||||
|
"subtitle": "Нақты уақытта дәл бағалау алу үшін қажетті қызметтер мен талаптарды таңдаңыз",
|
||||||
|
"next_step": "Келесі қадам",
|
||||||
|
"prev_step": "Алдыңғы қадам",
|
||||||
|
"calculate": "Есептеу",
|
||||||
|
"reset": "Қайта бастау",
|
||||||
|
"meta": {
|
||||||
|
"title": "Жоба құнының калькуляторы",
|
||||||
|
"description": "Біздің интерактивті калькулятормен веб-дамыту, мобильді қосымша немесе дизайн жобаңыздың құнын есептеңіз"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Жобаңыздың бағасын тексеріңіз",
|
||||||
|
"subtitle": "Нақты уақытта құнды есептеу үшін қажетті қызметтер мен талаптарды таңдаңыз",
|
||||||
|
"button": "Құн калькуляторын пайдалану"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Қызметтеріңізді таңдаңыз",
|
||||||
|
"nav_title": "1-қадам: Қызметтер",
|
||||||
|
"subtitle": "Жобаңыз үшін қажетті қызметтерді таңдаңыз"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Жоба егжей-тегжейлері",
|
||||||
|
"nav_title": "2-қадам: Егжей-тегжейлер",
|
||||||
|
"subtitle": "Жобаңыздың күрделілігі мен мерзімдері туралы айтыңыз"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Жоба күрделілігі",
|
||||||
|
"simple": "Қарапайым",
|
||||||
|
"simple_desc": "Негізгі функциялар мен стандартты функционал",
|
||||||
|
"medium": "Орташа",
|
||||||
|
"medium_desc": "Пайдаланушы функциялары мен интеграциялар",
|
||||||
|
"complex": "Күрделі",
|
||||||
|
"complex_desc": "Қосымша функциялар мен күрделі интеграциялар"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Жоба мерзімдері",
|
||||||
|
"standard": "Стандартты (4-8 апта)",
|
||||||
|
"standard_desc": "Қалыпты дамыту мерзімдері",
|
||||||
|
"rush": "Шұғыл (2-4 апта)",
|
||||||
|
"rush_desc": "Қосымша құнмен жылдамдатылған жеткізу",
|
||||||
|
"extended": "Кеңейтілген (8+ апта)",
|
||||||
|
"extended_desc": "Құн оңтайландырумен икемді мерзімдер"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Жоба бағасы",
|
||||||
|
"subtitle": "Сіздің есептелген жоба құны",
|
||||||
|
"nav_title": "Баға",
|
||||||
|
"estimated_price": "Есептелген баға",
|
||||||
|
"price_note": "Бұл шамамен құн. Соңғы баға жобаның күрделілігіне байланысты өзгеруі мүмкін.",
|
||||||
|
"summary": "Жоба қорытындысы",
|
||||||
|
"get_quote": "Толық ұсыныс алу",
|
||||||
|
"contact_note": "Толық кеңес беру және дәл ұсыныс алу үшін бізбен байланысыңыз.",
|
||||||
|
"recalculate": "Қайта есептеу",
|
||||||
|
"selected_services": "Таңдалған қызметтер",
|
||||||
|
"complexity": "Күрделілік",
|
||||||
|
"timeline": "Мерзімдер"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Бізбен байланысыңыз",
|
||||||
|
"subtitle": "Біз сіздің идеяларыңызды өмірге келтіруге көмектесуге дайынбыз"
|
||||||
|
},
|
||||||
|
"ready_title": "Жобаңызды бастауға дайынсыз ба?",
|
||||||
|
"ready_description": "Идеяларыңызды шындыққа айналдырыңыз. Сарапшылар ең жақсы шешімдерді ұсынады.",
|
||||||
|
"form": {
|
||||||
|
"title": "Жоба сұранысы",
|
||||||
|
"name": "Аты",
|
||||||
|
"email": "Электрондық пошта",
|
||||||
|
"phone": "Телефон",
|
||||||
|
"message": "Хабарлама",
|
||||||
|
"submit": "Сұраныс жіберу",
|
||||||
|
"success": "Сұраныс сәтті жіберілді",
|
||||||
|
"error": "Сұранысты жіберу кезінде қате пайда болды",
|
||||||
|
"service": {
|
||||||
|
"title": "Қызығушылық қызметі",
|
||||||
|
"select": "Қызығушылық қызметін таңдаңыз",
|
||||||
|
"web": "Веб-дамыту",
|
||||||
|
"mobile": "Мобильді қосымша",
|
||||||
|
"design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"consulting": "Кеңес беру",
|
||||||
|
"other": "Басқа"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Байланыс ақпараты"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Телефон арқылы сұраныс",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Дс-Жм 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Электрондық пошта арқылы сұраныс",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "24 сағат ішінде жауап"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "Жылдам жауап алу үшін"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Кеңсе мекенжайы",
|
||||||
|
"line1": "Тегеран-ро көшесі, 123, Каннам-гу",
|
||||||
|
"line2": "Сеул, Оңтүстік Корея"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Дайынсыз ба?",
|
||||||
|
"start": "Бастау",
|
||||||
|
"question": "Сұрақтарыңыз бар ма?",
|
||||||
|
"subtitle": "Біз жобалар бойынша кеңес береміз"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Байланыс",
|
||||||
|
"description": "Жоба сұранысы немесе кеңес алу үшін кез келген уақытта бізбен байланысыңыз"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "SmartSolTech туралы",
|
||||||
|
"subtitle": "Инновациялар мен технологиялармен болашақты жасаймыз"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Компания туралы ақпарат",
|
||||||
|
"description1": "SmartSolTech - 2020 жылы құрылған технологиялық компания, веб-дамыту, мобильді қосымшалар дамыту және UI/UX дизайн саласындағы сараптамасымен танылған.",
|
||||||
|
"description2": "Біз клиенттердің қажеттіліктерін дәл түсінеміз және ең жаңа технологияларды пайдаланып инновациялық шешімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Аяқталған жобалар",
|
||||||
|
"experience": "Жыл тәжірибе",
|
||||||
|
"clients": "Қанағаттанған клиенттер"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Біздің миссия",
|
||||||
|
"description": "Біздің миссиямыз - технологиялар арқылы клиенттердің бизнес өсуін қолдау және цифрлық инновацияларға көшбасшылық ету."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Инновациялар",
|
||||||
|
"description": "Біз үздіксіз зерттеулер мен озық технологияларды енгізу арқылы инновациялық шешімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Сапа",
|
||||||
|
"description": "Біз жоғары сапа стандарттарын ұстанамыз және клиенттер қанағаттанатын жоғары сапалы өнімдер ұсынамыз."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Серіктестік",
|
||||||
|
"description": "Біз клиенттермен тығыз қарым-қатынас пен ынтымақтастық арқылы ең жақсы нәтижелерді жасаймыз."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Біз бірге өсеміз",
|
||||||
|
"subtitle": "Идеяларыңызды шындыққа айналдырыңыз",
|
||||||
|
"button": "Бізбен байланысу"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Біз туралы",
|
||||||
|
"description": "SmartSolTech - инновациялық технологиялармен клиенттердің бизнес өсуін қолдайтын кәсіби дамыту компаниясы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Инновацияларға көшбасшылық ететін цифрлық шешімдер маманы",
|
||||||
|
"company": {
|
||||||
|
"description": "Инновацияларға көшбасшылық ететін цифрлық шешімдер маманы"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Жылдам сілтемелер"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Байланыс",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "Тегеран-ро көшесі, 123, Каннам-гу, Сеул"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. Барлық құқықтар қорғалған.",
|
||||||
|
"privacy": "Құпиялылық саясаты",
|
||||||
|
"terms": "Пайдалану шарттары"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Ашық тема",
|
||||||
|
"dark": "Қараңғы тема",
|
||||||
|
"toggle": "Теманы ауыстыру"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Жүктелуде...",
|
||||||
|
"error": "Қате пайда болды",
|
||||||
|
"success": "Сәтті",
|
||||||
|
"view_more": "Көбірек көру",
|
||||||
|
"back": "Артқа",
|
||||||
|
"next": "Келесі",
|
||||||
|
"previous": "Алдыңғы",
|
||||||
|
"view_details": "Толық ақпарат"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Инновациялық веб-дамыту, мобильді қосымшалар дамыту, UI/UX дизайн",
|
||||||
|
"keywords": "веб-дамыту, мобильді қосымшалар, UI/UX дизайн, Корея",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Басты бет",
|
||||||
|
"about": "Біз туралы",
|
||||||
|
"services": "Қызметтер",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Әкімші панеліне кіру",
|
||||||
|
"dashboard": "Басқару панелі",
|
||||||
|
"title": "SmartSolTech Әкімші"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Инновацияларға көшбасшылық ететін цифрлық шешімдер маманы",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Бет табылмады",
|
||||||
|
"error_occurred": "Қате пайда болды",
|
||||||
|
"title": "Қате - SmartSolTech",
|
||||||
|
"default_title": "Қате пайда болды",
|
||||||
|
"default_message": "Сұранысты өңдеу кезінде мәселе туындады.",
|
||||||
|
"back_home": "Басты бетке оралу",
|
||||||
|
"go_back": "Артқа оралу",
|
||||||
|
"need_help": "Көмек керек пе?",
|
||||||
|
"help_message": "Егер мәселе қайталанса, кез келген уақытта бізбен байланысыңыз.",
|
||||||
|
"contact_support": "Қолдау қызметімен байланысу"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Басты бет",
|
||||||
|
"about": "Біз туралы",
|
||||||
|
"services": "Қызметтер",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Байланыс",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "회사소개",
|
|
||||||
"services": "서비스",
|
|
||||||
"portfolio": "포트폴리오",
|
|
||||||
"contact": "연락처",
|
|
||||||
"calculator": "견적계산기",
|
|
||||||
"admin": "관리자"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "혁신적인 웹 개발, 모바일 앱, UI/UX 디자인으로 비즈니스의 디지털 전환을 이끌어갑니다",
|
|
||||||
"cta_primary": "프로젝트 시작하기",
|
|
||||||
"cta_secondary": "포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "최신 기술과 창의적인 아이디어로 완성하는 디지털 솔루션",
|
|
||||||
"web_development": {
|
|
||||||
"title": "웹 개발",
|
|
||||||
"description": "현대적이고 반응형 웹사이트 및 웹 애플리케이션 개발",
|
|
||||||
"price": "₩500,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "모바일 앱",
|
|
||||||
"description": "iOS와 Android를 위한 네이티브 및 크로스플랫폼 앱",
|
|
||||||
"price": "₩800,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX 디자인",
|
|
||||||
"description": "사용자 중심의 직관적이고 아름다운 인터페이스 디자인",
|
|
||||||
"price": "₩300,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "디지털 마케팅",
|
|
||||||
"description": "SEO, 소셜미디어, 온라인 광고를 통한 디지털 마케팅",
|
|
||||||
"price": "₩200,000~"
|
|
||||||
},
|
|
||||||
"view_all": "모든 서비스 보기"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "고객의 성공을 위해 완성한 프로젝트들을 확인해보세요",
|
|
||||||
"view_details": "자세히 보기",
|
|
||||||
"view_all": "전체 포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"description": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"cta": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
|
||||||
"ready_description": "아이디어를 현실로 만들어보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
|
||||||
"phone_consultation": "전화 상담",
|
|
||||||
"email_inquiry": "이메일 문의",
|
|
||||||
"telegram_chat": "텔레그램 채팅",
|
|
||||||
"instant_response": "즉시 답변 가능",
|
|
||||||
"free_consultation": "무료 상담 신청",
|
|
||||||
"form": {
|
|
||||||
"name": "이름",
|
|
||||||
"email": "이메일",
|
|
||||||
"phone": "연락처",
|
|
||||||
"service_interest": "관심 서비스",
|
|
||||||
"service_options": {
|
|
||||||
"select": "관심 서비스 선택",
|
|
||||||
"web_development": "웹 개발",
|
|
||||||
"mobile_app": "모바일 앱",
|
|
||||||
"ui_ux_design": "UI/UX 디자인",
|
|
||||||
"branding": "브랜딩",
|
|
||||||
"consulting": "컨설팅",
|
|
||||||
"other": "기타"
|
|
||||||
},
|
|
||||||
"message": "프로젝트에 대해 간단히 설명해주세요",
|
|
||||||
"submit": "상담 신청하기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "혁신적인 기술로 고객의 성공을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"overview": {
|
|
||||||
"title": "혁신과 창의로 만드는 미래",
|
|
||||||
"description_1": "SmartSolTech는 2020년 설립된 디지털 솔루션 전문 기업으로, 웹 개발, 모바일 앱, UI/UX 디자인 분야에서 혁신적인 기술과 창의적인 아이디어를 바탕으로 고객의 비즈니스 성공을 지원합니다.",
|
|
||||||
"description_2": "우리는 단순히 기술을 제공하는 것이 아니라, 고객의 목표를 이해하고 그에 맞는 최적의 솔루션을 제안하여 함께 성장하는 파트너가 되고자 합니다.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "완료 프로젝트",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "만족한 고객",
|
|
||||||
"experience": "4년",
|
|
||||||
"experience_label": "업계 경험"
|
|
||||||
},
|
|
||||||
"mission": "우리의 미션",
|
|
||||||
"mission_text": "기술을 통해 모든 비즈니스가 디지털 시대에서 성공할 수 있도록 돕는 것",
|
|
||||||
"vision": "우리의 비전",
|
|
||||||
"vision_text": "한국을 대표하는 글로벌 디지털 솔루션 기업으로 성장하여 전 세계 고객들의 디지털 혁신을 주도하는 것"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "SmartSolTech가 추구하는 핵심 가치들",
|
|
||||||
"innovation": {
|
|
||||||
"title": "혁신 (Innovation)",
|
|
||||||
"description": "끊임없는 연구개발과 최신 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "협력 (Collaboration)",
|
|
||||||
"description": "고객과의 긴밀한 소통과 협력을 통해 최상의 결과를 만들어냅니다."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "품질 (Quality)",
|
|
||||||
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 완성도 높은 제품을 제공합니다."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "성장 (Growth)",
|
|
||||||
"description": "고객과 함께 성장하며, 지속적인 학습과 발전을 추구합니다."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "전문성과 열정을 갖춘 SmartSolTech 팀을 소개합니다"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "최신 기술과 검증된 도구들로 최고의 솔루션을 제공합니다",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "함께 성공하는 파트너가 되어보세요",
|
|
||||||
"description": "SmartSolTech와 함께 여러분의 비즈니스를 다음 단계로 발전시켜보세요",
|
|
||||||
"partnership": "파트너십 문의",
|
|
||||||
"portfolio": "포트폴리오 보기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "혁신을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"quick_links": "빠른 링크",
|
|
||||||
"services": "서비스",
|
|
||||||
"contact_info": "연락처 정보",
|
|
||||||
"follow_us": "팔로우하기",
|
|
||||||
"rights": "모든 권리 보유."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "라이트 테마",
|
|
||||||
"dark": "다크 테마",
|
|
||||||
"toggle": "테마 전환"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "로딩 중...",
|
|
||||||
"error": "오류가 발생했습니다",
|
|
||||||
"success": "성공",
|
|
||||||
"view_more": "더 보기",
|
|
||||||
"back": "뒤로",
|
|
||||||
"next": "다음",
|
|
||||||
"previous": "이전"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "회사소개",
|
|
||||||
"services": "서비스",
|
|
||||||
"portfolio": "포트폴리오",
|
|
||||||
"contact": "연락처",
|
|
||||||
"calculator": "견적계산기",
|
|
||||||
"admin": "관리자"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "혁신적인 웹 개발, 모바일 앱, UI/UX 디자인으로 비즈니스의 디지털 전환을 이끌어갑니다",
|
|
||||||
"cta_primary": "프로젝트 시작하기",
|
|
||||||
"cta_secondary": "포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "최신 기술과 창의적인 아이디어로 완성하는 디지털 솔루션",
|
|
||||||
"web_development": {
|
|
||||||
"title": "웹 개발",
|
|
||||||
"description": "현대적이고 반응형 웹사이트 및 웹 애플리케이션 개발",
|
|
||||||
"price": "₩500,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "모바일 앱",
|
|
||||||
"description": "iOS와 Android를 위한 네이티브 및 크로스플랫폼 앱",
|
|
||||||
"price": "₩800,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX 디자인",
|
|
||||||
"description": "사용자 중심의 직관적이고 아름다운 인터페이스 디자인",
|
|
||||||
"price": "₩300,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "디지털 마케팅",
|
|
||||||
"description": "SEO, 소셜미디어, 온라인 광고를 통한 디지털 마케팅",
|
|
||||||
"price": "₩200,000~"
|
|
||||||
},
|
|
||||||
"view_all": "모든 서비스 보기"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "고객의 성공을 위해 완성한 프로젝트들을 확인해보세요",
|
|
||||||
"view_details": "자세히 보기",
|
|
||||||
"view_all": "전체 포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"description": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"cta": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
|
||||||
"ready_description": "아이디어를 현실로 만들어보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
|
||||||
"phone_consultation": "전화 상담",
|
|
||||||
"email_inquiry": "이메일 문의",
|
|
||||||
"telegram_chat": "텔레그램 채팅",
|
|
||||||
"instant_response": "즉시 답변 가능",
|
|
||||||
"free_consultation": "무료 상담 신청",
|
|
||||||
"form": {
|
|
||||||
"name": "이름",
|
|
||||||
"email": "이메일",
|
|
||||||
"phone": "연락처",
|
|
||||||
"service_interest": "관심 서비스",
|
|
||||||
"service_options": {
|
|
||||||
"select": "관심 서비스 선택",
|
|
||||||
"web_development": "웹 개발",
|
|
||||||
"mobile_app": "모바일 앱",
|
|
||||||
"ui_ux_design": "UI/UX 디자인",
|
|
||||||
"branding": "브랜딩",
|
|
||||||
"consulting": "컨설팅",
|
|
||||||
"other": "기타"
|
|
||||||
},
|
|
||||||
"message": "프로젝트에 대해 간단히 설명해주세요",
|
|
||||||
"submit": "상담 신청하기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "혁신적인 기술로 고객의 성공을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"overview": {
|
|
||||||
"title": "혁신과 창의로 만드는 미래",
|
|
||||||
"description_1": "SmartSolTech는 2020년 설립된 디지털 솔루션 전문 기업으로, 웹 개발, 모바일 앱, UI/UX 디자인 분야에서 혁신적인 기술과 창의적인 아이디어를 바탕으로 고객의 비즈니스 성공을 지원합니다.",
|
|
||||||
"description_2": "우리는 단순히 기술을 제공하는 것이 아니라, 고객의 목표를 이해하고 그에 맞는 최적의 솔루션을 제안하여 함께 성장하는 파트너가 되고자 합니다.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "완료 프로젝트",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "만족한 고객",
|
|
||||||
"experience": "4년",
|
|
||||||
"experience_label": "업계 경험"
|
|
||||||
},
|
|
||||||
"mission": "우리의 미션",
|
|
||||||
"mission_text": "기술을 통해 모든 비즈니스가 디지털 시대에서 성공할 수 있도록 돕는 것",
|
|
||||||
"vision": "우리의 비전",
|
|
||||||
"vision_text": "한국을 대표하는 글로벌 디지털 솔루션 기업으로 성장하여 전 세계 고객들의 디지털 혁신을 주도하는 것"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "SmartSolTech가 추구하는 핵심 가치들",
|
|
||||||
"innovation": {
|
|
||||||
"title": "혁신 (Innovation)",
|
|
||||||
"description": "끊임없는 연구개발과 최신 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "협력 (Collaboration)",
|
|
||||||
"description": "고객과의 긴밀한 소통과 협력을 통해 최상의 결과를 만들어냅니다."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "품질 (Quality)",
|
|
||||||
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 완성도 높은 제품을 제공합니다."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "성장 (Growth)",
|
|
||||||
"description": "고객과 함께 성장하며, 지속적인 학습과 발전을 추구합니다."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "전문성과 열정을 갖춘 SmartSolTech 팀을 소개합니다"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "최신 기술과 검증된 도구들로 최고의 솔루션을 제공합니다",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "함께 성공하는 파트너가 되어보세요",
|
|
||||||
"description": "SmartSolTech와 함께 여러분의 비즈니스를 다음 단계로 발전시켜보세요",
|
|
||||||
"partnership": "파트너십 문의",
|
|
||||||
"portfolio": "포트폴리오 보기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "혁신을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"quick_links": "빠른 링크",
|
|
||||||
"services": "서비스",
|
|
||||||
"contact_info": "연락처 정보",
|
|
||||||
"follow_us": "팔로우하기",
|
|
||||||
"rights": "모든 권리 보유."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "라이트 테마",
|
|
||||||
"dark": "다크 테마",
|
|
||||||
"toggle": "테마 전환"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "로딩 중...",
|
|
||||||
"error": "오류가 발생했습니다",
|
|
||||||
"success": "성공",
|
|
||||||
"view_more": "더 보기",
|
|
||||||
"back": "뒤로",
|
|
||||||
"next": "다음",
|
|
||||||
"previous": "이전"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,227 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "calculator": {
|
|
||||||
"title": "프로젝트 견적 계산기",
|
|
||||||
"subtitle": "원하는 서비스와 요구사항을 선택하면 실시간으로 정확한 견적을 계산해드립니다",
|
|
||||||
"meta": {
|
|
||||||
"title": "프로젝트 견적 계산기",
|
|
||||||
"description": "웹 개발, 모바일 앱, 디자인 프로젝트 비용을 실시간으로 계산해보세요"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"subtitle": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"button": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "1단계: 서비스 선택",
|
|
||||||
"subtitle": "필요한 서비스를 선택해주세요 (복수 선택 가능)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "2단계: 프로젝트 세부사항",
|
|
||||||
"subtitle": "프로젝트의 복잡도와 일정을 선택해주세요"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "프로젝트 복잡도",
|
|
||||||
"simple": "단순",
|
|
||||||
"simple_desc": "기본 기능, 표준 디자인",
|
|
||||||
"medium": "보통",
|
|
||||||
"medium_desc": "추가 기능, 커스텀 디자인",
|
|
||||||
"complex": "복잡",
|
|
||||||
"complex_desc": "고급 기능, 복합 통합"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "개발 일정",
|
|
||||||
"standard": "표준",
|
|
||||||
"standard_desc": "일반적인 개발 기간",
|
|
||||||
"rush": "급한",
|
|
||||||
"rush_desc": "빠른 개발 (+50%)",
|
|
||||||
"extended": "여유",
|
|
||||||
"extended_desc": "넉넉한 개발 기간 (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "견적 결과",
|
|
||||||
"subtitle": "프로젝트 예상 견적입니다",
|
|
||||||
"estimated_price": "예상 견적",
|
|
||||||
"price_note": "* 최종 견적은 프로젝트 세부사항에 따라 달라질 수 있습니다",
|
|
||||||
"summary": "프로젝트 요약",
|
|
||||||
"selected_services": "선택한 서비스",
|
|
||||||
"complexity": "복잡도",
|
|
||||||
"timeline": "일정",
|
|
||||||
"get_quote": "정확한 견적 받기",
|
|
||||||
"recalculate": "다시 계산",
|
|
||||||
"contact_note": "정확한 견적과 프로젝트 상담을 위해 연락주세요"
|
|
||||||
},
|
|
||||||
"next_step": "다음 단계",
|
|
||||||
"prev_step": "이전",
|
|
||||||
"calculate": "계산하기"
|
|
||||||
},",
|
|
||||||
"services": "서비스",
|
|
||||||
"portfolio": "포트폴리오",
|
|
||||||
"contact": "연락처",
|
|
||||||
"calculator": "견적계산기",
|
|
||||||
"admin": "관리자"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "혁신적인 웹 개발, 모바일 앱, UI/UX 디자인으로 비즈니스의 디지털 전환을 이끌어갑니다",
|
|
||||||
"cta_primary": "프로젝트 시작하기",
|
|
||||||
"cta_secondary": "포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "최신 기술과 창의적인 아이디어로 완성하는 디지털 솔루션",
|
|
||||||
"web_development": {
|
|
||||||
"title": "웹 개발",
|
|
||||||
"description": "현대적이고 반응형 웹사이트 및 웹 애플리케이션 개발",
|
|
||||||
"price": "₩500,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "모바일 앱",
|
|
||||||
"description": "iOS와 Android를 위한 네이티브 및 크로스플랫폼 앱",
|
|
||||||
"price": "₩800,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX 디자인",
|
|
||||||
"description": "사용자 중심의 직관적이고 아름다운 인터페이스 디자인",
|
|
||||||
"price": "₩300,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "디지털 마케팅",
|
|
||||||
"description": "SEO, 소셜미디어, 온라인 광고를 통한 디지털 마케팅",
|
|
||||||
"price": "₩200,000~"
|
|
||||||
},
|
|
||||||
"view_all": "모든 서비스 보기"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "고객의 성공을 위해 완성한 프로젝트들을 확인해보세요",
|
|
||||||
"view_details": "자세히 보기",
|
|
||||||
"view_all": "전체 포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"description": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"cta": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
|
||||||
"ready_description": "아이디어를 현실로 만들어보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
|
||||||
"phone_consultation": "전화 상담",
|
|
||||||
"email_inquiry": "이메일 문의",
|
|
||||||
"telegram_chat": "텔레그램 채팅",
|
|
||||||
"instant_response": "즉시 답변 가능",
|
|
||||||
"free_consultation": "무료 상담 신청",
|
|
||||||
"form": {
|
|
||||||
"name": "이름",
|
|
||||||
"email": "이메일",
|
|
||||||
"phone": "연락처",
|
|
||||||
"service_interest": "관심 서비스",
|
|
||||||
"service_options": {
|
|
||||||
"select": "관심 서비스 선택",
|
|
||||||
"web_development": "웹 개발",
|
|
||||||
"mobile_app": "모바일 앱",
|
|
||||||
"ui_ux_design": "UI/UX 디자인",
|
|
||||||
"branding": "브랜딩",
|
|
||||||
"consulting": "컨설팅",
|
|
||||||
"other": "기타"
|
|
||||||
},
|
|
||||||
"message": "프로젝트에 대해 간단히 설명해주세요",
|
|
||||||
"submit": "상담 신청하기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "혁신적인 기술로 고객의 성공을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"overview": {
|
|
||||||
"title": "혁신과 창의로 만드는 미래",
|
|
||||||
"description_1": "SmartSolTech는 2020년 설립된 디지털 솔루션 전문 기업으로, 웹 개발, 모바일 앱, UI/UX 디자인 분야에서 혁신적인 기술과 창의적인 아이디어를 바탕으로 고객의 비즈니스 성공을 지원합니다.",
|
|
||||||
"description_2": "우리는 단순히 기술을 제공하는 것이 아니라, 고객의 목표를 이해하고 그에 맞는 최적의 솔루션을 제안하여 함께 성장하는 파트너가 되고자 합니다.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "완료 프로젝트",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "만족한 고객",
|
|
||||||
"experience": "4년",
|
|
||||||
"experience_label": "업계 경험"
|
|
||||||
},
|
|
||||||
"mission": "우리의 미션",
|
|
||||||
"mission_text": "기술을 통해 모든 비즈니스가 디지털 시대에서 성공할 수 있도록 돕는 것",
|
|
||||||
"vision": "우리의 비전",
|
|
||||||
"vision_text": "한국을 대표하는 글로벌 디지털 솔루션 기업으로 성장하여 전 세계 고객들의 디지털 혁신을 주도하는 것"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "SmartSolTech가 추구하는 핵심 가치들",
|
|
||||||
"innovation": {
|
|
||||||
"title": "혁신 (Innovation)",
|
|
||||||
"description": "끊임없는 연구개발과 최신 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "협력 (Collaboration)",
|
|
||||||
"description": "고객과의 긴밀한 소통과 협력을 통해 최상의 결과를 만들어냅니다."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "품질 (Quality)",
|
|
||||||
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 완성도 높은 제품을 제공합니다."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "성장 (Growth)",
|
|
||||||
"description": "고객과 함께 성장하며, 지속적인 학습과 발전을 추구합니다."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "전문성과 열정을 갖춘 SmartSolTech 팀을 소개합니다"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "최신 기술과 검증된 도구들로 최고의 솔루션을 제공합니다",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "함께 성공하는 파트너가 되어보세요",
|
|
||||||
"description": "SmartSolTech와 함께 여러분의 비즈니스를 다음 단계로 발전시켜보세요",
|
|
||||||
"partnership": "파트너십 문의",
|
|
||||||
"portfolio": "포트폴리오 보기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "혁신을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"quick_links": "빠른 링크",
|
|
||||||
"services": "서비스",
|
|
||||||
"contact_info": "연락처 정보",
|
|
||||||
"follow_us": "팔로우하기",
|
|
||||||
"rights": "모든 권리 보유."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "라이트 테마",
|
|
||||||
"dark": "다크 테마",
|
|
||||||
"toggle": "테마 전환"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "로딩 중...",
|
|
||||||
"error": "오류가 발생했습니다",
|
|
||||||
"success": "성공",
|
|
||||||
"view_more": "더 보기",
|
|
||||||
"back": "뒤로",
|
|
||||||
"next": "다음",
|
|
||||||
"previous": "이전"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,230 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "calculator": {
|
|
||||||
"title": "프로젝트 견적 계산기",
|
|
||||||
"subtitle": "원하는 서비스와 요구사항을 선택하면 실시간으로 정확한 견적을 계산해드립니다",
|
|
||||||
"meta": {
|
|
||||||
"title": "프로젝트 견적 계산기",
|
|
||||||
"description": "웹 개발, 모바일 앱, 디자인 프로젝트 비용을 실시간으로 계산해보세요"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"subtitle": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"button": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "1단계: 서비스 선택",
|
|
||||||
"subtitle": "필요한 서비스를 선택해주세요 (복수 선택 가능)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "2단계: 프로젝트 세부사항",
|
|
||||||
"subtitle": "프로젝트의 복잡도와 일정을 선택해주세요"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "프로젝트 복잡도",
|
|
||||||
"simple": "단순",
|
|
||||||
"simple_desc": "기본 기능, 표준 디자인",
|
|
||||||
"medium": "보통",
|
|
||||||
"medium_desc": "추가 기능, 커스텀 디자인",
|
|
||||||
"complex": "복잡",
|
|
||||||
"complex_desc": "고급 기능, 복합 통합"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "개발 일정",
|
|
||||||
"standard": "표준",
|
|
||||||
"standard_desc": "일반적인 개발 기간",
|
|
||||||
"rush": "급한",
|
|
||||||
"rush_desc": "빠른 개발 (+50%)",
|
|
||||||
"extended": "여유",
|
|
||||||
"extended_desc": "넉넉한 개발 기간 (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "견적 결과",
|
|
||||||
"subtitle": "프로젝트 예상 견적입니다",
|
|
||||||
"estimated_price": "예상 견적",
|
|
||||||
"price_note": "* 최종 견적은 프로젝트 세부사항에 따라 달라질 수 있습니다",
|
|
||||||
"summary": "프로젝트 요약",
|
|
||||||
"selected_services": "선택한 서비스",
|
|
||||||
"complexity": "복잡도",
|
|
||||||
"timeline": "일정",
|
|
||||||
"get_quote": "정확한 견적 받기",
|
|
||||||
"recalculate": "다시 계산",
|
|
||||||
"contact_note": "정확한 견적과 프로젝트 상담을 위해 연락주세요"
|
|
||||||
},
|
|
||||||
"next_step": "다음 단계",
|
|
||||||
"prev_step": "이전",
|
|
||||||
"calculate": "계산하기"
|
|
||||||
},
|
|
||||||
"nav": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "회사소개",
|
|
||||||
"services": "서비스",
|
|
||||||
"portfolio": "포트폴리오",
|
|
||||||
"contact": "연락처",
|
|
||||||
"calculator": "견적계산기",
|
|
||||||
"admin": "관리자"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "혁신적인 웹 개발, 모바일 앱, UI/UX 디자인으로 비즈니스의 디지털 전환을 이끌어갑니다",
|
|
||||||
"cta_primary": "프로젝트 시작하기",
|
|
||||||
"cta_secondary": "포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "최신 기술과 창의적인 아이디어로 완성하는 디지털 솔루션",
|
|
||||||
"web_development": {
|
|
||||||
"title": "웹 개발",
|
|
||||||
"description": "현대적이고 반응형 웹사이트 및 웹 애플리케이션 개발",
|
|
||||||
"price": "₩500,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "모바일 앱",
|
|
||||||
"description": "iOS와 Android를 위한 네이티브 및 크로스플랫폼 앱",
|
|
||||||
"price": "₩800,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX 디자인",
|
|
||||||
"description": "사용자 중심의 직관적이고 아름다운 인터페이스 디자인",
|
|
||||||
"price": "₩300,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "디지털 마케팅",
|
|
||||||
"description": "SEO, 소셜미디어, 온라인 광고를 통한 디지털 마케팅",
|
|
||||||
"price": "₩200,000~"
|
|
||||||
},
|
|
||||||
"view_all": "모든 서비스 보기"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "고객의 성공을 위해 완성한 프로젝트들을 확인해보세요",
|
|
||||||
"view_details": "자세히 보기",
|
|
||||||
"view_all": "전체 포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"description": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"cta": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
|
||||||
"ready_description": "아이디어를 현실로 만들어보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
|
||||||
"phone_consultation": "전화 상담",
|
|
||||||
"email_inquiry": "이메일 문의",
|
|
||||||
"telegram_chat": "텔레그램 채팅",
|
|
||||||
"instant_response": "즉시 답변 가능",
|
|
||||||
"free_consultation": "무료 상담 신청",
|
|
||||||
"form": {
|
|
||||||
"name": "이름",
|
|
||||||
"email": "이메일",
|
|
||||||
"phone": "연락처",
|
|
||||||
"service_interest": "관심 서비스",
|
|
||||||
"service_options": {
|
|
||||||
"select": "관심 서비스 선택",
|
|
||||||
"web_development": "웹 개발",
|
|
||||||
"mobile_app": "모바일 앱",
|
|
||||||
"ui_ux_design": "UI/UX 디자인",
|
|
||||||
"branding": "브랜딩",
|
|
||||||
"consulting": "컨설팅",
|
|
||||||
"other": "기타"
|
|
||||||
},
|
|
||||||
"message": "프로젝트에 대해 간단히 설명해주세요",
|
|
||||||
"submit": "상담 신청하기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "혁신적인 기술로 고객의 성공을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"overview": {
|
|
||||||
"title": "혁신과 창의로 만드는 미래",
|
|
||||||
"description_1": "SmartSolTech는 2020년 설립된 디지털 솔루션 전문 기업으로, 웹 개발, 모바일 앱, UI/UX 디자인 분야에서 혁신적인 기술과 창의적인 아이디어를 바탕으로 고객의 비즈니스 성공을 지원합니다.",
|
|
||||||
"description_2": "우리는 단순히 기술을 제공하는 것이 아니라, 고객의 목표를 이해하고 그에 맞는 최적의 솔루션을 제안하여 함께 성장하는 파트너가 되고자 합니다.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "완료 프로젝트",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "만족한 고객",
|
|
||||||
"experience": "4년",
|
|
||||||
"experience_label": "업계 경험"
|
|
||||||
},
|
|
||||||
"mission": "우리의 미션",
|
|
||||||
"mission_text": "기술을 통해 모든 비즈니스가 디지털 시대에서 성공할 수 있도록 돕는 것",
|
|
||||||
"vision": "우리의 비전",
|
|
||||||
"vision_text": "한국을 대표하는 글로벌 디지털 솔루션 기업으로 성장하여 전 세계 고객들의 디지털 혁신을 주도하는 것"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "SmartSolTech가 추구하는 핵심 가치들",
|
|
||||||
"innovation": {
|
|
||||||
"title": "혁신 (Innovation)",
|
|
||||||
"description": "끊임없는 연구개발과 최신 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "협력 (Collaboration)",
|
|
||||||
"description": "고객과의 긴밀한 소통과 협력을 통해 최상의 결과를 만들어냅니다."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "품질 (Quality)",
|
|
||||||
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 완성도 높은 제품을 제공합니다."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "성장 (Growth)",
|
|
||||||
"description": "고객과 함께 성장하며, 지속적인 학습과 발전을 추구합니다."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "전문성과 열정을 갖춘 SmartSolTech 팀을 소개합니다"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "최신 기술과 검증된 도구들로 최고의 솔루션을 제공합니다",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "함께 성공하는 파트너가 되어보세요",
|
|
||||||
"description": "SmartSolTech와 함께 여러분의 비즈니스를 다음 단계로 발전시켜보세요",
|
|
||||||
"partnership": "파트너십 문의",
|
|
||||||
"portfolio": "포트폴리오 보기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "혁신을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"quick_links": "빠른 링크",
|
|
||||||
"services": "서비스",
|
|
||||||
"contact_info": "연락처 정보",
|
|
||||||
"follow_us": "팔로우하기",
|
|
||||||
"rights": "모든 권리 보유."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "라이트 테마",
|
|
||||||
"dark": "다크 테마",
|
|
||||||
"toggle": "테마 전환"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "로딩 중...",
|
|
||||||
"error": "오류가 발생했습니다",
|
|
||||||
"success": "성공",
|
|
||||||
"view_more": "더 보기",
|
|
||||||
"back": "뒤로",
|
|
||||||
"next": "다음",
|
|
||||||
"previous": "이전"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,230 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "calculator": {
|
|
||||||
"title": "프로젝트 견적 계산기",
|
|
||||||
"subtitle": "원하는 서비스와 요구사항을 선택하면 실시간으로 정확한 견적을 계산해드립니다",
|
|
||||||
"meta": {
|
|
||||||
"title": "프로젝트 견적 계산기",
|
|
||||||
"description": "웹 개발, 모바일 앱, 디자인 프로젝트 비용을 실시간으로 계산해보세요"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"subtitle": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"button": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "1단계: 서비스 선택",
|
|
||||||
"subtitle": "필요한 서비스를 선택해주세요 (복수 선택 가능)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "2단계: 프로젝트 세부사항",
|
|
||||||
"subtitle": "프로젝트의 복잡도와 일정을 선택해주세요"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "프로젝트 복잡도",
|
|
||||||
"simple": "단순",
|
|
||||||
"simple_desc": "기본 기능, 표준 디자인",
|
|
||||||
"medium": "보통",
|
|
||||||
"medium_desc": "추가 기능, 커스텀 디자인",
|
|
||||||
"complex": "복잡",
|
|
||||||
"complex_desc": "고급 기능, 복합 통합"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "개발 일정",
|
|
||||||
"standard": "표준",
|
|
||||||
"standard_desc": "일반적인 개발 기간",
|
|
||||||
"rush": "급한",
|
|
||||||
"rush_desc": "빠른 개발 (+50%)",
|
|
||||||
"extended": "여유",
|
|
||||||
"extended_desc": "넉넉한 개발 기간 (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "견적 결과",
|
|
||||||
"subtitle": "프로젝트 예상 견적입니다",
|
|
||||||
"estimated_price": "예상 견적",
|
|
||||||
"price_note": "* 최종 견적은 프로젝트 세부사항에 따라 달라질 수 있습니다",
|
|
||||||
"summary": "프로젝트 요약",
|
|
||||||
"selected_services": "선택한 서비스",
|
|
||||||
"complexity": "복잡도",
|
|
||||||
"timeline": "일정",
|
|
||||||
"get_quote": "정확한 견적 받기",
|
|
||||||
"recalculate": "다시 계산",
|
|
||||||
"contact_note": "정확한 견적과 프로젝트 상담을 위해 연락주세요"
|
|
||||||
},
|
|
||||||
"next_step": "다음 단계",
|
|
||||||
"prev_step": "이전",
|
|
||||||
"calculate": "계산하기"
|
|
||||||
},
|
|
||||||
"nav": {
|
|
||||||
"home": "홈",
|
|
||||||
"about": "회사소개",
|
|
||||||
"services": "서비스",
|
|
||||||
"portfolio": "포트폴리오",
|
|
||||||
"contact": "연락처",
|
|
||||||
"calculator": "견적계산기",
|
|
||||||
"admin": "관리자"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Smart Technology",
|
|
||||||
"subtitle": "Solutions",
|
|
||||||
"description": "혁신적인 웹 개발, 모바일 앱, UI/UX 디자인으로 비즈니스의 디지털 전환을 이끌어갑니다",
|
|
||||||
"cta_primary": "프로젝트 시작하기",
|
|
||||||
"cta_secondary": "포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Services",
|
|
||||||
"description": "최신 기술과 창의적인 아이디어로 완성하는 디지털 솔루션",
|
|
||||||
"web_development": {
|
|
||||||
"title": "웹 개발",
|
|
||||||
"description": "현대적이고 반응형 웹사이트 및 웹 애플리케이션 개발",
|
|
||||||
"price": "₩500,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "모바일 앱",
|
|
||||||
"description": "iOS와 Android를 위한 네이티브 및 크로스플랫폼 앱",
|
|
||||||
"price": "₩800,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX 디자인",
|
|
||||||
"description": "사용자 중심의 직관적이고 아름다운 인터페이스 디자인",
|
|
||||||
"price": "₩300,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "디지털 마케팅",
|
|
||||||
"description": "SEO, 소셜미디어, 온라인 광고를 통한 디지털 마케팅",
|
|
||||||
"price": "₩200,000~"
|
|
||||||
},
|
|
||||||
"view_all": "모든 서비스 보기"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Recent",
|
|
||||||
"title_highlight": "Projects",
|
|
||||||
"description": "고객의 성공을 위해 완성한 프로젝트들을 확인해보세요",
|
|
||||||
"view_details": "자세히 보기",
|
|
||||||
"view_all": "전체 포트폴리오 보기"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "프로젝트 견적을 확인해보세요",
|
|
||||||
"description": "원하는 서비스와 요구사항을 선택하면 실시간으로 견적을 계산해드립니다",
|
|
||||||
"cta": "견적 계산기 사용하기"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
|
||||||
"ready_description": "아이디어를 현실로 만들어보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
|
||||||
"phone_consultation": "전화 상담",
|
|
||||||
"email_inquiry": "이메일 문의",
|
|
||||||
"telegram_chat": "텔레그램 채팅",
|
|
||||||
"instant_response": "즉시 답변 가능",
|
|
||||||
"free_consultation": "무료 상담 신청",
|
|
||||||
"form": {
|
|
||||||
"name": "이름",
|
|
||||||
"email": "이메일",
|
|
||||||
"phone": "연락처",
|
|
||||||
"service_interest": "관심 서비스",
|
|
||||||
"service_options": {
|
|
||||||
"select": "관심 서비스 선택",
|
|
||||||
"web_development": "웹 개발",
|
|
||||||
"mobile_app": "모바일 앱",
|
|
||||||
"ui_ux_design": "UI/UX 디자인",
|
|
||||||
"branding": "브랜딩",
|
|
||||||
"consulting": "컨설팅",
|
|
||||||
"other": "기타"
|
|
||||||
},
|
|
||||||
"message": "프로젝트에 대해 간단히 설명해주세요",
|
|
||||||
"submit": "상담 신청하기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "About",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "혁신적인 기술로 고객의 성공을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"overview": {
|
|
||||||
"title": "혁신과 창의로 만드는 미래",
|
|
||||||
"description_1": "SmartSolTech는 2020년 설립된 디지털 솔루션 전문 기업으로, 웹 개발, 모바일 앱, UI/UX 디자인 분야에서 혁신적인 기술과 창의적인 아이디어를 바탕으로 고객의 비즈니스 성공을 지원합니다.",
|
|
||||||
"description_2": "우리는 단순히 기술을 제공하는 것이 아니라, 고객의 목표를 이해하고 그에 맞는 최적의 솔루션을 제안하여 함께 성장하는 파트너가 되고자 합니다.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "완료 프로젝트",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "만족한 고객",
|
|
||||||
"experience": "4년",
|
|
||||||
"experience_label": "업계 경험"
|
|
||||||
},
|
|
||||||
"mission": "우리의 미션",
|
|
||||||
"mission_text": "기술을 통해 모든 비즈니스가 디지털 시대에서 성공할 수 있도록 돕는 것",
|
|
||||||
"vision": "우리의 비전",
|
|
||||||
"vision_text": "한국을 대표하는 글로벌 디지털 솔루션 기업으로 성장하여 전 세계 고객들의 디지털 혁신을 주도하는 것"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Core",
|
|
||||||
"title_highlight": "Values",
|
|
||||||
"description": "SmartSolTech가 추구하는 핵심 가치들",
|
|
||||||
"innovation": {
|
|
||||||
"title": "혁신 (Innovation)",
|
|
||||||
"description": "끊임없는 연구개발과 최신 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "협력 (Collaboration)",
|
|
||||||
"description": "고객과의 긴밀한 소통과 협력을 통해 최상의 결과를 만들어냅니다."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "품질 (Quality)",
|
|
||||||
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 완성도 높은 제품을 제공합니다."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "성장 (Growth)",
|
|
||||||
"description": "고객과 함께 성장하며, 지속적인 학습과 발전을 추구합니다."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Our",
|
|
||||||
"title_highlight": "Team",
|
|
||||||
"description": "전문성과 열정을 갖춘 SmartSolTech 팀을 소개합니다"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Technology",
|
|
||||||
"title_highlight": "Stack",
|
|
||||||
"description": "최신 기술과 검증된 도구들로 최고의 솔루션을 제공합니다",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Mobile"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "함께 성공하는 파트너가 되어보세요",
|
|
||||||
"description": "SmartSolTech와 함께 여러분의 비즈니스를 다음 단계로 발전시켜보세요",
|
|
||||||
"partnership": "파트너십 문의",
|
|
||||||
"portfolio": "포트폴리오 보기"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "혁신을 이끌어가는 디지털 솔루션 전문 기업",
|
|
||||||
"quick_links": "빠른 링크",
|
|
||||||
"services": "서비스",
|
|
||||||
"contact_info": "연락처 정보",
|
|
||||||
"follow_us": "팔로우하기",
|
|
||||||
"rights": "모든 권리 보유."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "라이트 테마",
|
|
||||||
"dark": "다크 테마",
|
|
||||||
"toggle": "테마 전환"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "로딩 중...",
|
|
||||||
"error": "오류가 발생했습니다",
|
|
||||||
"success": "성공",
|
|
||||||
"view_more": "더 보기",
|
|
||||||
"back": "뒤로",
|
|
||||||
"next": "다음",
|
|
||||||
"previous": "이전"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,196 +0,0 @@
|
|||||||
{
|
|
||||||
"undefined - SmartSolTech": "undefined - SmartSolTech",
|
|
||||||
"meta": {
|
|
||||||
"description": "meta.description",
|
|
||||||
"keywords": "meta.keywords",
|
|
||||||
"title": "meta.title"
|
|
||||||
},
|
|
||||||
"navigation": {
|
|
||||||
"home": "navigation.home",
|
|
||||||
"about": "navigation.about",
|
|
||||||
"services": "navigation.services",
|
|
||||||
"portfolio": "navigation.portfolio",
|
|
||||||
"calculator": "navigation.calculator",
|
|
||||||
"contact": "navigation.contact",
|
|
||||||
"home - SmartSolTech": "navigation.home - SmartSolTech"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"ko": "language.ko",
|
|
||||||
"korean": "language.korean",
|
|
||||||
"english": "language.english",
|
|
||||||
"russian": "language.russian",
|
|
||||||
"kazakh": "language.kazakh"
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"toggle": "theme.toggle"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"cta_primary": "hero.cta_primary",
|
|
||||||
"title": {
|
|
||||||
"smart": "hero.title.smart",
|
|
||||||
"solutions": "hero.title.solutions"
|
|
||||||
},
|
|
||||||
"subtitle": "hero.subtitle",
|
|
||||||
"cta": {
|
|
||||||
"start": "hero.cta.start",
|
|
||||||
"portfolio": "hero.cta.portfolio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": {
|
|
||||||
"our": "services.title.our",
|
|
||||||
"services": "services.title.services"
|
|
||||||
},
|
|
||||||
"subtitle": "services.subtitle",
|
|
||||||
"web": {
|
|
||||||
"title": "services.web.title",
|
|
||||||
"description": "services.web.description",
|
|
||||||
"price": "services.web.price"
|
|
||||||
},
|
|
||||||
"mobile": {
|
|
||||||
"title": "services.mobile.title",
|
|
||||||
"description": "services.mobile.description",
|
|
||||||
"price": "services.mobile.price"
|
|
||||||
},
|
|
||||||
"design": {
|
|
||||||
"title": "services.design.title",
|
|
||||||
"description": "services.design.description",
|
|
||||||
"price": "services.design.price"
|
|
||||||
},
|
|
||||||
"marketing": {
|
|
||||||
"title": "services.marketing.title",
|
|
||||||
"description": "services.marketing.description",
|
|
||||||
"price": "services.marketing.price"
|
|
||||||
},
|
|
||||||
"view_all": "services.view_all"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": {
|
|
||||||
"recent": "portfolio.title.recent",
|
|
||||||
"projects": "portfolio.title.projects"
|
|
||||||
},
|
|
||||||
"subtitle": "portfolio.subtitle",
|
|
||||||
"view_all": "portfolio.view_all"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"view_details": "common.view_details"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"cta": {
|
|
||||||
"title": "calculator.cta.title",
|
|
||||||
"subtitle": "calculator.cta.subtitle",
|
|
||||||
"button": "calculator.cta.button"
|
|
||||||
},
|
|
||||||
"meta": {
|
|
||||||
"title": "calculator.meta.title",
|
|
||||||
"description": "calculator.meta.description"
|
|
||||||
},
|
|
||||||
"title": "calculator.title",
|
|
||||||
"subtitle": "calculator.subtitle",
|
|
||||||
"step1": {
|
|
||||||
"title": "calculator.step1.title",
|
|
||||||
"subtitle": "calculator.step1.subtitle"
|
|
||||||
},
|
|
||||||
"next_step": "calculator.next_step",
|
|
||||||
"step2": {
|
|
||||||
"title": "calculator.step2.title",
|
|
||||||
"subtitle": "calculator.step2.subtitle"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "calculator.complexity.title",
|
|
||||||
"simple": "calculator.complexity.simple",
|
|
||||||
"simple_desc": "calculator.complexity.simple_desc",
|
|
||||||
"medium": "calculator.complexity.medium",
|
|
||||||
"medium_desc": "calculator.complexity.medium_desc",
|
|
||||||
"complex": "calculator.complexity.complex",
|
|
||||||
"complex_desc": "calculator.complexity.complex_desc"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "calculator.timeline.title",
|
|
||||||
"standard": "calculator.timeline.standard",
|
|
||||||
"standard_desc": "calculator.timeline.standard_desc",
|
|
||||||
"rush": "calculator.timeline.rush",
|
|
||||||
"rush_desc": "calculator.timeline.rush_desc",
|
|
||||||
"extended": "calculator.timeline.extended",
|
|
||||||
"extended_desc": "calculator.timeline.extended_desc"
|
|
||||||
},
|
|
||||||
"prev_step": "calculator.prev_step",
|
|
||||||
"calculate": "calculator.calculate",
|
|
||||||
"result": {
|
|
||||||
"title": "calculator.result.title",
|
|
||||||
"subtitle": "calculator.result.subtitle",
|
|
||||||
"estimated_price": "calculator.result.estimated_price",
|
|
||||||
"price_note": "calculator.result.price_note",
|
|
||||||
"summary": "calculator.result.summary",
|
|
||||||
"get_quote": "calculator.result.get_quote",
|
|
||||||
"recalculate": "calculator.result.recalculate",
|
|
||||||
"contact_note": "calculator.result.contact_note",
|
|
||||||
"selected_services": "선택된 서비스",
|
|
||||||
"complexity": "복잡도",
|
|
||||||
"timeline": "개발 기간"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"cta": {
|
|
||||||
"ready": "contact.cta.ready",
|
|
||||||
"start": "contact.cta.start",
|
|
||||||
"question": "contact.cta.question",
|
|
||||||
"subtitle": "contact.cta.subtitle"
|
|
||||||
},
|
|
||||||
"phone": {
|
|
||||||
"title": "contact.phone.title",
|
|
||||||
"number": "contact.phone.number"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"title": "contact.email.title",
|
|
||||||
"address": "contact.email.address"
|
|
||||||
},
|
|
||||||
"telegram": {
|
|
||||||
"title": "contact.telegram.title",
|
|
||||||
"subtitle": "contact.telegram.subtitle"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": "contact.form.title",
|
|
||||||
"name": "contact.form.name",
|
|
||||||
"email": "contact.form.email",
|
|
||||||
"phone": "contact.form.phone",
|
|
||||||
"service": {
|
|
||||||
"select": "contact.form.service.select",
|
|
||||||
"web": "contact.form.service.web",
|
|
||||||
"mobile": "contact.form.service.mobile",
|
|
||||||
"design": "contact.form.service.design",
|
|
||||||
"branding": "contact.form.service.branding",
|
|
||||||
"consulting": "contact.form.service.consulting",
|
|
||||||
"other": "contact.form.service.other"
|
|
||||||
},
|
|
||||||
"message": "contact.form.message",
|
|
||||||
"submit": "contact.form.submit",
|
|
||||||
"success": "contact.form.success",
|
|
||||||
"error": "contact.form.error"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": {
|
|
||||||
"description": "footer.company.description"
|
|
||||||
},
|
|
||||||
"links": {
|
|
||||||
"title": "footer.links.title"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"title": "footer.contact.title",
|
|
||||||
"email": "footer.contact.email",
|
|
||||||
"phone": "footer.contact.phone",
|
|
||||||
"address": "footer.contact.address"
|
|
||||||
},
|
|
||||||
"copyright": "footer.copyright",
|
|
||||||
"privacy": "footer.privacy",
|
|
||||||
"terms": "footer.terms"
|
|
||||||
},
|
|
||||||
"nav": {
|
|
||||||
"home": "nav.home",
|
|
||||||
"about": "nav.about",
|
|
||||||
"services": "nav.services",
|
|
||||||
"portfolio": "nav.portfolio",
|
|
||||||
"calculator": "nav.calculator"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,196 +0,0 @@
|
|||||||
{
|
|
||||||
"undefined - SmartSolTech": "undefined - SmartSolTech",
|
|
||||||
"meta": {
|
|
||||||
"description": "meta.description",
|
|
||||||
"keywords": "meta.keywords",
|
|
||||||
"title": "meta.title"
|
|
||||||
},
|
|
||||||
"navigation": {
|
|
||||||
"home": "navigation.home",
|
|
||||||
"about": "navigation.about",
|
|
||||||
"services": "navigation.services",
|
|
||||||
"portfolio": "navigation.portfolio",
|
|
||||||
"calculator": "navigation.calculator",
|
|
||||||
"contact": "navigation.contact",
|
|
||||||
"home - SmartSolTech": "navigation.home - SmartSolTech"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"ko": "language.ko",
|
|
||||||
"korean": "language.korean",
|
|
||||||
"english": "language.english",
|
|
||||||
"russian": "language.russian",
|
|
||||||
"kazakh": "language.kazakh"
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"toggle": "theme.toggle"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"cta_primary": "hero.cta_primary",
|
|
||||||
"title": {
|
|
||||||
"smart": "hero.title.smart",
|
|
||||||
"solutions": "hero.title.solutions"
|
|
||||||
},
|
|
||||||
"subtitle": "hero.subtitle",
|
|
||||||
"cta": {
|
|
||||||
"start": "hero.cta.start",
|
|
||||||
"portfolio": "hero.cta.portfolio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": {
|
|
||||||
"our": "services.title.our",
|
|
||||||
"services": "services.title.services"
|
|
||||||
},
|
|
||||||
"subtitle": "services.subtitle",
|
|
||||||
"web": {
|
|
||||||
"title": "services.web.title",
|
|
||||||
"description": "services.web.description",
|
|
||||||
"price": "services.web.price"
|
|
||||||
},
|
|
||||||
"mobile": {
|
|
||||||
"title": "services.mobile.title",
|
|
||||||
"description": "services.mobile.description",
|
|
||||||
"price": "services.mobile.price"
|
|
||||||
},
|
|
||||||
"design": {
|
|
||||||
"title": "services.design.title",
|
|
||||||
"description": "services.design.description",
|
|
||||||
"price": "services.design.price"
|
|
||||||
},
|
|
||||||
"marketing": {
|
|
||||||
"title": "services.marketing.title",
|
|
||||||
"description": "services.marketing.description",
|
|
||||||
"price": "services.marketing.price"
|
|
||||||
},
|
|
||||||
"view_all": "services.view_all"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": {
|
|
||||||
"recent": "portfolio.title.recent",
|
|
||||||
"projects": "portfolio.title.projects"
|
|
||||||
},
|
|
||||||
"subtitle": "portfolio.subtitle",
|
|
||||||
"view_all": "portfolio.view_all"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"view_details": "common.view_details"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"cta": {
|
|
||||||
"title": "calculator.cta.title",
|
|
||||||
"subtitle": "calculator.cta.subtitle",
|
|
||||||
"button": "calculator.cta.button"
|
|
||||||
},
|
|
||||||
"meta": {
|
|
||||||
"title": "calculator.meta.title",
|
|
||||||
"description": "calculator.meta.description"
|
|
||||||
},
|
|
||||||
"title": "calculator.title",
|
|
||||||
"subtitle": "calculator.subtitle",
|
|
||||||
"step1": {
|
|
||||||
"title": "calculator.step1.title",
|
|
||||||
"subtitle": "calculator.step1.subtitle"
|
|
||||||
},
|
|
||||||
"next_step": "calculator.next_step",
|
|
||||||
"step2": {
|
|
||||||
"title": "calculator.step2.title",
|
|
||||||
"subtitle": "calculator.step2.subtitle"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "calculator.complexity.title",
|
|
||||||
"simple": "calculator.complexity.simple",
|
|
||||||
"simple_desc": "calculator.complexity.simple_desc",
|
|
||||||
"medium": "calculator.complexity.medium",
|
|
||||||
"medium_desc": "calculator.complexity.medium_desc",
|
|
||||||
"complex": "calculator.complexity.complex",
|
|
||||||
"complex_desc": "calculator.complexity.complex_desc"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "calculator.timeline.title",
|
|
||||||
"standard": "calculator.timeline.standard",
|
|
||||||
"standard_desc": "calculator.timeline.standard_desc",
|
|
||||||
"rush": "calculator.timeline.rush",
|
|
||||||
"rush_desc": "calculator.timeline.rush_desc",
|
|
||||||
"extended": "calculator.timeline.extended",
|
|
||||||
"extended_desc": "calculator.timeline.extended_desc"
|
|
||||||
},
|
|
||||||
"prev_step": "calculator.prev_step",
|
|
||||||
"calculate": "calculator.calculate",
|
|
||||||
"result": {
|
|
||||||
"title": "calculator.result.title",
|
|
||||||
"subtitle": "calculator.result.subtitle",
|
|
||||||
"estimated_price": "calculator.result.estimated_price",
|
|
||||||
"price_note": "calculator.result.price_note",
|
|
||||||
"summary": "calculator.result.summary",
|
|
||||||
"get_quote": "calculator.result.get_quote",
|
|
||||||
"recalculate": "calculator.result.recalculate",
|
|
||||||
"contact_note": "calculator.result.contact_note",
|
|
||||||
"selected_services": "선택된 서비스",
|
|
||||||
"complexity": "복잡도",
|
|
||||||
"timeline": "개발 기간"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"cta": {
|
|
||||||
"ready": "contact.cta.ready",
|
|
||||||
"start": "contact.cta.start",
|
|
||||||
"question": "contact.cta.question",
|
|
||||||
"subtitle": "contact.cta.subtitle"
|
|
||||||
},
|
|
||||||
"phone": {
|
|
||||||
"title": "contact.phone.title",
|
|
||||||
"number": "contact.phone.number"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"title": "contact.email.title",
|
|
||||||
"address": "contact.email.address"
|
|
||||||
},
|
|
||||||
"telegram": {
|
|
||||||
"title": "contact.telegram.title",
|
|
||||||
"subtitle": "contact.telegram.subtitle"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": "contact.form.title",
|
|
||||||
"name": "contact.form.name",
|
|
||||||
"email": "contact.form.email",
|
|
||||||
"phone": "contact.form.phone",
|
|
||||||
"service": {
|
|
||||||
"select": "contact.form.service.select",
|
|
||||||
"web": "contact.form.service.web",
|
|
||||||
"mobile": "contact.form.service.mobile",
|
|
||||||
"design": "contact.form.service.design",
|
|
||||||
"branding": "contact.form.service.branding",
|
|
||||||
"consulting": "contact.form.service.consulting",
|
|
||||||
"other": "contact.form.service.other"
|
|
||||||
},
|
|
||||||
"message": "contact.form.message",
|
|
||||||
"submit": "contact.form.submit",
|
|
||||||
"success": "contact.form.success",
|
|
||||||
"error": "contact.form.error"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": {
|
|
||||||
"description": "footer.company.description"
|
|
||||||
},
|
|
||||||
"links": {
|
|
||||||
"title": "footer.links.title"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"title": "footer.contact.title",
|
|
||||||
"email": "footer.contact.email",
|
|
||||||
"phone": "footer.contact.phone",
|
|
||||||
"address": "footer.contact.address"
|
|
||||||
},
|
|
||||||
"copyright": "footer.copyright",
|
|
||||||
"privacy": "footer.privacy",
|
|
||||||
"terms": "footer.terms"
|
|
||||||
},
|
|
||||||
"nav": {
|
|
||||||
"home": "nav.home",
|
|
||||||
"about": "nav.about",
|
|
||||||
"services": "nav.services",
|
|
||||||
"portfolio": "nav.portfolio",
|
|
||||||
"calculator": "nav.calculator"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
424
.history/locales/ko_20251025214817.json
Normal file
424
.history/locales/ko_20251025214817.json
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "홈",
|
||||||
|
"about": "회사소개",
|
||||||
|
"services": "서비스",
|
||||||
|
"portfolio": "포트폴리오",
|
||||||
|
"contact": "연락처",
|
||||||
|
"calculator": "비용계산기",
|
||||||
|
"admin": "관리자"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "스마트",
|
||||||
|
"solutions": "솔루션"
|
||||||
|
},
|
||||||
|
"subtitle": "혁신적인 기술로 비즈니스를 성장시키세요",
|
||||||
|
"description": "비즈니스의 디지털 전환을 이끄는 혁신적인 웹개발, 모바일 앱, UI/UX 디자인",
|
||||||
|
"cta": {
|
||||||
|
"start": "시작하기",
|
||||||
|
"portfolio": "포트폴리오 보기"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "우리의",
|
||||||
|
"services": "서비스"
|
||||||
|
},
|
||||||
|
"subtitle": "아이디어를 현실로 만드는 전문 개발 서비스",
|
||||||
|
"description": "최첨단 기술과 창의적 아이디어로 완성하는 디지털 솔루션",
|
||||||
|
"view_all": "모든 서비스 보기",
|
||||||
|
"web": {
|
||||||
|
"title": "웹 개발",
|
||||||
|
"description": "반응형 웹사이트 및 웹 애플리케이션 개발",
|
||||||
|
"price": "$500부터"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "모바일 앱",
|
||||||
|
"description": "iOS 및 Android 네이티브 앱 개발",
|
||||||
|
"price": "$1,000부터"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX 디자인",
|
||||||
|
"description": "사용자 중심의 인터페이스 및 경험 디자인",
|
||||||
|
"price": "$300부터"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "디지털 마케팅",
|
||||||
|
"description": "SEO, 소셜미디어 마케팅, 광고 관리",
|
||||||
|
"price": "$200부터"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "서비스",
|
||||||
|
"description": "SmartSolTech의 전문 서비스를 확인해보세요. 웹 개발, 모바일 앱, UI/UX 디자인, 디지털 마케팅 및 기타 기술 솔루션.",
|
||||||
|
"keywords": "웹 개발, 모바일 앱, UI/UX 디자인, 디지털 마케팅, 기술 솔루션, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "우리의",
|
||||||
|
"title_highlight": "서비스",
|
||||||
|
"subtitle": "혁신적인 기술로 비즈니스 성장 지원"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "시작 가격",
|
||||||
|
"consultation": "상담",
|
||||||
|
"contact": "연락하기",
|
||||||
|
"calculate_cost": "비용 계산",
|
||||||
|
"popular": "인기",
|
||||||
|
"coming_soon": "서비스 준비중",
|
||||||
|
"coming_soon_desc": "곧 다양한 서비스를 제공할 예정입니다!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "프로젝트 수행 과정",
|
||||||
|
"subtitle": "체계적이고 전문적인 프로세스로 프로젝트를 진행합니다",
|
||||||
|
"step1": {
|
||||||
|
"title": "상담 및 기획",
|
||||||
|
"description": "고객의 요구사항을 정확히 파악하고 최적의 솔루션을 기획합니다"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "디자인 및 설계",
|
||||||
|
"description": "사용자 중심의 직관적인 디자인과 견고한 시스템 아키텍처를 설계합니다"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "개발 및 구현",
|
||||||
|
"description": "최신 기술과 모범 사례를 활용하여 효율적이고 확장 가능한 솔루션을 개발합니다"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "테스트 및 배포",
|
||||||
|
"description": "철저한 테스트를 통해 품질을 보장하고 안정적인 배포를 진행합니다"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "왜 SmartSolTech를 선택해야 할까요?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "최신 기술 활용",
|
||||||
|
"description": "항상 최신 기술 트렌드를 파악하고, 검증된 기술 스택을 활용하여 미래 지향적인 솔루션을 제공합니다."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "전문가 팀",
|
||||||
|
"description": "각 분야의 전문가들로 구성된 팀이 협력하여 최고 품질의 결과물을 보장합니다."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "빠른 대응",
|
||||||
|
"description": "신속한 커뮤니케이션과 효율적인 프로젝트 관리로 정해진 일정 내에 프로젝트를 완료합니다."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "지속적인 지원",
|
||||||
|
"description": "프로젝트 완료 후에도 지속적인 유지보수와 기술 지원을 통해 장기적인 파트너십을 유지합니다."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "품질 보장",
|
||||||
|
"subtitle": "고객 만족을 위한\n최고 품질의 서비스"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "프로젝트를 시작할 준비가 되셨나요?",
|
||||||
|
"subtitle": "무료 상담을 통해 최적의 솔루션을 제안해드리겠습니다",
|
||||||
|
"free_consultation": "무료 상담 신청",
|
||||||
|
"calculate_cost": "비용 계산하기",
|
||||||
|
"view_portfolio": "포트폴리오 보기"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "최근",
|
||||||
|
"projects": "프로젝트"
|
||||||
|
},
|
||||||
|
"subtitle": "성공적으로 완료된 프로젝트들을 확인해보세요",
|
||||||
|
"description": "고객의 성공을 위해 완성한 프로젝트들을 살펴보세요",
|
||||||
|
"view_details": "자세히 보기",
|
||||||
|
"view_all": "모든 포트폴리오 보기",
|
||||||
|
"categories": {
|
||||||
|
"all": "전체",
|
||||||
|
"web": "웹 개발",
|
||||||
|
"mobile": "모바일 앱",
|
||||||
|
"uiux": "UI/UX 디자인"
|
||||||
|
},
|
||||||
|
"project_details": "프로젝트 상세정보",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "이커머스",
|
||||||
|
"title": "이커머스 플랫폼",
|
||||||
|
"description": "직관적인 인터페이스를 가진 현대적인 온라인 커머스 솔루션"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "포트폴리오",
|
||||||
|
"description": "SmartSolTech의 다양한 프로젝트와 성공 사례들을 확인해보세요. 웹 개발, 모바일 앱, UI/UX 디자인 포트폴리오.",
|
||||||
|
"keywords": "포트폴리오, 웹 개발, 모바일 앱, UI/UX 디자인, 프로젝트, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "우리의 포트폴리오",
|
||||||
|
"subtitle": "혁신적인 프로젝트와 창의적인 솔루션들을 만나보세요",
|
||||||
|
"categories": {
|
||||||
|
"all": "전체",
|
||||||
|
"web-development": "웹 개발",
|
||||||
|
"mobile-app": "모바일 앱",
|
||||||
|
"ui-ux-design": "UI/UX 디자인",
|
||||||
|
"branding": "브랜딩",
|
||||||
|
"marketing": "디지털 마케팅"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "자세히 보기",
|
||||||
|
"projectDetails": "프로젝트 상세보기",
|
||||||
|
"loadMore": "더 많은 프로젝트 보기",
|
||||||
|
"contact": "프로젝트 문의하기",
|
||||||
|
"calculate": "비용 계산하기"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "아직 포트폴리오가 없습니다",
|
||||||
|
"subtitle": "곧 멋진 프로젝트들을 공개할 예정입니다!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "다음 프로젝트의 주인공이 되어보세요",
|
||||||
|
"subtitle": "우리와 함께 혁신적인 디지털 솔루션을 만들어보세요"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "추천",
|
||||||
|
"views": "조회수",
|
||||||
|
"likes": "좋아요"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "프로젝트 비용 계산기",
|
||||||
|
"subtitle": "실시간으로 정확한 비용 추정을 받기 위해 원하는 서비스와 요구사항을 선택하세요",
|
||||||
|
"next_step": "다음 단계",
|
||||||
|
"prev_step": "이전 단계",
|
||||||
|
"calculate": "계산하기",
|
||||||
|
"reset": "초기화",
|
||||||
|
"meta": {
|
||||||
|
"title": "프로젝트 비용 계산기",
|
||||||
|
"description": "대화형 계산기로 웹 개발, 모바일 앱 또는 디자인 프로젝트의 비용을 계산하세요"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "프로젝트 견적을 확인해보세요",
|
||||||
|
"subtitle": "실시간 비용 계산을 위해 원하는 서비스와 요구사항을 선택하세요",
|
||||||
|
"button": "비용 계산기 사용하기"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "서비스를 선택하세요",
|
||||||
|
"nav_title": "단계 1: 서비스",
|
||||||
|
"subtitle": "프로젝트에 필요한 서비스를 선택하세요"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "프로젝트 세부사항",
|
||||||
|
"nav_title": "단계 2: 세부사항",
|
||||||
|
"subtitle": "프로젝트의 복잡도와 일정에 대해 알려주세요"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "프로젝트 복잡도",
|
||||||
|
"simple": "간단함",
|
||||||
|
"simple_desc": "기본 기능 및 표준 기능",
|
||||||
|
"medium": "보통",
|
||||||
|
"medium_desc": "맞춤 기능 및 통합",
|
||||||
|
"complex": "복잡함",
|
||||||
|
"complex_desc": "고급 기능 및 복잡한 통합"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "프로젝트 일정",
|
||||||
|
"standard": "표준 (4-8주)",
|
||||||
|
"standard_desc": "일반적인 개발 일정",
|
||||||
|
"rush": "급함 (2-4주)",
|
||||||
|
"rush_desc": "추가 비용으로 신속 배송",
|
||||||
|
"extended": "연장 (8주 이상)",
|
||||||
|
"extended_desc": "비용 최적화와 함께 유연한 일정"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "프로젝트 견적",
|
||||||
|
"subtitle": "예상 프로젝트 비용",
|
||||||
|
"nav_title": "결과",
|
||||||
|
"estimated_price": "예상 가격",
|
||||||
|
"price_note": "이는 대략적인 비용입니다. 최종 가격은 프로젝트 복잡도에 따라 달라질 수 있습니다.",
|
||||||
|
"summary": "프로젝트 요약",
|
||||||
|
"get_quote": "상세 견적 받기",
|
||||||
|
"contact_note": "상세한 상담과 정확한 견적을 위해 저희에게 연락주세요.",
|
||||||
|
"recalculate": "다시 계산하기",
|
||||||
|
"selected_services": "선택된 서비스",
|
||||||
|
"complexity": "복잡도",
|
||||||
|
"timeline": "일정"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "연락하기",
|
||||||
|
"subtitle": "아이디어를 현실로 만들어드리겠습니다"
|
||||||
|
},
|
||||||
|
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
||||||
|
"ready_description": "아이디어를 현실로 바꿔보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
||||||
|
"form": {
|
||||||
|
"title": "프로젝트 문의",
|
||||||
|
"name": "이름",
|
||||||
|
"email": "이메일",
|
||||||
|
"phone": "전화번호",
|
||||||
|
"message": "메시지",
|
||||||
|
"submit": "문의 보내기",
|
||||||
|
"success": "문의가 성공적으로 전송되었습니다",
|
||||||
|
"error": "문의 전송 중 오류가 발생했습니다",
|
||||||
|
"service": {
|
||||||
|
"title": "관심 서비스",
|
||||||
|
"select": "관심 있는 서비스를 선택하세요",
|
||||||
|
"web": "웹 개발",
|
||||||
|
"mobile": "모바일 앱",
|
||||||
|
"design": "UI/UX 디자인",
|
||||||
|
"branding": "브랜딩",
|
||||||
|
"consulting": "컨설팅",
|
||||||
|
"other": "기타"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "연락처 정보"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "전화 문의",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "월-금 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "이메일 문의",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "24시간 내 응답"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "텔레그램",
|
||||||
|
"subtitle": "빠른 응답을 위해"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "사무실 주소",
|
||||||
|
"line1": "서울시 강남구 테헤란로 123",
|
||||||
|
"line2": "대한민국"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "준비되셨나요?",
|
||||||
|
"start": "시작하기",
|
||||||
|
"question": "궁금한 점이 있나요?",
|
||||||
|
"subtitle": "프로젝트에 대한 상담을 제공합니다"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "연락처",
|
||||||
|
"description": "프로젝트 문의나 상담을 위해 언제든지 연락주세요"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "SmartSolTech 소개",
|
||||||
|
"subtitle": "혁신과 기술로 미래를 만들어갑니다"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "회사 정보",
|
||||||
|
"description1": "SmartSolTech는 2020년에 설립된 기술 회사로, 웹 개발, 모바일 앱 개발, UI/UX 디자인 분야의 전문성으로 인정받고 있습니다.",
|
||||||
|
"description2": "고객의 니즈를 정확히 파악하고 최신 기술을 활용한 혁신적인 솔루션을 제공합니다."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "완료된 프로젝트",
|
||||||
|
"experience": "년 경험",
|
||||||
|
"clients": "만족한 고객"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "우리의 미션",
|
||||||
|
"description": "기술을 통해 고객의 비즈니스 성장을 지원하고 디지털 혁신을 선도하는 것이 우리의 미션입니다."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "혁신",
|
||||||
|
"description": "지속적인 R&D와 최첨단 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "품질",
|
||||||
|
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 고품질 제품을 제공합니다."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "파트너십",
|
||||||
|
"description": "고객과의 긴밀한 소통과 협력을 통해 최고의 결과를 만들어냅니다."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "함께 성장해나가겠습니다",
|
||||||
|
"subtitle": "아이디어를 현실로 바꿔보세요",
|
||||||
|
"button": "연락하기"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "회사소개",
|
||||||
|
"description": "SmartSolTech는 혁신적인 기술로 고객의 비즈니스 성장을 지원하는 전문 개발 회사입니다"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "혁신을 선도하는 디지털 솔루션 전문가",
|
||||||
|
"company": {
|
||||||
|
"description": "혁신을 선도하는 디지털 솔루션 전문가"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "빠른 링크"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "연락처",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "서울시 강남구 테헤란로 123"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. 모든 권리 보유.",
|
||||||
|
"privacy": "개인정보처리방침",
|
||||||
|
"terms": "이용약관"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "라이트 테마",
|
||||||
|
"dark": "다크 테마",
|
||||||
|
"toggle": "테마 전환"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "로딩 중...",
|
||||||
|
"error": "오류가 발생했습니다",
|
||||||
|
"success": "성공",
|
||||||
|
"view_more": "더 보기",
|
||||||
|
"back": "뒤로",
|
||||||
|
"next": "다음",
|
||||||
|
"previous": "이전",
|
||||||
|
"view_details": "자세히 보기"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - 혁신적인 웹 개발, 모바일 앱 개발, UI/UX 디자인 서비스",
|
||||||
|
"keywords": "웹 개발, 모바일 앱, UI/UX 디자인, 한국",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "홈",
|
||||||
|
"about": "회사소개",
|
||||||
|
"services": "서비스",
|
||||||
|
"portfolio": "포트폴리오",
|
||||||
|
"calculator": "비용계산기"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "관리자 패널 로그인",
|
||||||
|
"dashboard": "대시보드",
|
||||||
|
"title": "SmartSolTech 관리자"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "혁신을 선도하는 디지털 솔루션 전문가",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "페이지를 찾을 수 없습니다",
|
||||||
|
"error_occurred": "오류가 발생했습니다",
|
||||||
|
"title": "오류 - SmartSolTech",
|
||||||
|
"default_title": "오류가 발생했습니다",
|
||||||
|
"default_message": "요청을 처리하는 중 문제가 발생했습니다.",
|
||||||
|
"back_home": "홈으로 돌아가기",
|
||||||
|
"go_back": "뒤로 가기",
|
||||||
|
"need_help": "도움이 필요하신가요?",
|
||||||
|
"help_message": "문제가 지속되면 언제든지 저희에게 연락주세요.",
|
||||||
|
"contact_support": "고객지원 연락하기"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "홈페이지",
|
||||||
|
"about": "회사소개",
|
||||||
|
"services": "서비스",
|
||||||
|
"portfolio": "포트폴리오",
|
||||||
|
"contact": "연락처",
|
||||||
|
"calculator": "비용계산기"
|
||||||
|
}
|
||||||
|
}
|
||||||
424
.history/locales/ko_20251025214837.json
Normal file
424
.history/locales/ko_20251025214837.json
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "홈",
|
||||||
|
"about": "회사소개",
|
||||||
|
"services": "서비스",
|
||||||
|
"portfolio": "포트폴리오",
|
||||||
|
"contact": "연락처",
|
||||||
|
"calculator": "비용계산기",
|
||||||
|
"admin": "관리자"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "스마트",
|
||||||
|
"solutions": "솔루션"
|
||||||
|
},
|
||||||
|
"subtitle": "혁신적인 기술로 비즈니스를 성장시키세요",
|
||||||
|
"description": "비즈니스의 디지털 전환을 이끄는 혁신적인 웹개발, 모바일 앱, UI/UX 디자인",
|
||||||
|
"cta": {
|
||||||
|
"start": "시작하기",
|
||||||
|
"portfolio": "포트폴리오 보기"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "우리의",
|
||||||
|
"services": "서비스"
|
||||||
|
},
|
||||||
|
"subtitle": "아이디어를 현실로 만드는 전문 개발 서비스",
|
||||||
|
"description": "최첨단 기술과 창의적 아이디어로 완성하는 디지털 솔루션",
|
||||||
|
"view_all": "모든 서비스 보기",
|
||||||
|
"web": {
|
||||||
|
"title": "웹 개발",
|
||||||
|
"description": "반응형 웹사이트 및 웹 애플리케이션 개발",
|
||||||
|
"price": "$500부터"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "모바일 앱",
|
||||||
|
"description": "iOS 및 Android 네이티브 앱 개발",
|
||||||
|
"price": "$1,000부터"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX 디자인",
|
||||||
|
"description": "사용자 중심의 인터페이스 및 경험 디자인",
|
||||||
|
"price": "$300부터"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "디지털 마케팅",
|
||||||
|
"description": "SEO, 소셜미디어 마케팅, 광고 관리",
|
||||||
|
"price": "$200부터"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "서비스",
|
||||||
|
"description": "SmartSolTech의 전문 서비스를 확인해보세요. 웹 개발, 모바일 앱, UI/UX 디자인, 디지털 마케팅 및 기타 기술 솔루션.",
|
||||||
|
"keywords": "웹 개발, 모바일 앱, UI/UX 디자인, 디지털 마케팅, 기술 솔루션, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "우리의",
|
||||||
|
"title_highlight": "서비스",
|
||||||
|
"subtitle": "혁신적인 기술로 비즈니스 성장 지원"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "시작 가격",
|
||||||
|
"consultation": "상담",
|
||||||
|
"contact": "연락하기",
|
||||||
|
"calculate_cost": "비용 계산",
|
||||||
|
"popular": "인기",
|
||||||
|
"coming_soon": "서비스 준비중",
|
||||||
|
"coming_soon_desc": "곧 다양한 서비스를 제공할 예정입니다!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "프로젝트 수행 과정",
|
||||||
|
"subtitle": "체계적이고 전문적인 프로세스로 프로젝트를 진행합니다",
|
||||||
|
"step1": {
|
||||||
|
"title": "상담 및 기획",
|
||||||
|
"description": "고객의 요구사항을 정확히 파악하고 최적의 솔루션을 기획합니다"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "디자인 및 설계",
|
||||||
|
"description": "사용자 중심의 직관적인 디자인과 견고한 시스템 아키텍처를 설계합니다"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "개발 및 구현",
|
||||||
|
"description": "최신 기술과 모범 사례를 활용하여 효율적이고 확장 가능한 솔루션을 개발합니다"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "테스트 및 배포",
|
||||||
|
"description": "철저한 테스트를 통해 품질을 보장하고 안정적인 배포를 진행합니다"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "왜 SmartSolTech를 선택해야 할까요?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "최신 기술 활용",
|
||||||
|
"description": "항상 최신 기술 트렌드를 파악하고, 검증된 기술 스택을 활용하여 미래 지향적인 솔루션을 제공합니다."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "전문가 팀",
|
||||||
|
"description": "각 분야의 전문가들로 구성된 팀이 협력하여 최고 품질의 결과물을 보장합니다."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "빠른 대응",
|
||||||
|
"description": "신속한 커뮤니케이션과 효율적인 프로젝트 관리로 정해진 일정 내에 프로젝트를 완료합니다."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "지속적인 지원",
|
||||||
|
"description": "프로젝트 완료 후에도 지속적인 유지보수와 기술 지원을 통해 장기적인 파트너십을 유지합니다."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "품질 보장",
|
||||||
|
"subtitle": "고객 만족을 위한\n최고 품질의 서비스"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "프로젝트를 시작할 준비가 되셨나요?",
|
||||||
|
"subtitle": "무료 상담을 통해 최적의 솔루션을 제안해드리겠습니다",
|
||||||
|
"free_consultation": "무료 상담 신청",
|
||||||
|
"calculate_cost": "비용 계산하기",
|
||||||
|
"view_portfolio": "포트폴리오 보기"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "최근",
|
||||||
|
"projects": "프로젝트"
|
||||||
|
},
|
||||||
|
"subtitle": "성공적으로 완료된 프로젝트들을 확인해보세요",
|
||||||
|
"description": "고객의 성공을 위해 완성한 프로젝트들을 살펴보세요",
|
||||||
|
"view_details": "자세히 보기",
|
||||||
|
"view_all": "모든 포트폴리오 보기",
|
||||||
|
"categories": {
|
||||||
|
"all": "전체",
|
||||||
|
"web": "웹 개발",
|
||||||
|
"mobile": "모바일 앱",
|
||||||
|
"uiux": "UI/UX 디자인"
|
||||||
|
},
|
||||||
|
"project_details": "프로젝트 상세정보",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "이커머스",
|
||||||
|
"title": "이커머스 플랫폼",
|
||||||
|
"description": "직관적인 인터페이스를 가진 현대적인 온라인 커머스 솔루션"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "포트폴리오",
|
||||||
|
"description": "SmartSolTech의 다양한 프로젝트와 성공 사례들을 확인해보세요. 웹 개발, 모바일 앱, UI/UX 디자인 포트폴리오.",
|
||||||
|
"keywords": "포트폴리오, 웹 개발, 모바일 앱, UI/UX 디자인, 프로젝트, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "우리의 포트폴리오",
|
||||||
|
"subtitle": "혁신적인 프로젝트와 창의적인 솔루션들을 만나보세요",
|
||||||
|
"categories": {
|
||||||
|
"all": "전체",
|
||||||
|
"web-development": "웹 개발",
|
||||||
|
"mobile-app": "모바일 앱",
|
||||||
|
"ui-ux-design": "UI/UX 디자인",
|
||||||
|
"branding": "브랜딩",
|
||||||
|
"marketing": "디지털 마케팅"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "자세히 보기",
|
||||||
|
"projectDetails": "프로젝트 상세보기",
|
||||||
|
"loadMore": "더 많은 프로젝트 보기",
|
||||||
|
"contact": "프로젝트 문의하기",
|
||||||
|
"calculate": "비용 계산하기"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "아직 포트폴리오가 없습니다",
|
||||||
|
"subtitle": "곧 멋진 프로젝트들을 공개할 예정입니다!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "다음 프로젝트의 주인공이 되어보세요",
|
||||||
|
"subtitle": "우리와 함께 혁신적인 디지털 솔루션을 만들어보세요"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "추천",
|
||||||
|
"views": "조회수",
|
||||||
|
"likes": "좋아요"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "프로젝트 비용 계산기",
|
||||||
|
"subtitle": "실시간으로 정확한 비용 추정을 받기 위해 원하는 서비스와 요구사항을 선택하세요",
|
||||||
|
"next_step": "다음 단계",
|
||||||
|
"prev_step": "이전 단계",
|
||||||
|
"calculate": "계산하기",
|
||||||
|
"reset": "초기화",
|
||||||
|
"meta": {
|
||||||
|
"title": "프로젝트 비용 계산기",
|
||||||
|
"description": "대화형 계산기로 웹 개발, 모바일 앱 또는 디자인 프로젝트의 비용을 계산하세요"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "프로젝트 견적을 확인해보세요",
|
||||||
|
"subtitle": "실시간 비용 계산을 위해 원하는 서비스와 요구사항을 선택하세요",
|
||||||
|
"button": "비용 계산기 사용하기"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "서비스를 선택하세요",
|
||||||
|
"nav_title": "단계 1: 서비스",
|
||||||
|
"subtitle": "프로젝트에 필요한 서비스를 선택하세요"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "프로젝트 세부사항",
|
||||||
|
"nav_title": "단계 2: 세부사항",
|
||||||
|
"subtitle": "프로젝트의 복잡도와 일정에 대해 알려주세요"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "프로젝트 복잡도",
|
||||||
|
"simple": "간단함",
|
||||||
|
"simple_desc": "기본 기능 및 표준 기능",
|
||||||
|
"medium": "보통",
|
||||||
|
"medium_desc": "맞춤 기능 및 통합",
|
||||||
|
"complex": "복잡함",
|
||||||
|
"complex_desc": "고급 기능 및 복잡한 통합"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "프로젝트 일정",
|
||||||
|
"standard": "표준 (4-8주)",
|
||||||
|
"standard_desc": "일반적인 개발 일정",
|
||||||
|
"rush": "급함 (2-4주)",
|
||||||
|
"rush_desc": "추가 비용으로 신속 배송",
|
||||||
|
"extended": "연장 (8주 이상)",
|
||||||
|
"extended_desc": "비용 최적화와 함께 유연한 일정"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "프로젝트 견적",
|
||||||
|
"subtitle": "예상 프로젝트 비용",
|
||||||
|
"nav_title": "결과",
|
||||||
|
"estimated_price": "예상 가격",
|
||||||
|
"price_note": "이는 대략적인 비용입니다. 최종 가격은 프로젝트 복잡도에 따라 달라질 수 있습니다.",
|
||||||
|
"summary": "프로젝트 요약",
|
||||||
|
"get_quote": "상세 견적 받기",
|
||||||
|
"contact_note": "상세한 상담과 정확한 견적을 위해 저희에게 연락주세요.",
|
||||||
|
"recalculate": "다시 계산하기",
|
||||||
|
"selected_services": "선택된 서비스",
|
||||||
|
"complexity": "복잡도",
|
||||||
|
"timeline": "일정"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "연락하기",
|
||||||
|
"subtitle": "아이디어를 현실로 만들어드리겠습니다"
|
||||||
|
},
|
||||||
|
"ready_title": "프로젝트를 시작할 준비가 되셨나요?",
|
||||||
|
"ready_description": "아이디어를 현실로 바꿔보세요. 전문가들이 최고의 솔루션을 제공합니다.",
|
||||||
|
"form": {
|
||||||
|
"title": "프로젝트 문의",
|
||||||
|
"name": "이름",
|
||||||
|
"email": "이메일",
|
||||||
|
"phone": "전화번호",
|
||||||
|
"message": "메시지",
|
||||||
|
"submit": "문의 보내기",
|
||||||
|
"success": "문의가 성공적으로 전송되었습니다",
|
||||||
|
"error": "문의 전송 중 오류가 발생했습니다",
|
||||||
|
"service": {
|
||||||
|
"title": "관심 서비스",
|
||||||
|
"select": "관심 있는 서비스를 선택하세요",
|
||||||
|
"web": "웹 개발",
|
||||||
|
"mobile": "모바일 앱",
|
||||||
|
"design": "UI/UX 디자인",
|
||||||
|
"branding": "브랜딩",
|
||||||
|
"consulting": "컨설팅",
|
||||||
|
"other": "기타"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "연락처 정보"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "전화 문의",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "월-금 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "이메일 문의",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "24시간 내 응답"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "텔레그램",
|
||||||
|
"subtitle": "빠른 응답을 위해"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "사무실 주소",
|
||||||
|
"line1": "서울시 강남구 테헤란로 123",
|
||||||
|
"line2": "대한민국"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "준비되셨나요?",
|
||||||
|
"start": "시작하기",
|
||||||
|
"question": "궁금한 점이 있나요?",
|
||||||
|
"subtitle": "프로젝트에 대한 상담을 제공합니다"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "연락처",
|
||||||
|
"description": "프로젝트 문의나 상담을 위해 언제든지 연락주세요"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "SmartSolTech 소개",
|
||||||
|
"subtitle": "혁신과 기술로 미래를 만들어갑니다"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "회사 정보",
|
||||||
|
"description1": "SmartSolTech는 2020년에 설립된 기술 회사로, 웹 개발, 모바일 앱 개발, UI/UX 디자인 분야의 전문성으로 인정받고 있습니다.",
|
||||||
|
"description2": "고객의 니즈를 정확히 파악하고 최신 기술을 활용한 혁신적인 솔루션을 제공합니다."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "완료된 프로젝트",
|
||||||
|
"experience": "년 경험",
|
||||||
|
"clients": "만족한 고객"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "우리의 미션",
|
||||||
|
"description": "기술을 통해 고객의 비즈니스 성장을 지원하고 디지털 혁신을 선도하는 것이 우리의 미션입니다."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "혁신",
|
||||||
|
"description": "지속적인 R&D와 최첨단 기술 도입으로 혁신적인 솔루션을 제공합니다."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "품질",
|
||||||
|
"description": "높은 품질 기준을 유지하며 고객이 만족할 수 있는 고품질 제품을 제공합니다."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "파트너십",
|
||||||
|
"description": "고객과의 긴밀한 소통과 협력을 통해 최고의 결과를 만들어냅니다."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "함께 성장해나가겠습니다",
|
||||||
|
"subtitle": "아이디어를 현실로 바꿔보세요",
|
||||||
|
"button": "연락하기"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "회사소개",
|
||||||
|
"description": "SmartSolTech는 혁신적인 기술로 고객의 비즈니스 성장을 지원하는 전문 개발 회사입니다"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "혁신을 선도하는 디지털 솔루션 전문가",
|
||||||
|
"company": {
|
||||||
|
"description": "혁신을 선도하는 디지털 솔루션 전문가"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "빠른 링크"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "연락처",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "서울시 강남구 테헤란로 123"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. 모든 권리 보유.",
|
||||||
|
"privacy": "개인정보처리방침",
|
||||||
|
"terms": "이용약관"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "라이트 테마",
|
||||||
|
"dark": "다크 테마",
|
||||||
|
"toggle": "테마 전환"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "로딩 중...",
|
||||||
|
"error": "오류가 발생했습니다",
|
||||||
|
"success": "성공",
|
||||||
|
"view_more": "더 보기",
|
||||||
|
"back": "뒤로",
|
||||||
|
"next": "다음",
|
||||||
|
"previous": "이전",
|
||||||
|
"view_details": "자세히 보기"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - 혁신적인 웹 개발, 모바일 앱 개발, UI/UX 디자인 서비스",
|
||||||
|
"keywords": "웹 개발, 모바일 앱, UI/UX 디자인, 한국",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "홈",
|
||||||
|
"about": "회사소개",
|
||||||
|
"services": "서비스",
|
||||||
|
"portfolio": "포트폴리오",
|
||||||
|
"calculator": "비용계산기"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "관리자 패널 로그인",
|
||||||
|
"dashboard": "대시보드",
|
||||||
|
"title": "SmartSolTech 관리자"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "혁신을 선도하는 디지털 솔루션 전문가",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "페이지를 찾을 수 없습니다",
|
||||||
|
"error_occurred": "오류가 발생했습니다",
|
||||||
|
"title": "오류 - SmartSolTech",
|
||||||
|
"default_title": "오류가 발생했습니다",
|
||||||
|
"default_message": "요청을 처리하는 중 문제가 발생했습니다.",
|
||||||
|
"back_home": "홈으로 돌아가기",
|
||||||
|
"go_back": "뒤로 가기",
|
||||||
|
"need_help": "도움이 필요하신가요?",
|
||||||
|
"help_message": "문제가 지속되면 언제든지 저희에게 연락주세요.",
|
||||||
|
"contact_support": "고객지원 연락하기"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "홈페이지",
|
||||||
|
"about": "회사소개",
|
||||||
|
"services": "서비스",
|
||||||
|
"portfolio": "포트폴리오",
|
||||||
|
"contact": "연락처",
|
||||||
|
"calculator": "비용계산기"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Главная",
|
|
||||||
"about": "О нас",
|
|
||||||
"services": "Услуги",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Контакты",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Умные Технологические",
|
|
||||||
"subtitle": "Решения",
|
|
||||||
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
|
||||||
"cta_primary": "Начать проект",
|
|
||||||
"cta_secondary": "Посмотреть портфолио"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Наши",
|
|
||||||
"title_highlight": "Услуги",
|
|
||||||
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-разработка",
|
|
||||||
"description": "Современные и адаптивные веб-сайты и веб-приложения",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильные приложения",
|
|
||||||
"description": "Нативные и кроссплатформенные приложения для iOS и Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Ориентированный на пользователя интуитивный и красивый дизайн интерфейса",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифровой маркетинг",
|
|
||||||
"description": "Цифровой маркетинг через SEO, социальные сети, онлайн-рекламу",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Посмотреть все услуги"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Недавние",
|
|
||||||
"title_highlight": "Проекты",
|
|
||||||
"description": "Ознакомьтесь с проектами, выполненными для успеха клиентов",
|
|
||||||
"view_details": "Подробнее",
|
|
||||||
"view_all": "Посмотреть все портфолио"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Проверьте стоимость вашего проекта",
|
|
||||||
"description": "Выберите нужные услуги и требования для расчета стоимости в реальном времени",
|
|
||||||
"cta": "Использовать калькулятор стоимости"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Готовы начать свой проект?",
|
|
||||||
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
|
||||||
"phone_consultation": "Телефонная консультация",
|
|
||||||
"email_inquiry": "Запрос по электронной почте",
|
|
||||||
"telegram_chat": "Чат в Telegram",
|
|
||||||
"instant_response": "Мгновенный ответ доступен",
|
|
||||||
"free_consultation": "Заявка на бесплатную консультацию",
|
|
||||||
"form": {
|
|
||||||
"name": "Имя",
|
|
||||||
"email": "Электронная почта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Интересующая услуга",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Выберите интересующую услугу",
|
|
||||||
"web_development": "Веб-разработка",
|
|
||||||
"mobile_app": "Мобильное приложение",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Консалтинг",
|
|
||||||
"other": "Другое"
|
|
||||||
},
|
|
||||||
"message": "Кратко опишите ваш проект",
|
|
||||||
"submit": "Подать заявку на консультацию"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "О",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Специалист по цифровым решениям, ведущий к успеху клиентов с помощью инновационных технологий",
|
|
||||||
"overview": {
|
|
||||||
"title": "Создавая будущее с инновациями и креативностью",
|
|
||||||
"description_1": "SmartSolTech - это специалист по цифровым решениям, основанный в 2020 году, поддерживающий успех клиентского бизнеса с помощью инновационных технологий и творческих идей в области веб-разработки, мобильных приложений и UI/UX дизайна.",
|
|
||||||
"description_2": "Мы не просто предоставляем технологии, но понимаем цели клиентов и предлагаем оптимальные решения, чтобы стать партнерами, растущими вместе.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Завершенные проекты",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Довольные клиенты",
|
|
||||||
"experience": "4 года",
|
|
||||||
"experience_label": "Опыт в отрасли"
|
|
||||||
},
|
|
||||||
"mission": "Наша миссия",
|
|
||||||
"mission_text": "Помощь всем предприятиям в достижении успеха в цифровую эпоху с помощью технологий",
|
|
||||||
"vision": "Наше видение",
|
|
||||||
"vision_text": "Рост как глобальной компании цифровых решений, представляющей Корею, для ведения цифровых инноваций для клиентов по всему миру"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Основные",
|
|
||||||
"title_highlight": "Ценности",
|
|
||||||
"description": "Основные ценности, которых придерживается SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновации",
|
|
||||||
"description": "Мы предоставляем инновационные решения через непрерывные исследования и внедрение передовых технологий."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Сотрудничество",
|
|
||||||
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Качество",
|
|
||||||
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Рост",
|
|
||||||
"description": "Мы растем вместе с клиентами и стремимся к непрерывному обучению и развитию."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Наша",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Представляем команду SmartSolTech с экспертизой и страстью"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологический",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Мы предоставляем лучшие решения с передовыми технологиями и проверенными инструментами",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильные"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Станьте партнером для совместного успеха",
|
|
||||||
"description": "Выведите свой бизнес на следующий уровень с SmartSolTech",
|
|
||||||
"partnership": "Запрос о партнерстве",
|
|
||||||
"portfolio": "Посмотреть портфолио"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Специалист по цифровым решениям, ведущий инновации",
|
|
||||||
"quick_links": "Быстрые ссылки",
|
|
||||||
"services": "Услуги",
|
|
||||||
"contact_info": "Контактная информация",
|
|
||||||
"follow_us": "Подписывайтесь",
|
|
||||||
"rights": "Все права защищены."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Светлая тема",
|
|
||||||
"dark": "Темная тема",
|
|
||||||
"toggle": "Переключить тему"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Загрузка...",
|
|
||||||
"error": "Произошла ошибка",
|
|
||||||
"success": "Успешно",
|
|
||||||
"view_more": "Посмотреть еще",
|
|
||||||
"back": "Назад",
|
|
||||||
"next": "Далее",
|
|
||||||
"previous": "Предыдущий"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Главная",
|
|
||||||
"about": "О нас",
|
|
||||||
"services": "Услуги",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Контакты",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Умные Технологические",
|
|
||||||
"subtitle": "Решения",
|
|
||||||
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
|
||||||
"cta_primary": "Начать проект",
|
|
||||||
"cta_secondary": "Посмотреть портфолио"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Наши",
|
|
||||||
"title_highlight": "Услуги",
|
|
||||||
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-разработка",
|
|
||||||
"description": "Современные и адаптивные веб-сайты и веб-приложения",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильные приложения",
|
|
||||||
"description": "Нативные и кроссплатформенные приложения для iOS и Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Ориентированный на пользователя интуитивный и красивый дизайн интерфейса",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифровой маркетинг",
|
|
||||||
"description": "Цифровой маркетинг через SEO, социальные сети, онлайн-рекламу",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Посмотреть все услуги"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Недавние",
|
|
||||||
"title_highlight": "Проекты",
|
|
||||||
"description": "Ознакомьтесь с проектами, выполненными для успеха клиентов",
|
|
||||||
"view_details": "Подробнее",
|
|
||||||
"view_all": "Посмотреть все портфолио"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Проверьте стоимость вашего проекта",
|
|
||||||
"description": "Выберите нужные услуги и требования для расчета стоимости в реальном времени",
|
|
||||||
"cta": "Использовать калькулятор стоимости"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Готовы начать свой проект?",
|
|
||||||
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
|
||||||
"phone_consultation": "Телефонная консультация",
|
|
||||||
"email_inquiry": "Запрос по электронной почте",
|
|
||||||
"telegram_chat": "Чат в Telegram",
|
|
||||||
"instant_response": "Мгновенный ответ доступен",
|
|
||||||
"free_consultation": "Заявка на бесплатную консультацию",
|
|
||||||
"form": {
|
|
||||||
"name": "Имя",
|
|
||||||
"email": "Электронная почта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Интересующая услуга",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Выберите интересующую услугу",
|
|
||||||
"web_development": "Веб-разработка",
|
|
||||||
"mobile_app": "Мобильное приложение",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Консалтинг",
|
|
||||||
"other": "Другое"
|
|
||||||
},
|
|
||||||
"message": "Кратко опишите ваш проект",
|
|
||||||
"submit": "Подать заявку на консультацию"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "О",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Специалист по цифровым решениям, ведущий к успеху клиентов с помощью инновационных технологий",
|
|
||||||
"overview": {
|
|
||||||
"title": "Создавая будущее с инновациями и креативностью",
|
|
||||||
"description_1": "SmartSolTech - это специалист по цифровым решениям, основанный в 2020 году, поддерживающий успех клиентского бизнеса с помощью инновационных технологий и творческих идей в области веб-разработки, мобильных приложений и UI/UX дизайна.",
|
|
||||||
"description_2": "Мы не просто предоставляем технологии, но понимаем цели клиентов и предлагаем оптимальные решения, чтобы стать партнерами, растущими вместе.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Завершенные проекты",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Довольные клиенты",
|
|
||||||
"experience": "4 года",
|
|
||||||
"experience_label": "Опыт в отрасли"
|
|
||||||
},
|
|
||||||
"mission": "Наша миссия",
|
|
||||||
"mission_text": "Помощь всем предприятиям в достижении успеха в цифровую эпоху с помощью технологий",
|
|
||||||
"vision": "Наше видение",
|
|
||||||
"vision_text": "Рост как глобальной компании цифровых решений, представляющей Корею, для ведения цифровых инноваций для клиентов по всему миру"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Основные",
|
|
||||||
"title_highlight": "Ценности",
|
|
||||||
"description": "Основные ценности, которых придерживается SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновации",
|
|
||||||
"description": "Мы предоставляем инновационные решения через непрерывные исследования и внедрение передовых технологий."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Сотрудничество",
|
|
||||||
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Качество",
|
|
||||||
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Рост",
|
|
||||||
"description": "Мы растем вместе с клиентами и стремимся к непрерывному обучению и развитию."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Наша",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Представляем команду SmartSolTech с экспертизой и страстью"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологический",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Мы предоставляем лучшие решения с передовыми технологиями и проверенными инструментами",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильные"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Станьте партнером для совместного успеха",
|
|
||||||
"description": "Выведите свой бизнес на следующий уровень с SmartSolTech",
|
|
||||||
"partnership": "Запрос о партнерстве",
|
|
||||||
"portfolio": "Посмотреть портфолио"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Специалист по цифровым решениям, ведущий инновации",
|
|
||||||
"quick_links": "Быстрые ссылки",
|
|
||||||
"services": "Услуги",
|
|
||||||
"contact_info": "Контактная информация",
|
|
||||||
"follow_us": "Подписывайтесь",
|
|
||||||
"rights": "Все права защищены."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Светлая тема",
|
|
||||||
"dark": "Темная тема",
|
|
||||||
"toggle": "Переключить тему"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Загрузка...",
|
|
||||||
"error": "Произошла ошибка",
|
|
||||||
"success": "Успешно",
|
|
||||||
"view_more": "Посмотреть еще",
|
|
||||||
"back": "Назад",
|
|
||||||
"next": "Далее",
|
|
||||||
"previous": "Предыдущий"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Главная",
|
|
||||||
"about": "О нас",
|
|
||||||
"services": "Услуги",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Контакты",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Умные Технологические",
|
|
||||||
"subtitle": "Решения",
|
|
||||||
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
|
||||||
"cta_primary": "Начать проект",
|
|
||||||
"cta_secondary": "Посмотреть портфолио"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Наши",
|
|
||||||
"title_highlight": "Услуги",
|
|
||||||
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-разработка",
|
|
||||||
"description": "Современные и адаптивные веб-сайты и веб-приложения",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильные приложения",
|
|
||||||
"description": "Нативные и кроссплатформенные приложения для iOS и Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Ориентированный на пользователя интуитивный и красивый дизайн интерфейса",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифровой маркетинг",
|
|
||||||
"description": "Цифровой маркетинг через SEO, социальные сети, онлайн-рекламу",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Посмотреть все услуги"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Недавние",
|
|
||||||
"title_highlight": "Проекты",
|
|
||||||
"description": "Ознакомьтесь с проектами, выполненными для успеха клиентов",
|
|
||||||
"view_details": "Подробнее",
|
|
||||||
"view_all": "Посмотреть все портфолио"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Калькулятор Стоимости Проекта",
|
|
||||||
"subtitle": "Выберите нужные услуги и требования для получения точной оценки стоимости в режиме реального времени",
|
|
||||||
"meta": {
|
|
||||||
"title": "Калькулятор стоимости проекта",
|
|
||||||
"description": "Рассчитайте стоимость вашего проекта веб-разработки, мобильного приложения или дизайна с помощью нашего интерактивного калькулятора"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Узнайте стоимость вашего проекта",
|
|
||||||
"subtitle": "Выберите необходимые услуги и требования, и мы рассчитаем стоимость в режиме реального времени",
|
|
||||||
"button": "Использовать калькулятор стоимости"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "Шаг 1: Выбор услуг",
|
|
||||||
"subtitle": "Выберите необходимые услуги (можно выбрать несколько)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "Шаг 2: Детали проекта",
|
|
||||||
"subtitle": "Выберите сложность проекта и сроки"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "Сложность проекта",
|
|
||||||
"simple": "Простой",
|
|
||||||
"simple_desc": "Базовый функционал, стандартный дизайн",
|
|
||||||
"medium": "Средний",
|
|
||||||
"medium_desc": "Дополнительные функции, кастомный дизайн",
|
|
||||||
"complex": "Сложный",
|
|
||||||
"complex_desc": "Расширенный функционал, интеграции"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "Временные рамки",
|
|
||||||
"standard": "Стандартные",
|
|
||||||
"standard_desc": "Обычные сроки разработки",
|
|
||||||
"rush": "Срочно",
|
|
||||||
"rush_desc": "Ускоренная разработка (+50%)",
|
|
||||||
"extended": "Расширенные",
|
|
||||||
"extended_desc": "Длительная разработка (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "Результат расчета",
|
|
||||||
"subtitle": "Вот ваша предварительная оценка стоимости проекта",
|
|
||||||
"estimated_price": "Предварительная стоимость",
|
|
||||||
"price_note": "* Окончательная стоимость может варьироваться в зависимости от деталей проекта",
|
|
||||||
"summary": "Сводка проекта",
|
|
||||||
"selected_services": "Выбранные услуги",
|
|
||||||
"complexity": "Сложность",
|
|
||||||
"timeline": "Временные рамки",
|
|
||||||
"get_quote": "Получить точное предложение",
|
|
||||||
"recalculate": "Пересчитать",
|
|
||||||
"contact_note": "Свяжитесь с нами для получения точного предложения и обсуждения деталей проекта"
|
|
||||||
},
|
|
||||||
"next_step": "Следующий шаг",
|
|
||||||
"prev_step": "Назад",
|
|
||||||
"calculate": "Рассчитать"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Готовы начать свой проект?",
|
|
||||||
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
|
||||||
"phone_consultation": "Телефонная консультация",
|
|
||||||
"email_inquiry": "Запрос по электронной почте",
|
|
||||||
"telegram_chat": "Чат в Telegram",
|
|
||||||
"instant_response": "Мгновенный ответ доступен",
|
|
||||||
"free_consultation": "Заявка на бесплатную консультацию",
|
|
||||||
"form": {
|
|
||||||
"name": "Имя",
|
|
||||||
"email": "Электронная почта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Интересующая услуга",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Выберите интересующую услугу",
|
|
||||||
"web_development": "Веб-разработка",
|
|
||||||
"mobile_app": "Мобильное приложение",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Консалтинг",
|
|
||||||
"other": "Другое"
|
|
||||||
},
|
|
||||||
"message": "Кратко опишите ваш проект",
|
|
||||||
"submit": "Подать заявку на консультацию"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "О",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Специалист по цифровым решениям, ведущий к успеху клиентов с помощью инновационных технологий",
|
|
||||||
"overview": {
|
|
||||||
"title": "Создавая будущее с инновациями и креативностью",
|
|
||||||
"description_1": "SmartSolTech - это специалист по цифровым решениям, основанный в 2020 году, поддерживающий успех клиентского бизнеса с помощью инновационных технологий и творческих идей в области веб-разработки, мобильных приложений и UI/UX дизайна.",
|
|
||||||
"description_2": "Мы не просто предоставляем технологии, но понимаем цели клиентов и предлагаем оптимальные решения, чтобы стать партнерами, растущими вместе.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Завершенные проекты",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Довольные клиенты",
|
|
||||||
"experience": "4 года",
|
|
||||||
"experience_label": "Опыт в отрасли"
|
|
||||||
},
|
|
||||||
"mission": "Наша миссия",
|
|
||||||
"mission_text": "Помощь всем предприятиям в достижении успеха в цифровую эпоху с помощью технологий",
|
|
||||||
"vision": "Наше видение",
|
|
||||||
"vision_text": "Рост как глобальной компании цифровых решений, представляющей Корею, для ведения цифровых инноваций для клиентов по всему миру"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Основные",
|
|
||||||
"title_highlight": "Ценности",
|
|
||||||
"description": "Основные ценности, которых придерживается SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновации",
|
|
||||||
"description": "Мы предоставляем инновационные решения через непрерывные исследования и внедрение передовых технологий."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Сотрудничество",
|
|
||||||
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Качество",
|
|
||||||
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Рост",
|
|
||||||
"description": "Мы растем вместе с клиентами и стремимся к непрерывному обучению и развитию."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Наша",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Представляем команду SmartSolTech с экспертизой и страстью"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологический",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Мы предоставляем лучшие решения с передовыми технологиями и проверенными инструментами",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильные"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Станьте партнером для совместного успеха",
|
|
||||||
"description": "Выведите свой бизнес на следующий уровень с SmartSolTech",
|
|
||||||
"partnership": "Запрос о партнерстве",
|
|
||||||
"portfolio": "Посмотреть портфолио"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Специалист по цифровым решениям, ведущий инновации",
|
|
||||||
"quick_links": "Быстрые ссылки",
|
|
||||||
"services": "Услуги",
|
|
||||||
"contact_info": "Контактная информация",
|
|
||||||
"follow_us": "Подписывайтесь",
|
|
||||||
"rights": "Все права защищены."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Светлая тема",
|
|
||||||
"dark": "Темная тема",
|
|
||||||
"toggle": "Переключить тему"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Загрузка...",
|
|
||||||
"error": "Произошла ошибка",
|
|
||||||
"success": "Успешно",
|
|
||||||
"view_more": "Посмотреть еще",
|
|
||||||
"back": "Назад",
|
|
||||||
"next": "Далее",
|
|
||||||
"previous": "Предыдущий"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
{
|
|
||||||
"navigation": {
|
|
||||||
"home": "Главная",
|
|
||||||
"about": "О нас",
|
|
||||||
"services": "Услуги",
|
|
||||||
"portfolio": "Портфолио",
|
|
||||||
"contact": "Контакты",
|
|
||||||
"calculator": "Калькулятор",
|
|
||||||
"admin": "Админ"
|
|
||||||
},
|
|
||||||
"hero": {
|
|
||||||
"title": "Умные Технологические",
|
|
||||||
"subtitle": "Решения",
|
|
||||||
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
|
||||||
"cta_primary": "Начать проект",
|
|
||||||
"cta_secondary": "Посмотреть портфолио"
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"title": "Наши",
|
|
||||||
"title_highlight": "Услуги",
|
|
||||||
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
|
||||||
"web_development": {
|
|
||||||
"title": "Веб-разработка",
|
|
||||||
"description": "Современные и адаптивные веб-сайты и веб-приложения",
|
|
||||||
"price": "$5,000~"
|
|
||||||
},
|
|
||||||
"mobile_app": {
|
|
||||||
"title": "Мобильные приложения",
|
|
||||||
"description": "Нативные и кроссплатформенные приложения для iOS и Android",
|
|
||||||
"price": "$8,000~"
|
|
||||||
},
|
|
||||||
"ui_ux_design": {
|
|
||||||
"title": "UI/UX дизайн",
|
|
||||||
"description": "Ориентированный на пользователя интуитивный и красивый дизайн интерфейса",
|
|
||||||
"price": "$3,000~"
|
|
||||||
},
|
|
||||||
"digital_marketing": {
|
|
||||||
"title": "Цифровой маркетинг",
|
|
||||||
"description": "Цифровой маркетинг через SEO, социальные сети, онлайн-рекламу",
|
|
||||||
"price": "$2,000~"
|
|
||||||
},
|
|
||||||
"view_all": "Посмотреть все услуги"
|
|
||||||
},
|
|
||||||
"portfolio": {
|
|
||||||
"title": "Недавние",
|
|
||||||
"title_highlight": "Проекты",
|
|
||||||
"description": "Ознакомьтесь с проектами, выполненными для успеха клиентов",
|
|
||||||
"view_details": "Подробнее",
|
|
||||||
"view_all": "Посмотреть все портфолио"
|
|
||||||
},
|
|
||||||
"calculator": {
|
|
||||||
"title": "Калькулятор Стоимости Проекта",
|
|
||||||
"subtitle": "Выберите нужные услуги и требования для получения точной оценки стоимости в режиме реального времени",
|
|
||||||
"meta": {
|
|
||||||
"title": "Калькулятор стоимости проекта",
|
|
||||||
"description": "Рассчитайте стоимость вашего проекта веб-разработки, мобильного приложения или дизайна с помощью нашего интерактивного калькулятора"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Узнайте стоимость вашего проекта",
|
|
||||||
"subtitle": "Выберите необходимые услуги и требования, и мы рассчитаем стоимость в режиме реального времени",
|
|
||||||
"button": "Использовать калькулятор стоимости"
|
|
||||||
},
|
|
||||||
"step1": {
|
|
||||||
"title": "Шаг 1: Выбор услуг",
|
|
||||||
"subtitle": "Выберите необходимые услуги (можно выбрать несколько)"
|
|
||||||
},
|
|
||||||
"step2": {
|
|
||||||
"title": "Шаг 2: Детали проекта",
|
|
||||||
"subtitle": "Выберите сложность проекта и сроки"
|
|
||||||
},
|
|
||||||
"complexity": {
|
|
||||||
"title": "Сложность проекта",
|
|
||||||
"simple": "Простой",
|
|
||||||
"simple_desc": "Базовый функционал, стандартный дизайн",
|
|
||||||
"medium": "Средний",
|
|
||||||
"medium_desc": "Дополнительные функции, кастомный дизайн",
|
|
||||||
"complex": "Сложный",
|
|
||||||
"complex_desc": "Расширенный функционал, интеграции"
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"title": "Временные рамки",
|
|
||||||
"standard": "Стандартные",
|
|
||||||
"standard_desc": "Обычные сроки разработки",
|
|
||||||
"rush": "Срочно",
|
|
||||||
"rush_desc": "Ускоренная разработка (+50%)",
|
|
||||||
"extended": "Расширенные",
|
|
||||||
"extended_desc": "Длительная разработка (-20%)"
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"title": "Результат расчета",
|
|
||||||
"subtitle": "Вот ваша предварительная оценка стоимости проекта",
|
|
||||||
"estimated_price": "Предварительная стоимость",
|
|
||||||
"price_note": "* Окончательная стоимость может варьироваться в зависимости от деталей проекта",
|
|
||||||
"summary": "Сводка проекта",
|
|
||||||
"selected_services": "Выбранные услуги",
|
|
||||||
"complexity": "Сложность",
|
|
||||||
"timeline": "Временные рамки",
|
|
||||||
"get_quote": "Получить точное предложение",
|
|
||||||
"recalculate": "Пересчитать",
|
|
||||||
"contact_note": "Свяжитесь с нами для получения точного предложения и обсуждения деталей проекта"
|
|
||||||
},
|
|
||||||
"next_step": "Следующий шаг",
|
|
||||||
"prev_step": "Назад",
|
|
||||||
"calculate": "Рассчитать"
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"ready_title": "Готовы начать свой проект?",
|
|
||||||
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
|
||||||
"phone_consultation": "Телефонная консультация",
|
|
||||||
"email_inquiry": "Запрос по электронной почте",
|
|
||||||
"telegram_chat": "Чат в Telegram",
|
|
||||||
"instant_response": "Мгновенный ответ доступен",
|
|
||||||
"free_consultation": "Заявка на бесплатную консультацию",
|
|
||||||
"form": {
|
|
||||||
"name": "Имя",
|
|
||||||
"email": "Электронная почта",
|
|
||||||
"phone": "Телефон",
|
|
||||||
"service_interest": "Интересующая услуга",
|
|
||||||
"service_options": {
|
|
||||||
"select": "Выберите интересующую услугу",
|
|
||||||
"web_development": "Веб-разработка",
|
|
||||||
"mobile_app": "Мобильное приложение",
|
|
||||||
"ui_ux_design": "UI/UX дизайн",
|
|
||||||
"branding": "Брендинг",
|
|
||||||
"consulting": "Консалтинг",
|
|
||||||
"other": "Другое"
|
|
||||||
},
|
|
||||||
"message": "Кратко опишите ваш проект",
|
|
||||||
"submit": "Подать заявку на консультацию"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"hero_title": "О",
|
|
||||||
"hero_highlight": "SmartSolTech",
|
|
||||||
"hero_description": "Специалист по цифровым решениям, ведущий к успеху клиентов с помощью инновационных технологий",
|
|
||||||
"overview": {
|
|
||||||
"title": "Создавая будущее с инновациями и креативностью",
|
|
||||||
"description_1": "SmartSolTech - это специалист по цифровым решениям, основанный в 2020 году, поддерживающий успех клиентского бизнеса с помощью инновационных технологий и творческих идей в области веб-разработки, мобильных приложений и UI/UX дизайна.",
|
|
||||||
"description_2": "Мы не просто предоставляем технологии, но понимаем цели клиентов и предлагаем оптимальные решения, чтобы стать партнерами, растущими вместе.",
|
|
||||||
"stats": {
|
|
||||||
"projects": "100+",
|
|
||||||
"projects_label": "Завершенные проекты",
|
|
||||||
"clients": "50+",
|
|
||||||
"clients_label": "Довольные клиенты",
|
|
||||||
"experience": "4 года",
|
|
||||||
"experience_label": "Опыт в отрасли"
|
|
||||||
},
|
|
||||||
"mission": "Наша миссия",
|
|
||||||
"mission_text": "Помощь всем предприятиям в достижении успеха в цифровую эпоху с помощью технологий",
|
|
||||||
"vision": "Наше видение",
|
|
||||||
"vision_text": "Рост как глобальной компании цифровых решений, представляющей Корею, для ведения цифровых инноваций для клиентов по всему миру"
|
|
||||||
},
|
|
||||||
"values": {
|
|
||||||
"title": "Основные",
|
|
||||||
"title_highlight": "Ценности",
|
|
||||||
"description": "Основные ценности, которых придерживается SmartSolTech",
|
|
||||||
"innovation": {
|
|
||||||
"title": "Инновации",
|
|
||||||
"description": "Мы предоставляем инновационные решения через непрерывные исследования и внедрение передовых технологий."
|
|
||||||
},
|
|
||||||
"collaboration": {
|
|
||||||
"title": "Сотрудничество",
|
|
||||||
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
|
||||||
},
|
|
||||||
"quality": {
|
|
||||||
"title": "Качество",
|
|
||||||
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
|
||||||
},
|
|
||||||
"growth": {
|
|
||||||
"title": "Рост",
|
|
||||||
"description": "Мы растем вместе с клиентами и стремимся к непрерывному обучению и развитию."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"team": {
|
|
||||||
"title": "Наша",
|
|
||||||
"title_highlight": "Команда",
|
|
||||||
"description": "Представляем команду SmartSolTech с экспертизой и страстью"
|
|
||||||
},
|
|
||||||
"tech_stack": {
|
|
||||||
"title": "Технологический",
|
|
||||||
"title_highlight": "Стек",
|
|
||||||
"description": "Мы предоставляем лучшие решения с передовыми технологиями и проверенными инструментами",
|
|
||||||
"frontend": "Frontend",
|
|
||||||
"backend": "Backend",
|
|
||||||
"mobile": "Мобильные"
|
|
||||||
},
|
|
||||||
"cta": {
|
|
||||||
"title": "Станьте партнером для совместного успеха",
|
|
||||||
"description": "Выведите свой бизнес на следующий уровень с SmartSolTech",
|
|
||||||
"partnership": "Запрос о партнерстве",
|
|
||||||
"portfolio": "Посмотреть портфолио"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"footer": {
|
|
||||||
"company": "SmartSolTech",
|
|
||||||
"description": "Специалист по цифровым решениям, ведущий инновации",
|
|
||||||
"quick_links": "Быстрые ссылки",
|
|
||||||
"services": "Услуги",
|
|
||||||
"contact_info": "Контактная информация",
|
|
||||||
"follow_us": "Подписывайтесь",
|
|
||||||
"rights": "Все права защищены."
|
|
||||||
},
|
|
||||||
"theme": {
|
|
||||||
"light": "Светлая тема",
|
|
||||||
"dark": "Темная тема",
|
|
||||||
"toggle": "Переключить тему"
|
|
||||||
},
|
|
||||||
"language": {
|
|
||||||
"english": "English",
|
|
||||||
"korean": "한국어",
|
|
||||||
"russian": "Русский",
|
|
||||||
"kazakh": "Қазақша"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"loading": "Загрузка...",
|
|
||||||
"error": "Произошла ошибка",
|
|
||||||
"success": "Успешно",
|
|
||||||
"view_more": "Посмотреть еще",
|
|
||||||
"back": "Назад",
|
|
||||||
"next": "Далее",
|
|
||||||
"previous": "Предыдущий"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
424
.history/locales/ru_20251025214839.json
Normal file
424
.history/locales/ru_20251025214839.json
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор",
|
||||||
|
"admin": "Админ"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Умные",
|
||||||
|
"solutions": "Решения"
|
||||||
|
},
|
||||||
|
"subtitle": "Развивайте свой бизнес с инновационными технологиями",
|
||||||
|
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
||||||
|
"cta": {
|
||||||
|
"start": "Начать",
|
||||||
|
"portfolio": "Смотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Наши",
|
||||||
|
"services": "Услуги"
|
||||||
|
},
|
||||||
|
"subtitle": "Профессиональные услуги разработки для воплощения ваших идей в реальность",
|
||||||
|
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
||||||
|
"view_all": "Посмотреть все услуги",
|
||||||
|
"web": {
|
||||||
|
"title": "Веб-разработка",
|
||||||
|
"description": "Адаптивные сайты и веб-приложения",
|
||||||
|
"price": "От $500"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Мобильные приложения",
|
||||||
|
"description": "Разработка нативных приложений для iOS и Android",
|
||||||
|
"price": "От $1,000"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Дизайн",
|
||||||
|
"description": "Дизайн интерфейсов и пользовательского опыта",
|
||||||
|
"price": "От $300"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Цифровой маркетинг",
|
||||||
|
"description": "SEO, SMM, управление рекламой",
|
||||||
|
"price": "От $200"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Услуги",
|
||||||
|
"description": "Ознакомьтесь с профессиональными услугами SmartSolTech. Веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг и другие технологические решения.",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг, технологические решения, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Наши",
|
||||||
|
"title_highlight": "Услуги",
|
||||||
|
"subtitle": "Поддержка роста бизнеса с инновационными технологиями"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Начальная цена",
|
||||||
|
"consultation": "консультация",
|
||||||
|
"contact": "Связаться",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"popular": "Популярно",
|
||||||
|
"coming_soon": "Услуги скоро появятся",
|
||||||
|
"coming_soon_desc": "Скоро мы предложим различные услуги!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Процесс реализации проекта",
|
||||||
|
"subtitle": "Мы ведем проекты с системным и профессиональным подходом",
|
||||||
|
"step1": {
|
||||||
|
"title": "Консультация и планирование",
|
||||||
|
"description": "Точно понимаем требования клиента и планируем оптимальное решение"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Дизайн и проектирование",
|
||||||
|
"description": "Проектируем интуитивный дизайн, ориентированный на пользователя, и надежную системную архитектуру"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Разработка и реализация",
|
||||||
|
"description": "Разрабатываем эффективные и масштабируемые решения, используя новейшие технологии и лучшие практики"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Тестирование и развертывание",
|
||||||
|
"description": "Обеспечиваем качество через тщательное тестирование и проводим стабильное развертывание"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Почему стоит выбрать SmartSolTech?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Использование современных технологий",
|
||||||
|
"description": "Всегда отслеживаем новейшие технологические тренды и используем проверенный технологический стек для предоставления футуристических решений."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Экспертная команда",
|
||||||
|
"description": "Команда, состоящая из экспертов в каждой области, сотрудничает для обеспечения результатов высочайшего качества."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Быстрое реагирование",
|
||||||
|
"description": "Завершаем проекты в установленные сроки благодаря быстрой коммуникации и эффективному управлению проектами."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Постоянная поддержка",
|
||||||
|
"description": "Поддерживаем долгосрочное партнерство через постоянное обслуживание и техническую поддержку даже после завершения проекта."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Гарантия качества",
|
||||||
|
"subtitle": "Для удовлетворения клиентов\nСервис высочайшего качества"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Готовы начать проект?",
|
||||||
|
"subtitle": "Мы предложим оптимальное решение через бесплатную консультацию",
|
||||||
|
"free_consultation": "Подать заявку на бесплатную консультацию",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"view_portfolio": "Посмотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Недавние",
|
||||||
|
"projects": "Проекты"
|
||||||
|
},
|
||||||
|
"subtitle": "Ознакомьтесь с успешно завершенными проектами",
|
||||||
|
"description": "Посмотрите на проекты, выполненные для успеха клиентов",
|
||||||
|
"view_details": "Подробнее",
|
||||||
|
"view_all": "Посмотреть все портфолио",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильные приложения",
|
||||||
|
"uiux": "UI/UX Дизайн"
|
||||||
|
},
|
||||||
|
"project_details": "Детали проекта",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "Электронная коммерция",
|
||||||
|
"title": "Платформа электронной коммерции",
|
||||||
|
"description": "Современное решение для интернет-торговли с интуитивным интерфейсом"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Портфолио",
|
||||||
|
"description": "Ознакомьтесь с разнообразными проектами и историями успеха SmartSolTech. Портфолио веб-разработки, мобильных приложений, UI/UX дизайна.",
|
||||||
|
"keywords": "портфолио, веб-разработка, мобильные приложения, UI/UX дизайн, проекты, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Наше портфолио",
|
||||||
|
"subtitle": "Откройте для себя инновационные проекты и креативные решения",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web-development": "Веб-разработка",
|
||||||
|
"mobile-app": "Мобильные приложения",
|
||||||
|
"ui-ux-design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"marketing": "Цифровой маркетинг"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "Подробнее",
|
||||||
|
"projectDetails": "Детали проекта",
|
||||||
|
"loadMore": "Загрузить больше проектов",
|
||||||
|
"contact": "Заказать проект",
|
||||||
|
"calculate": "Рассчитать стоимость"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "Портфолио пока пусто",
|
||||||
|
"subtitle": "Скоро мы представим потрясающие проекты!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Станьте звездой следующего проекта",
|
||||||
|
"subtitle": "Создавайте инновационные цифровые решения вместе с нами"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "РЕКОМЕНДУЕМОЕ",
|
||||||
|
"views": "просмотров",
|
||||||
|
"likes": "лайков"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для получения точной оценки стоимости в реальном времени",
|
||||||
|
"next_step": "Следующий шаг",
|
||||||
|
"prev_step": "Предыдущий шаг",
|
||||||
|
"calculate": "Рассчитать",
|
||||||
|
"reset": "Сброс",
|
||||||
|
"meta": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"description": "Рассчитайте стоимость вашего проекта веб-разработки, мобильного приложения или дизайна с помощью нашего интерактивного калькулятора"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Проверьте оценку вашего проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для расчета стоимости в реальном времени",
|
||||||
|
"button": "Использовать калькулятор стоимости"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Выберите ваши услуги",
|
||||||
|
"nav_title": "Шаг 1: Услуги",
|
||||||
|
"subtitle": "Выберите услуги, необходимые для вашего проекта"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Детали проекта",
|
||||||
|
"nav_title": "Шаг 2: Детали",
|
||||||
|
"subtitle": "Расскажите нам о сложности и сроках вашего проекта"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Сложность проекта",
|
||||||
|
"simple": "Простой",
|
||||||
|
"simple_desc": "Базовые функции и стандартный функционал",
|
||||||
|
"medium": "Средний",
|
||||||
|
"medium_desc": "Пользовательские функции и интеграции",
|
||||||
|
"complex": "Сложный",
|
||||||
|
"complex_desc": "Продвинутые функции и сложные интеграции"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Сроки проекта",
|
||||||
|
"standard": "Стандартные (4-8 недель)",
|
||||||
|
"standard_desc": "Обычные сроки разработки",
|
||||||
|
"rush": "Срочные (2-4 недели)",
|
||||||
|
"rush_desc": "Ускоренная доставка с дополнительной стоимостью",
|
||||||
|
"extended": "Расширенные (8+ недель)",
|
||||||
|
"extended_desc": "Гибкие сроки с оптимизацией стоимости"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Оценка проекта",
|
||||||
|
"subtitle": "Ваша расчетная стоимость проекта",
|
||||||
|
"nav_title": "Результат",
|
||||||
|
"estimated_price": "Расчетная цена",
|
||||||
|
"price_note": "Это приблизительная стоимость. Итоговая цена может варьироваться в зависимости от сложности проекта.",
|
||||||
|
"summary": "Сводка проекта",
|
||||||
|
"get_quote": "Получить подробное предложение",
|
||||||
|
"contact_note": "Свяжитесь с нами для подробной консультации и точного предложения.",
|
||||||
|
"recalculate": "Рассчитать снова",
|
||||||
|
"selected_services": "Выбранные услуги",
|
||||||
|
"complexity": "Сложность",
|
||||||
|
"timeline": "Сроки"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Свяжитесь с нами",
|
||||||
|
"subtitle": "Мы здесь, чтобы помочь воплотить ваши идеи в жизнь"
|
||||||
|
},
|
||||||
|
"ready_title": "Готовы начать свой проект?",
|
||||||
|
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
||||||
|
"form": {
|
||||||
|
"title": "Запрос проекта",
|
||||||
|
"name": "Имя",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Телефон",
|
||||||
|
"message": "Сообщение",
|
||||||
|
"submit": "Отправить запрос",
|
||||||
|
"success": "Запрос успешно отправлен",
|
||||||
|
"error": "Произошла ошибка при отправке запроса",
|
||||||
|
"service": {
|
||||||
|
"title": "Интересующая услуга",
|
||||||
|
"select": "Выберите интересующую услугу",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильное приложение",
|
||||||
|
"design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"consulting": "Консультирование",
|
||||||
|
"other": "Другое"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Контактная информация"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Телефонный запрос",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Пн-Пт 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Email запрос",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "Ответ в течение 24 часов"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "Для быстрого ответа"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Адрес офиса",
|
||||||
|
"line1": "ул. Тегеран-ро, 123, Каннам-гу",
|
||||||
|
"line2": "Сеул, Южная Корея"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Готовы?",
|
||||||
|
"start": "Начать",
|
||||||
|
"question": "Есть вопросы?",
|
||||||
|
"subtitle": "Мы предоставляем консультации по проектам"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"description": "Свяжитесь с нами в любое время для запросов по проектам или консультации"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "О SmartSolTech",
|
||||||
|
"subtitle": "Создаем будущее с инновациями и технологиями"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Информация о компании",
|
||||||
|
"description1": "SmartSolTech - технологическая компания, основанная в 2020 году, признанная за экспертизу в веб-разработке, разработке мобильных приложений и UI/UX дизайне.",
|
||||||
|
"description2": "Мы точно понимаем потребности клиентов и предоставляем инновационные решения, используя новейшие технологии."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Завершенных проектов",
|
||||||
|
"experience": "Лет опыта",
|
||||||
|
"clients": "Довольных клиентов"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Наша миссия",
|
||||||
|
"description": "Наша миссия - поддерживать рост бизнеса клиентов через технологии и лидировать в цифровых инновациях."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Инновации",
|
||||||
|
"description": "Мы предоставляем инновационные решения через постоянные исследования и внедрение передовых технологий."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Качество",
|
||||||
|
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Партнерство",
|
||||||
|
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Мы будем расти вместе",
|
||||||
|
"subtitle": "Превратите свои идеи в реальность",
|
||||||
|
"button": "Связаться с нами"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "О нас",
|
||||||
|
"description": "SmartSolTech - профессиональная компания разработки, которая поддерживает рост бизнеса клиентов инновационными технологиями"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"company": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Быстрые ссылки"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "ул. Тегеран-ро, 123, Каннам-гу, Сеул"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. Все права защищены.",
|
||||||
|
"privacy": "Политика конфиденциальности",
|
||||||
|
"terms": "Условия использования"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Светлая тема",
|
||||||
|
"dark": "Темная тема",
|
||||||
|
"toggle": "Переключить тему"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Загрузка...",
|
||||||
|
"error": "Произошла ошибка",
|
||||||
|
"success": "Успешно",
|
||||||
|
"view_more": "Смотреть больше",
|
||||||
|
"back": "Назад",
|
||||||
|
"next": "Далее",
|
||||||
|
"previous": "Предыдущий",
|
||||||
|
"view_details": "Подробнее"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Инновационная веб-разработка, разработка мобильных приложений, UI/UX дизайн",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, Корея",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Вход в админ-панель",
|
||||||
|
"dashboard": "Панель управления",
|
||||||
|
"title": "SmartSolTech Админ"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Страница не найдена",
|
||||||
|
"error_occurred": "Произошла ошибка",
|
||||||
|
"title": "Ошибка - SmartSolTech",
|
||||||
|
"default_title": "Произошла ошибка",
|
||||||
|
"default_message": "Возникла проблема при обработке запроса.",
|
||||||
|
"back_home": "Вернуться на главную",
|
||||||
|
"go_back": "Вернуться",
|
||||||
|
"need_help": "Нужна помощь?",
|
||||||
|
"help_message": "Если проблема повторяется, свяжитесь с нами в любое время.",
|
||||||
|
"contact_support": "Связаться с поддержкой"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Главная страница",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
}
|
||||||
|
}
|
||||||
424
.history/locales/ru_20251025215055.json
Normal file
424
.history/locales/ru_20251025215055.json
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор",
|
||||||
|
"admin": "Админ"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Умные",
|
||||||
|
"solutions": "Решения"
|
||||||
|
},
|
||||||
|
"subtitle": "Развивайте свой бизнес с инновационными технологиями",
|
||||||
|
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
||||||
|
"cta": {
|
||||||
|
"start": "Начать",
|
||||||
|
"portfolio": "Смотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Наши",
|
||||||
|
"services": "Услуги"
|
||||||
|
},
|
||||||
|
"subtitle": "Профессиональные услуги разработки для воплощения ваших идей в реальность",
|
||||||
|
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
||||||
|
"view_all": "Посмотреть все услуги",
|
||||||
|
"web": {
|
||||||
|
"title": "Веб-разработка",
|
||||||
|
"description": "Адаптивные сайты и веб-приложения",
|
||||||
|
"price": "От $500"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Мобильные приложения",
|
||||||
|
"description": "Разработка нативных приложений для iOS и Android",
|
||||||
|
"price": "От $1,000"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Дизайн",
|
||||||
|
"description": "Дизайн интерфейсов и пользовательского опыта",
|
||||||
|
"price": "От $300"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Цифровой маркетинг",
|
||||||
|
"description": "SEO, SMM, управление рекламой",
|
||||||
|
"price": "От $200"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Услуги",
|
||||||
|
"description": "Ознакомьтесь с профессиональными услугами SmartSolTech. Веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг и другие технологические решения.",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг, технологические решения, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Наши",
|
||||||
|
"title_highlight": "Услуги",
|
||||||
|
"subtitle": "Поддержка роста бизнеса с инновационными технологиями"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Начальная цена",
|
||||||
|
"consultation": "консультация",
|
||||||
|
"contact": "Связаться",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"popular": "Популярно",
|
||||||
|
"coming_soon": "Услуги скоро появятся",
|
||||||
|
"coming_soon_desc": "Скоро мы предложим различные услуги!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Процесс реализации проекта",
|
||||||
|
"subtitle": "Мы ведем проекты с системным и профессиональным подходом",
|
||||||
|
"step1": {
|
||||||
|
"title": "Консультация и планирование",
|
||||||
|
"description": "Точно понимаем требования клиента и планируем оптимальное решение"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Дизайн и проектирование",
|
||||||
|
"description": "Проектируем интуитивный дизайн, ориентированный на пользователя, и надежную системную архитектуру"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Разработка и реализация",
|
||||||
|
"description": "Разрабатываем эффективные и масштабируемые решения, используя новейшие технологии и лучшие практики"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Тестирование и развертывание",
|
||||||
|
"description": "Обеспечиваем качество через тщательное тестирование и проводим стабильное развертывание"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Почему стоит выбрать SmartSolTech?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Использование современных технологий",
|
||||||
|
"description": "Всегда отслеживаем новейшие технологические тренды и используем проверенный технологический стек для предоставления футуристических решений."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Экспертная команда",
|
||||||
|
"description": "Команда, состоящая из экспертов в каждой области, сотрудничает для обеспечения результатов высочайшего качества."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Быстрое реагирование",
|
||||||
|
"description": "Завершаем проекты в установленные сроки благодаря быстрой коммуникации и эффективному управлению проектами."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Постоянная поддержка",
|
||||||
|
"description": "Поддерживаем долгосрочное партнерство через постоянное обслуживание и техническую поддержку даже после завершения проекта."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Гарантия качества",
|
||||||
|
"subtitle": "Для удовлетворения клиентов\nСервис высочайшего качества"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Готовы начать проект?",
|
||||||
|
"subtitle": "Мы предложим оптимальное решение через бесплатную консультацию",
|
||||||
|
"free_consultation": "Подать заявку на бесплатную консультацию",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"view_portfolio": "Посмотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Недавние",
|
||||||
|
"projects": "Проекты"
|
||||||
|
},
|
||||||
|
"subtitle": "Ознакомьтесь с успешно завершенными проектами",
|
||||||
|
"description": "Посмотрите на проекты, выполненные для успеха клиентов",
|
||||||
|
"view_details": "Подробнее",
|
||||||
|
"view_all": "Посмотреть все портфолио",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильные приложения",
|
||||||
|
"uiux": "UI/UX Дизайн"
|
||||||
|
},
|
||||||
|
"project_details": "Детали проекта",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "Электронная коммерция",
|
||||||
|
"title": "Платформа электронной коммерции",
|
||||||
|
"description": "Современное решение для интернет-торговли с интуитивным интерфейсом"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Портфолио",
|
||||||
|
"description": "Ознакомьтесь с разнообразными проектами и историями успеха SmartSolTech. Портфолио веб-разработки, мобильных приложений, UI/UX дизайна.",
|
||||||
|
"keywords": "портфолио, веб-разработка, мобильные приложения, UI/UX дизайн, проекты, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Наше портфолио",
|
||||||
|
"subtitle": "Откройте для себя инновационные проекты и креативные решения",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web-development": "Веб-разработка",
|
||||||
|
"mobile-app": "Мобильные приложения",
|
||||||
|
"ui-ux-design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"marketing": "Цифровой маркетинг"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "Подробнее",
|
||||||
|
"projectDetails": "Детали проекта",
|
||||||
|
"loadMore": "Загрузить больше проектов",
|
||||||
|
"contact": "Заказать проект",
|
||||||
|
"calculate": "Рассчитать стоимость"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "Портфолио пока пусто",
|
||||||
|
"subtitle": "Скоро мы представим потрясающие проекты!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Станьте звездой следующего проекта",
|
||||||
|
"subtitle": "Создавайте инновационные цифровые решения вместе с нами"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "РЕКОМЕНДУЕМОЕ",
|
||||||
|
"views": "просмотров",
|
||||||
|
"likes": "лайков"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для получения точной оценки стоимости в реальном времени",
|
||||||
|
"next_step": "Следующий шаг",
|
||||||
|
"prev_step": "Предыдущий шаг",
|
||||||
|
"calculate": "Рассчитать",
|
||||||
|
"reset": "Сброс",
|
||||||
|
"meta": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"description": "Рассчитайте стоимость вашего проекта веб-разработки, мобильного приложения или дизайна с помощью нашего интерактивного калькулятора"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Проверьте оценку вашего проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для расчета стоимости в реальном времени",
|
||||||
|
"button": "Использовать калькулятор стоимости"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Выберите ваши услуги",
|
||||||
|
"nav_title": "Шаг 1: Услуги",
|
||||||
|
"subtitle": "Выберите услуги, необходимые для вашего проекта"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Детали проекта",
|
||||||
|
"nav_title": "Шаг 2: Детали",
|
||||||
|
"subtitle": "Расскажите нам о сложности и сроках вашего проекта"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Сложность проекта",
|
||||||
|
"simple": "Простой",
|
||||||
|
"simple_desc": "Базовые функции и стандартный функционал",
|
||||||
|
"medium": "Средний",
|
||||||
|
"medium_desc": "Пользовательские функции и интеграции",
|
||||||
|
"complex": "Сложный",
|
||||||
|
"complex_desc": "Продвинутые функции и сложные интеграции"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Сроки проекта",
|
||||||
|
"standard": "Стандартные (4-8 недель)",
|
||||||
|
"standard_desc": "Обычные сроки разработки",
|
||||||
|
"rush": "Срочные (2-4 недели)",
|
||||||
|
"rush_desc": "Ускоренная доставка с дополнительной стоимостью",
|
||||||
|
"extended": "Расширенные (8+ недель)",
|
||||||
|
"extended_desc": "Гибкие сроки с оптимизацией стоимости"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Оценка проекта",
|
||||||
|
"subtitle": "Ваша расчетная стоимость проекта",
|
||||||
|
"nav_title": "Результат",
|
||||||
|
"estimated_price": "Расчетная цена",
|
||||||
|
"price_note": "Это приблизительная стоимость. Итоговая цена может варьироваться в зависимости от сложности проекта.",
|
||||||
|
"summary": "Сводка проекта",
|
||||||
|
"get_quote": "Получить подробное предложение",
|
||||||
|
"contact_note": "Свяжитесь с нами для подробной консультации и точного предложения.",
|
||||||
|
"recalculate": "Рассчитать снова",
|
||||||
|
"selected_services": "Выбранные услуги",
|
||||||
|
"complexity": "Сложность",
|
||||||
|
"timeline": "Сроки"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Свяжитесь с нами",
|
||||||
|
"subtitle": "Мы здесь, чтобы помочь воплотить ваши идеи в жизнь"
|
||||||
|
},
|
||||||
|
"ready_title": "Готовы начать свой проект?",
|
||||||
|
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
||||||
|
"form": {
|
||||||
|
"title": "Запрос проекта",
|
||||||
|
"name": "Имя",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Телефон",
|
||||||
|
"message": "Сообщение",
|
||||||
|
"submit": "Отправить запрос",
|
||||||
|
"success": "Запрос успешно отправлен",
|
||||||
|
"error": "Произошла ошибка при отправке запроса",
|
||||||
|
"service": {
|
||||||
|
"title": "Интересующая услуга",
|
||||||
|
"select": "Выберите интересующую услугу",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильное приложение",
|
||||||
|
"design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"consulting": "Консультирование",
|
||||||
|
"other": "Другое"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Контактная информация"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Телефонный запрос",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Пн-Пт 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Email запрос",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "Ответ в течение 24 часов"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "Для быстрого ответа"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Адрес офиса",
|
||||||
|
"line1": "ул. Тегеран-ро, 123, Каннам-гу",
|
||||||
|
"line2": "Сеул, Южная Корея"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Готовы?",
|
||||||
|
"start": "Начать",
|
||||||
|
"question": "Есть вопросы?",
|
||||||
|
"subtitle": "Мы предоставляем консультации по проектам"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"description": "Свяжитесь с нами в любое время для запросов по проектам или консультации"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "О SmartSolTech",
|
||||||
|
"subtitle": "Создаем будущее с инновациями и технологиями"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Информация о компании",
|
||||||
|
"description1": "SmartSolTech - технологическая компания, основанная в 2020 году, признанная за экспертизу в веб-разработке, разработке мобильных приложений и UI/UX дизайне.",
|
||||||
|
"description2": "Мы точно понимаем потребности клиентов и предоставляем инновационные решения, используя новейшие технологии."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Завершенных проектов",
|
||||||
|
"experience": "Лет опыта",
|
||||||
|
"clients": "Довольных клиентов"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Наша миссия",
|
||||||
|
"description": "Наша миссия - поддерживать рост бизнеса клиентов через технологии и лидировать в цифровых инновациях."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Инновации",
|
||||||
|
"description": "Мы предоставляем инновационные решения через постоянные исследования и внедрение передовых технологий."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Качество",
|
||||||
|
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Партнерство",
|
||||||
|
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Мы будем расти вместе",
|
||||||
|
"subtitle": "Превратите свои идеи в реальность",
|
||||||
|
"button": "Связаться с нами"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "О нас",
|
||||||
|
"description": "SmartSolTech - профессиональная компания разработки, которая поддерживает рост бизнеса клиентов инновационными технологиями"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"company": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Быстрые ссылки"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "ул. Тегеран-ро, 123, Каннам-гу, Сеул"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. Все права защищены.",
|
||||||
|
"privacy": "Политика конфиденциальности",
|
||||||
|
"terms": "Условия использования"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Светлая тема",
|
||||||
|
"dark": "Темная тема",
|
||||||
|
"toggle": "Переключить тему"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Загрузка...",
|
||||||
|
"error": "Произошла ошибка",
|
||||||
|
"success": "Успешно",
|
||||||
|
"view_more": "Смотреть больше",
|
||||||
|
"back": "Назад",
|
||||||
|
"next": "Далее",
|
||||||
|
"previous": "Предыдущий",
|
||||||
|
"view_details": "Подробнее"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Инновационная веб-разработка, разработка мобильных приложений, UI/UX дизайн",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, Корея",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Вход в админ-панель",
|
||||||
|
"dashboard": "Панель управления",
|
||||||
|
"title": "SmartSolTech Админ"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Страница не найдена",
|
||||||
|
"error_occurred": "Произошла ошибка",
|
||||||
|
"title": "Ошибка - SmartSolTech",
|
||||||
|
"default_title": "Произошла ошибка",
|
||||||
|
"default_message": "Возникла проблема при обработке запроса.",
|
||||||
|
"back_home": "Вернуться на главную",
|
||||||
|
"go_back": "Вернуться",
|
||||||
|
"need_help": "Нужна помощь?",
|
||||||
|
"help_message": "Если проблема повторяется, свяжитесь с нами в любое время.",
|
||||||
|
"contact_support": "Связаться с поддержкой"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Главная страница",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
}
|
||||||
|
}
|
||||||
425
.history/locales/ru_20251026095239.json
Normal file
425
.history/locales/ru_20251026095239.json
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор",
|
||||||
|
"admin": "Админ"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Умные",
|
||||||
|
"solutions": "Решения"
|
||||||
|
},
|
||||||
|
"subtitle": "Развивайте свой бизнес с инновационными технологиями",
|
||||||
|
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
||||||
|
"cta": {
|
||||||
|
"start": "Начать",
|
||||||
|
"portfolio": "Смотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Наши",
|
||||||
|
"services": "Услуги"
|
||||||
|
},
|
||||||
|
"subtitle": "Профессиональные услуги разработки для воплощения ваших идей в реальность",
|
||||||
|
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
||||||
|
"view_all": "Посмотреть все услуги",
|
||||||
|
"web": {
|
||||||
|
"title": "Веб-разработка",
|
||||||
|
"description": "Адаптивные сайты и веб-приложения",
|
||||||
|
"price": "От $500"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Мобильные приложения",
|
||||||
|
"description": "Разработка нативных приложений для iOS и Android",
|
||||||
|
"price": "От $1,000"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Дизайн",
|
||||||
|
"description": "Дизайн интерфейсов и пользовательского опыта",
|
||||||
|
"price": "От $300"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Цифровой маркетинг",
|
||||||
|
"description": "SEO, SMM, управление рекламой",
|
||||||
|
"price": "От $200"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Услуги",
|
||||||
|
"description": "Ознакомьтесь с профессиональными услугами SmartSolTech. Веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг и другие технологические решения.",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг, технологические решения, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Наши",
|
||||||
|
"title_highlight": "Услуги",
|
||||||
|
"subtitle": "Поддержка роста бизнеса с инновационными технологиями"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Начальная цена",
|
||||||
|
"consultation": "консультация",
|
||||||
|
"contact": "Связаться",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"popular": "Популярно",
|
||||||
|
"coming_soon": "Услуги скоро появятся",
|
||||||
|
"coming_soon_desc": "Скоро мы предложим различные услуги!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Процесс реализации проекта",
|
||||||
|
"subtitle": "Мы ведем проекты с системным и профессиональным подходом",
|
||||||
|
"step1": {
|
||||||
|
"title": "Консультация и планирование",
|
||||||
|
"description": "Точно понимаем требования клиента и планируем оптимальное решение"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Дизайн и проектирование",
|
||||||
|
"description": "Проектируем интуитивный дизайн, ориентированный на пользователя, и надежную системную архитектуру"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Разработка и реализация",
|
||||||
|
"description": "Разрабатываем эффективные и масштабируемые решения, используя новейшие технологии и лучшие практики"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Тестирование и развертывание",
|
||||||
|
"description": "Обеспечиваем качество через тщательное тестирование и проводим стабильное развертывание"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Почему стоит выбрать SmartSolTech?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Использование современных технологий",
|
||||||
|
"description": "Всегда отслеживаем новейшие технологические тренды и используем проверенный технологический стек для предоставления футуристических решений."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Экспертная команда",
|
||||||
|
"description": "Команда, состоящая из экспертов в каждой области, сотрудничает для обеспечения результатов высочайшего качества."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Быстрое реагирование",
|
||||||
|
"description": "Завершаем проекты в установленные сроки благодаря быстрой коммуникации и эффективному управлению проектами."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Постоянная поддержка",
|
||||||
|
"description": "Поддерживаем долгосрочное партнерство через постоянное обслуживание и техническую поддержку даже после завершения проекта."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Гарантия качества",
|
||||||
|
"subtitle": "Для удовлетворения клиентов\nСервис высочайшего качества"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Готовы начать проект?",
|
||||||
|
"subtitle": "Мы предложим оптимальное решение через бесплатную консультацию",
|
||||||
|
"free_consultation": "Подать заявку на бесплатную консультацию",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"view_portfolio": "Посмотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Недавние",
|
||||||
|
"projects": "Проекты"
|
||||||
|
},
|
||||||
|
"subtitle": "Ознакомьтесь с успешно завершенными проектами",
|
||||||
|
"description": "Посмотрите на проекты, выполненные для успеха клиентов",
|
||||||
|
"view_details": "Подробнее",
|
||||||
|
"view_all": "Посмотреть все портфолио",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильные приложения",
|
||||||
|
"uiux": "UI/UX Дизайн"
|
||||||
|
},
|
||||||
|
"project_details": "Детали проекта",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "Электронная коммерция",
|
||||||
|
"title": "Платформа электронной коммерции",
|
||||||
|
"description": "Современное решение для интернет-торговли с интуитивным интерфейсом"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Портфолио",
|
||||||
|
"description": "Ознакомьтесь с разнообразными проектами и историями успеха SmartSolTech. Портфолио веб-разработки, мобильных приложений, UI/UX дизайна.",
|
||||||
|
"keywords": "портфолио, веб-разработка, мобильные приложения, UI/UX дизайн, проекты, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Наше портфолио",
|
||||||
|
"subtitle": "Откройте для себя инновационные проекты и креативные решения",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web-development": "Веб-разработка",
|
||||||
|
"mobile-app": "Мобильные приложения",
|
||||||
|
"ui-ux-design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"marketing": "Цифровой маркетинг"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "Подробнее",
|
||||||
|
"projectDetails": "Детали проекта",
|
||||||
|
"loadMore": "Загрузить больше проектов",
|
||||||
|
"contact": "Заказать проект",
|
||||||
|
"calculate": "Рассчитать стоимость"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "Портфолио пока пусто",
|
||||||
|
"subtitle": "Скоро мы представим потрясающие проекты!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Станьте звездой следующего проекта",
|
||||||
|
"subtitle": "Создавайте инновационные цифровые решения вместе с нами"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "РЕКОМЕНДУЕМОЕ",
|
||||||
|
"views": "просмотров",
|
||||||
|
"likes": "лайков"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для получения точной оценки стоимости в реальном времени",
|
||||||
|
"next_step": "Следующий шаг",
|
||||||
|
"prev_step": "Предыдущий шаг",
|
||||||
|
"calculate": "Рассчитать",
|
||||||
|
"reset": "Сброс",
|
||||||
|
"live_update": "Обновление в реальном времени",
|
||||||
|
"meta": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"description": "Рассчитайте стоимость вашего проекта веб-разработки, мобильного приложения или дизайна с помощью нашего интерактивного калькулятора"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Проверьте оценку вашего проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для расчета стоимости в реальном времени",
|
||||||
|
"button": "Использовать калькулятор стоимости"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Выберите ваши услуги",
|
||||||
|
"nav_title": "Шаг 1: Услуги",
|
||||||
|
"subtitle": "Выберите услуги, необходимые для вашего проекта"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Детали проекта",
|
||||||
|
"nav_title": "Шаг 2: Детали",
|
||||||
|
"subtitle": "Расскажите нам о сложности и сроках вашего проекта"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Сложность проекта",
|
||||||
|
"simple": "Простой",
|
||||||
|
"simple_desc": "Базовые функции и стандартный функционал",
|
||||||
|
"medium": "Средний",
|
||||||
|
"medium_desc": "Пользовательские функции и интеграции",
|
||||||
|
"complex": "Сложный",
|
||||||
|
"complex_desc": "Продвинутые функции и сложные интеграции"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Сроки проекта",
|
||||||
|
"standard": "Стандартные (4-8 недель)",
|
||||||
|
"standard_desc": "Обычные сроки разработки",
|
||||||
|
"rush": "Срочные (2-4 недели)",
|
||||||
|
"rush_desc": "Ускоренная доставка с дополнительной стоимостью",
|
||||||
|
"extended": "Расширенные (8+ недель)",
|
||||||
|
"extended_desc": "Гибкие сроки с оптимизацией стоимости"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Оценка проекта",
|
||||||
|
"subtitle": "Ваша расчетная стоимость проекта",
|
||||||
|
"nav_title": "Результат",
|
||||||
|
"estimated_price": "Расчетная цена",
|
||||||
|
"price_note": "Это приблизительная стоимость. Итоговая цена может варьироваться в зависимости от сложности проекта.",
|
||||||
|
"summary": "Сводка проекта",
|
||||||
|
"get_quote": "Получить подробное предложение",
|
||||||
|
"contact_note": "Свяжитесь с нами для подробной консультации и точного предложения.",
|
||||||
|
"recalculate": "Рассчитать снова",
|
||||||
|
"selected_services": "Выбранные услуги",
|
||||||
|
"complexity": "Сложность",
|
||||||
|
"timeline": "Сроки"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Свяжитесь с нами",
|
||||||
|
"subtitle": "Мы здесь, чтобы помочь воплотить ваши идеи в жизнь"
|
||||||
|
},
|
||||||
|
"ready_title": "Готовы начать свой проект?",
|
||||||
|
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
||||||
|
"form": {
|
||||||
|
"title": "Запрос проекта",
|
||||||
|
"name": "Имя",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Телефон",
|
||||||
|
"message": "Сообщение",
|
||||||
|
"submit": "Отправить запрос",
|
||||||
|
"success": "Запрос успешно отправлен",
|
||||||
|
"error": "Произошла ошибка при отправке запроса",
|
||||||
|
"service": {
|
||||||
|
"title": "Интересующая услуга",
|
||||||
|
"select": "Выберите интересующую услугу",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильное приложение",
|
||||||
|
"design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"consulting": "Консультирование",
|
||||||
|
"other": "Другое"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Контактная информация"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Телефонный запрос",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Пн-Пт 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Email запрос",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "Ответ в течение 24 часов"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "Для быстрого ответа"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Адрес офиса",
|
||||||
|
"line1": "ул. Тегеран-ро, 123, Каннам-гу",
|
||||||
|
"line2": "Сеул, Южная Корея"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Готовы?",
|
||||||
|
"start": "Начать",
|
||||||
|
"question": "Есть вопросы?",
|
||||||
|
"subtitle": "Мы предоставляем консультации по проектам"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"description": "Свяжитесь с нами в любое время для запросов по проектам или консультации"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "О SmartSolTech",
|
||||||
|
"subtitle": "Создаем будущее с инновациями и технологиями"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Информация о компании",
|
||||||
|
"description1": "SmartSolTech - технологическая компания, основанная в 2020 году, признанная за экспертизу в веб-разработке, разработке мобильных приложений и UI/UX дизайне.",
|
||||||
|
"description2": "Мы точно понимаем потребности клиентов и предоставляем инновационные решения, используя новейшие технологии."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Завершенных проектов",
|
||||||
|
"experience": "Лет опыта",
|
||||||
|
"clients": "Довольных клиентов"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Наша миссия",
|
||||||
|
"description": "Наша миссия - поддерживать рост бизнеса клиентов через технологии и лидировать в цифровых инновациях."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Инновации",
|
||||||
|
"description": "Мы предоставляем инновационные решения через постоянные исследования и внедрение передовых технологий."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Качество",
|
||||||
|
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Партнерство",
|
||||||
|
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Мы будем расти вместе",
|
||||||
|
"subtitle": "Превратите свои идеи в реальность",
|
||||||
|
"button": "Связаться с нами"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "О нас",
|
||||||
|
"description": "SmartSolTech - профессиональная компания разработки, которая поддерживает рост бизнеса клиентов инновационными технологиями"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"company": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Быстрые ссылки"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "ул. Тегеран-ро, 123, Каннам-гу, Сеул"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. Все права защищены.",
|
||||||
|
"privacy": "Политика конфиденциальности",
|
||||||
|
"terms": "Условия использования"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Светлая тема",
|
||||||
|
"dark": "Темная тема",
|
||||||
|
"toggle": "Переключить тему"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Загрузка...",
|
||||||
|
"error": "Произошла ошибка",
|
||||||
|
"success": "Успешно",
|
||||||
|
"view_more": "Смотреть больше",
|
||||||
|
"back": "Назад",
|
||||||
|
"next": "Далее",
|
||||||
|
"previous": "Предыдущий",
|
||||||
|
"view_details": "Подробнее"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Инновационная веб-разработка, разработка мобильных приложений, UI/UX дизайн",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, Корея",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Вход в админ-панель",
|
||||||
|
"dashboard": "Панель управления",
|
||||||
|
"title": "SmartSolTech Админ"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Страница не найдена",
|
||||||
|
"error_occurred": "Произошла ошибка",
|
||||||
|
"title": "Ошибка - SmartSolTech",
|
||||||
|
"default_title": "Произошла ошибка",
|
||||||
|
"default_message": "Возникла проблема при обработке запроса.",
|
||||||
|
"back_home": "Вернуться на главную",
|
||||||
|
"go_back": "Вернуться",
|
||||||
|
"need_help": "Нужна помощь?",
|
||||||
|
"help_message": "Если проблема повторяется, свяжитесь с нами в любое время.",
|
||||||
|
"contact_support": "Связаться с поддержкой"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Главная страница",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
}
|
||||||
|
}
|
||||||
425
.history/locales/ru_20251026095240.json
Normal file
425
.history/locales/ru_20251026095240.json
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
{
|
||||||
|
"navigation": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор",
|
||||||
|
"admin": "Админ"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": {
|
||||||
|
"smart": "Умные",
|
||||||
|
"solutions": "Решения"
|
||||||
|
},
|
||||||
|
"subtitle": "Развивайте свой бизнес с инновационными технологиями",
|
||||||
|
"description": "Инновационная веб-разработка, мобильные приложения, UI/UX дизайн для цифровой трансформации вашего бизнеса",
|
||||||
|
"cta": {
|
||||||
|
"start": "Начать",
|
||||||
|
"portfolio": "Смотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": {
|
||||||
|
"our": "Наши",
|
||||||
|
"services": "Услуги"
|
||||||
|
},
|
||||||
|
"subtitle": "Профессиональные услуги разработки для воплощения ваших идей в реальность",
|
||||||
|
"description": "Цифровые решения с использованием передовых технологий и творческих идей",
|
||||||
|
"view_all": "Посмотреть все услуги",
|
||||||
|
"web": {
|
||||||
|
"title": "Веб-разработка",
|
||||||
|
"description": "Адаптивные сайты и веб-приложения",
|
||||||
|
"price": "От $500"
|
||||||
|
},
|
||||||
|
"mobile": {
|
||||||
|
"title": "Мобильные приложения",
|
||||||
|
"description": "Разработка нативных приложений для iOS и Android",
|
||||||
|
"price": "От $1,000"
|
||||||
|
},
|
||||||
|
"design": {
|
||||||
|
"title": "UI/UX Дизайн",
|
||||||
|
"description": "Дизайн интерфейсов и пользовательского опыта",
|
||||||
|
"price": "От $300"
|
||||||
|
},
|
||||||
|
"marketing": {
|
||||||
|
"title": "Цифровой маркетинг",
|
||||||
|
"description": "SEO, SMM, управление рекламой",
|
||||||
|
"price": "От $200"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Услуги",
|
||||||
|
"description": "Ознакомьтесь с профессиональными услугами SmartSolTech. Веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг и другие технологические решения.",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, цифровой маркетинг, технологические решения, SmartSolTech"
|
||||||
|
},
|
||||||
|
"hero": {
|
||||||
|
"title": "Наши",
|
||||||
|
"title_highlight": "Услуги",
|
||||||
|
"subtitle": "Поддержка роста бизнеса с инновационными технологиями"
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"starting_price": "Начальная цена",
|
||||||
|
"consultation": "консультация",
|
||||||
|
"contact": "Связаться",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"popular": "Популярно",
|
||||||
|
"coming_soon": "Услуги скоро появятся",
|
||||||
|
"coming_soon_desc": "Скоро мы предложим различные услуги!"
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"title": "Процесс реализации проекта",
|
||||||
|
"subtitle": "Мы ведем проекты с системным и профессиональным подходом",
|
||||||
|
"step1": {
|
||||||
|
"title": "Консультация и планирование",
|
||||||
|
"description": "Точно понимаем требования клиента и планируем оптимальное решение"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Дизайн и проектирование",
|
||||||
|
"description": "Проектируем интуитивный дизайн, ориентированный на пользователя, и надежную системную архитектуру"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"title": "Разработка и реализация",
|
||||||
|
"description": "Разрабатываем эффективные и масштабируемые решения, используя новейшие технологии и лучшие практики"
|
||||||
|
},
|
||||||
|
"step4": {
|
||||||
|
"title": "Тестирование и развертывание",
|
||||||
|
"description": "Обеспечиваем качество через тщательное тестирование и проводим стабильное развертывание"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"why_choose": {
|
||||||
|
"title": "Почему стоит выбрать SmartSolTech?",
|
||||||
|
"modern_tech": {
|
||||||
|
"title": "Использование современных технологий",
|
||||||
|
"description": "Всегда отслеживаем новейшие технологические тренды и используем проверенный технологический стек для предоставления футуристических решений."
|
||||||
|
},
|
||||||
|
"expert_team": {
|
||||||
|
"title": "Экспертная команда",
|
||||||
|
"description": "Команда, состоящая из экспертов в каждой области, сотрудничает для обеспечения результатов высочайшего качества."
|
||||||
|
},
|
||||||
|
"fast_response": {
|
||||||
|
"title": "Быстрое реагирование",
|
||||||
|
"description": "Завершаем проекты в установленные сроки благодаря быстрой коммуникации и эффективному управлению проектами."
|
||||||
|
},
|
||||||
|
"continuous_support": {
|
||||||
|
"title": "Постоянная поддержка",
|
||||||
|
"description": "Поддерживаем долгосрочное партнерство через постоянное обслуживание и техническую поддержку даже после завершения проекта."
|
||||||
|
},
|
||||||
|
"quality_guarantee": {
|
||||||
|
"title": "Гарантия качества",
|
||||||
|
"subtitle": "Для удовлетворения клиентов\nСервис высочайшего качества"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Готовы начать проект?",
|
||||||
|
"subtitle": "Мы предложим оптимальное решение через бесплатную консультацию",
|
||||||
|
"free_consultation": "Подать заявку на бесплатную консультацию",
|
||||||
|
"calculate_cost": "Рассчитать стоимость",
|
||||||
|
"view_portfolio": "Посмотреть портфолио"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio": {
|
||||||
|
"title": {
|
||||||
|
"recent": "Недавние",
|
||||||
|
"projects": "Проекты"
|
||||||
|
},
|
||||||
|
"subtitle": "Ознакомьтесь с успешно завершенными проектами",
|
||||||
|
"description": "Посмотрите на проекты, выполненные для успеха клиентов",
|
||||||
|
"view_details": "Подробнее",
|
||||||
|
"view_all": "Посмотреть все портфолио",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильные приложения",
|
||||||
|
"uiux": "UI/UX Дизайн"
|
||||||
|
},
|
||||||
|
"project_details": "Детали проекта",
|
||||||
|
"default": {
|
||||||
|
"ecommerce": "Электронная коммерция",
|
||||||
|
"title": "Платформа электронной коммерции",
|
||||||
|
"description": "Современное решение для интернет-торговли с интуитивным интерфейсом"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Портфолио",
|
||||||
|
"description": "Ознакомьтесь с разнообразными проектами и историями успеха SmartSolTech. Портфолио веб-разработки, мобильных приложений, UI/UX дизайна.",
|
||||||
|
"keywords": "портфолио, веб-разработка, мобильные приложения, UI/UX дизайн, проекты, SmartSolTech"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"portfolio_page": {
|
||||||
|
"title": "Наше портфолио",
|
||||||
|
"subtitle": "Откройте для себя инновационные проекты и креативные решения",
|
||||||
|
"categories": {
|
||||||
|
"all": "Все",
|
||||||
|
"web-development": "Веб-разработка",
|
||||||
|
"mobile-app": "Мобильные приложения",
|
||||||
|
"ui-ux-design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"marketing": "Цифровой маркетинг"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"details": "Подробнее",
|
||||||
|
"projectDetails": "Детали проекта",
|
||||||
|
"loadMore": "Загрузить больше проектов",
|
||||||
|
"contact": "Заказать проект",
|
||||||
|
"calculate": "Рассчитать стоимость"
|
||||||
|
},
|
||||||
|
"empty": {
|
||||||
|
"title": "Портфолио пока пусто",
|
||||||
|
"subtitle": "Скоро мы представим потрясающие проекты!"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Станьте звездой следующего проекта",
|
||||||
|
"subtitle": "Создавайте инновационные цифровые решения вместе с нами"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"featured": "РЕКОМЕНДУЕМОЕ",
|
||||||
|
"views": "просмотров",
|
||||||
|
"likes": "лайков"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculator": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для получения точной оценки стоимости в реальном времени",
|
||||||
|
"next_step": "Следующий шаг",
|
||||||
|
"prev_step": "Предыдущий шаг",
|
||||||
|
"calculate": "Рассчитать",
|
||||||
|
"reset": "Сброс",
|
||||||
|
"live_update": "Обновление в реальном времени",
|
||||||
|
"meta": {
|
||||||
|
"title": "Калькулятор стоимости проекта",
|
||||||
|
"description": "Рассчитайте стоимость вашего проекта веб-разработки, мобильного приложения или дизайна с помощью нашего интерактивного калькулятора"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Проверьте оценку вашего проекта",
|
||||||
|
"subtitle": "Выберите нужные услуги и требования для расчета стоимости в реальном времени",
|
||||||
|
"button": "Использовать калькулятор стоимости"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"title": "Выберите ваши услуги",
|
||||||
|
"nav_title": "Шаг 1: Услуги",
|
||||||
|
"subtitle": "Выберите услуги, необходимые для вашего проекта"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"title": "Детали проекта",
|
||||||
|
"nav_title": "Шаг 2: Детали",
|
||||||
|
"subtitle": "Расскажите нам о сложности и сроках вашего проекта"
|
||||||
|
},
|
||||||
|
"complexity": {
|
||||||
|
"title": "Сложность проекта",
|
||||||
|
"simple": "Простой",
|
||||||
|
"simple_desc": "Базовые функции и стандартный функционал",
|
||||||
|
"medium": "Средний",
|
||||||
|
"medium_desc": "Пользовательские функции и интеграции",
|
||||||
|
"complex": "Сложный",
|
||||||
|
"complex_desc": "Продвинутые функции и сложные интеграции"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"title": "Сроки проекта",
|
||||||
|
"standard": "Стандартные (4-8 недель)",
|
||||||
|
"standard_desc": "Обычные сроки разработки",
|
||||||
|
"rush": "Срочные (2-4 недели)",
|
||||||
|
"rush_desc": "Ускоренная доставка с дополнительной стоимостью",
|
||||||
|
"extended": "Расширенные (8+ недель)",
|
||||||
|
"extended_desc": "Гибкие сроки с оптимизацией стоимости"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"title": "Оценка проекта",
|
||||||
|
"subtitle": "Ваша расчетная стоимость проекта",
|
||||||
|
"nav_title": "Результат",
|
||||||
|
"estimated_price": "Расчетная цена",
|
||||||
|
"price_note": "Это приблизительная стоимость. Итоговая цена может варьироваться в зависимости от сложности проекта.",
|
||||||
|
"summary": "Сводка проекта",
|
||||||
|
"get_quote": "Получить подробное предложение",
|
||||||
|
"contact_note": "Свяжитесь с нами для подробной консультации и точного предложения.",
|
||||||
|
"recalculate": "Рассчитать снова",
|
||||||
|
"selected_services": "Выбранные услуги",
|
||||||
|
"complexity": "Сложность",
|
||||||
|
"timeline": "Сроки"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"hero": {
|
||||||
|
"title": "Свяжитесь с нами",
|
||||||
|
"subtitle": "Мы здесь, чтобы помочь воплотить ваши идеи в жизнь"
|
||||||
|
},
|
||||||
|
"ready_title": "Готовы начать свой проект?",
|
||||||
|
"ready_description": "Превратите свои идеи в реальность. Эксперты предоставят лучшие решения.",
|
||||||
|
"form": {
|
||||||
|
"title": "Запрос проекта",
|
||||||
|
"name": "Имя",
|
||||||
|
"email": "Email",
|
||||||
|
"phone": "Телефон",
|
||||||
|
"message": "Сообщение",
|
||||||
|
"submit": "Отправить запрос",
|
||||||
|
"success": "Запрос успешно отправлен",
|
||||||
|
"error": "Произошла ошибка при отправке запроса",
|
||||||
|
"service": {
|
||||||
|
"title": "Интересующая услуга",
|
||||||
|
"select": "Выберите интересующую услугу",
|
||||||
|
"web": "Веб-разработка",
|
||||||
|
"mobile": "Мобильное приложение",
|
||||||
|
"design": "UI/UX Дизайн",
|
||||||
|
"branding": "Брендинг",
|
||||||
|
"consulting": "Консультирование",
|
||||||
|
"other": "Другое"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"title": "Контактная информация"
|
||||||
|
},
|
||||||
|
"phone": {
|
||||||
|
"title": "Телефонный запрос",
|
||||||
|
"number": "+82-2-1234-5678",
|
||||||
|
"hours": "Пн-Пт 9:00-18:00"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"title": "Email запрос",
|
||||||
|
"address": "info@smartsoltech.co.kr",
|
||||||
|
"response": "Ответ в течение 24 часов"
|
||||||
|
},
|
||||||
|
"telegram": {
|
||||||
|
"title": "Telegram",
|
||||||
|
"subtitle": "Для быстрого ответа"
|
||||||
|
},
|
||||||
|
"address": {
|
||||||
|
"title": "Адрес офиса",
|
||||||
|
"line1": "ул. Тегеран-ро, 123, Каннам-гу",
|
||||||
|
"line2": "Сеул, Южная Корея"
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"ready": "Готовы?",
|
||||||
|
"start": "Начать",
|
||||||
|
"question": "Есть вопросы?",
|
||||||
|
"subtitle": "Мы предоставляем консультации по проектам"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"description": "Свяжитесь с нами в любое время для запросов по проектам или консультации"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"hero": {
|
||||||
|
"title": "О SmartSolTech",
|
||||||
|
"subtitle": "Создаем будущее с инновациями и технологиями"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"title": "Информация о компании",
|
||||||
|
"description1": "SmartSolTech - технологическая компания, основанная в 2020 году, признанная за экспертизу в веб-разработке, разработке мобильных приложений и UI/UX дизайне.",
|
||||||
|
"description2": "Мы точно понимаем потребности клиентов и предоставляем инновационные решения, используя новейшие технологии."
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"projects": "Завершенных проектов",
|
||||||
|
"experience": "Лет опыта",
|
||||||
|
"clients": "Довольных клиентов"
|
||||||
|
},
|
||||||
|
"mission": {
|
||||||
|
"title": "Наша миссия",
|
||||||
|
"description": "Наша миссия - поддерживать рост бизнеса клиентов через технологии и лидировать в цифровых инновациях."
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"innovation": {
|
||||||
|
"title": "Инновации",
|
||||||
|
"description": "Мы предоставляем инновационные решения через постоянные исследования и внедрение передовых технологий."
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"title": "Качество",
|
||||||
|
"description": "Мы поддерживаем высокие стандарты качества и предоставляем высококачественные продукты, которыми клиенты могут быть довольны."
|
||||||
|
},
|
||||||
|
"partnership": {
|
||||||
|
"title": "Партнерство",
|
||||||
|
"description": "Мы создаем лучшие результаты через тесное общение и сотрудничество с клиентами."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cta": {
|
||||||
|
"title": "Мы будем расти вместе",
|
||||||
|
"subtitle": "Превратите свои идеи в реальность",
|
||||||
|
"button": "Связаться с нами"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"title": "О нас",
|
||||||
|
"description": "SmartSolTech - профессиональная компания разработки, которая поддерживает рост бизнеса клиентов инновационными технологиями"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"company": {
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"title": "Быстрые ссылки"
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"title": "Контакты",
|
||||||
|
"email": "info@smartsoltech.co.kr",
|
||||||
|
"phone": "+82-2-1234-5678",
|
||||||
|
"address": "ул. Тегеран-ро, 123, Каннам-гу, Сеул"
|
||||||
|
},
|
||||||
|
"copyright": "© {{year}} SmartSolTech. Все права защищены.",
|
||||||
|
"privacy": "Политика конфиденциальности",
|
||||||
|
"terms": "Условия использования"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"light": "Светлая тема",
|
||||||
|
"dark": "Темная тема",
|
||||||
|
"toggle": "Переключить тему"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"english": "English",
|
||||||
|
"korean": "한국어",
|
||||||
|
"russian": "Русский",
|
||||||
|
"kazakh": "Қазақша"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"loading": "Загрузка...",
|
||||||
|
"error": "Произошла ошибка",
|
||||||
|
"success": "Успешно",
|
||||||
|
"view_more": "Смотреть больше",
|
||||||
|
"back": "Назад",
|
||||||
|
"next": "Далее",
|
||||||
|
"previous": "Предыдущий",
|
||||||
|
"view_details": "Подробнее"
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"description": "SmartSolTech - Инновационная веб-разработка, разработка мобильных приложений, UI/UX дизайн",
|
||||||
|
"keywords": "веб-разработка, мобильные приложения, UI/UX дизайн, Корея",
|
||||||
|
"title": "SmartSolTech"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"home": "Главная",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
},
|
||||||
|
"admin": {
|
||||||
|
"login": "Вход в админ-панель",
|
||||||
|
"dashboard": "Панель управления",
|
||||||
|
"title": "SmartSolTech Админ"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "SmartSolTech",
|
||||||
|
"description": "Специалист цифровых решений, лидирующий в инновациях",
|
||||||
|
"email": "info@smartsoltech.kr",
|
||||||
|
"phone": "+82-10-1234-5678"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"page_not_found": "Страница не найдена",
|
||||||
|
"error_occurred": "Произошла ошибка",
|
||||||
|
"title": "Ошибка - SmartSolTech",
|
||||||
|
"default_title": "Произошла ошибка",
|
||||||
|
"default_message": "Возникла проблема при обработке запроса.",
|
||||||
|
"back_home": "Вернуться на главную",
|
||||||
|
"go_back": "Вернуться",
|
||||||
|
"need_help": "Нужна помощь?",
|
||||||
|
"help_message": "Если проблема повторяется, свяжитесь с нами в любое время.",
|
||||||
|
"contact_support": "Связаться с поддержкой"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"home": "Главная страница",
|
||||||
|
"about": "О нас",
|
||||||
|
"services": "Услуги",
|
||||||
|
"portfolio": "Портфолио",
|
||||||
|
"contact": "Контакты",
|
||||||
|
"calculator": "Калькулятор"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
const jwt = require('jsonwebtoken');
|
|
||||||
const User = require('../models/User');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Authentication middleware
|
|
||||||
* Verifies JWT token and attaches user to request
|
|
||||||
*/
|
|
||||||
const authenticateToken = async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
const authHeader = req.headers['authorization'];
|
|
||||||
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
|
|
||||||
|
|
||||||
if (!token) {
|
|
||||||
return res.status(401).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Access token required'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
||||||
const user = await User.findById(decoded.userId).select('-password');
|
|
||||||
|
|
||||||
if (!user || !user.isActive) {
|
|
||||||
return res.status(401).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Invalid or inactive user'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
req.user = user;
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Token verification error:', error);
|
|
||||||
return res.status(403).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Invalid token'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Session-based authentication middleware
|
|
||||||
* For web pages using sessions
|
|
||||||
*/
|
|
||||||
const authenticateSession = async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
if (!req.session.userId) {
|
|
||||||
req.flash('error', '로그인이 필요합니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
const user = await User.findById(req.session.userId).select('-password');
|
|
||||||
|
|
||||||
if (!user || !user.isActive) {
|
|
||||||
req.session.destroy();
|
|
||||||
req.flash('error', '유효하지 않은 사용자입니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
req.user = user;
|
|
||||||
res.locals.user = user;
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Session authentication error:', error);
|
|
||||||
req.session.destroy();
|
|
||||||
req.flash('error', '인증 오류가 발생했습니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Admin role middleware
|
|
||||||
* Requires user to be authenticated and have admin role
|
|
||||||
*/
|
|
||||||
const requireAdmin = (req, res, next) => {
|
|
||||||
if (!req.user) {
|
|
||||||
return res.status(401).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Authentication required'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.user.role !== 'admin') {
|
|
||||||
return res.status(403).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Admin access required'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Admin session middleware for web pages
|
|
||||||
*/
|
|
||||||
const requireAdminSession = (req, res, next) => {
|
|
||||||
if (!req.user) {
|
|
||||||
req.flash('error', '로그인이 필요합니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.user.role !== 'admin') {
|
|
||||||
req.flash('error', '관리자 권한이 필요합니다.');
|
|
||||||
return res.redirect('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Optional authentication middleware
|
|
||||||
* Attaches user if token exists but doesn't require it
|
|
||||||
*/
|
|
||||||
const optionalAuth = async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
// Check session first
|
|
||||||
if (req.session.userId) {
|
|
||||||
const user = await User.findById(req.session.userId).select('-password');
|
|
||||||
if (user && user.isActive) {
|
|
||||||
req.user = user;
|
|
||||||
res.locals.user = user;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check JWT token if no session
|
|
||||||
if (!req.user) {
|
|
||||||
const authHeader = req.headers['authorization'];
|
|
||||||
const token = authHeader && authHeader.split(' ')[1];
|
|
||||||
|
|
||||||
if (token) {
|
|
||||||
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
||||||
const user = await User.findById(decoded.userId).select('-password');
|
|
||||||
|
|
||||||
if (user && user.isActive) {
|
|
||||||
req.user = user;
|
|
||||||
res.locals.user = user;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
// Continue without authentication if token is invalid
|
|
||||||
next();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
authenticateToken,
|
|
||||||
authenticateSession,
|
|
||||||
requireAdmin,
|
|
||||||
requireAdminSession,
|
|
||||||
optionalAuth
|
|
||||||
};
|
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
const jwt = require('jsonwebtoken');
|
|
||||||
const User = require('../models/User');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Authentication middleware
|
|
||||||
* Verifies JWT token and attaches user to request
|
|
||||||
*/
|
|
||||||
const authenticateToken = async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
const authHeader = req.headers['authorization'];
|
|
||||||
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
|
|
||||||
|
|
||||||
if (!token) {
|
|
||||||
return res.status(401).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Access token required'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
||||||
const user = await User.findById(decoded.userId).select('-password');
|
|
||||||
|
|
||||||
if (!user || !user.isActive) {
|
|
||||||
return res.status(401).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Invalid or inactive user'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
req.user = user;
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Token verification error:', error);
|
|
||||||
return res.status(403).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Invalid token'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Session-based authentication middleware
|
|
||||||
* For web pages using sessions
|
|
||||||
*/
|
|
||||||
const authenticateSession = async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
if (!req.session.userId) {
|
|
||||||
req.flash('error', '로그인이 필요합니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
const user = await User.findById(req.session.userId).select('-password');
|
|
||||||
|
|
||||||
if (!user || !user.isActive) {
|
|
||||||
req.session.destroy();
|
|
||||||
req.flash('error', '유효하지 않은 사용자입니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
req.user = user;
|
|
||||||
res.locals.user = user;
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Session authentication error:', error);
|
|
||||||
req.session.destroy();
|
|
||||||
req.flash('error', '인증 오류가 발생했습니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Admin role middleware
|
|
||||||
* Requires user to be authenticated and have admin role
|
|
||||||
*/
|
|
||||||
const requireAdmin = (req, res, next) => {
|
|
||||||
if (!req.user) {
|
|
||||||
return res.status(401).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Authentication required'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.user.role !== 'admin') {
|
|
||||||
return res.status(403).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Admin access required'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Admin session middleware for web pages
|
|
||||||
*/
|
|
||||||
const requireAdminSession = (req, res, next) => {
|
|
||||||
if (!req.user) {
|
|
||||||
req.flash('error', '로그인이 필요합니다.');
|
|
||||||
return res.redirect('/auth/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (req.user.role !== 'admin') {
|
|
||||||
req.flash('error', '관리자 권한이 필요합니다.');
|
|
||||||
return res.redirect('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Optional authentication middleware
|
|
||||||
* Attaches user if token exists but doesn't require it
|
|
||||||
*/
|
|
||||||
const optionalAuth = async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
// Check session first
|
|
||||||
if (req.session.userId) {
|
|
||||||
const user = await User.findById(req.session.userId).select('-password');
|
|
||||||
if (user && user.isActive) {
|
|
||||||
req.user = user;
|
|
||||||
res.locals.user = user;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check JWT token if no session
|
|
||||||
if (!req.user) {
|
|
||||||
const authHeader = req.headers['authorization'];
|
|
||||||
const token = authHeader && authHeader.split(' ')[1];
|
|
||||||
|
|
||||||
if (token) {
|
|
||||||
const decoded = jwt.verify(token, process.env.JWT_SECRET);
|
|
||||||
const user = await User.findById(decoded.userId).select('-password');
|
|
||||||
|
|
||||||
if (user && user.isActive) {
|
|
||||||
req.user = user;
|
|
||||||
res.locals.user = user;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
// Continue without authentication if token is invalid
|
|
||||||
next();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
authenticateToken,
|
|
||||||
authenticateSession,
|
|
||||||
requireAdmin,
|
|
||||||
requireAdminSession,
|
|
||||||
optionalAuth
|
|
||||||
};
|
|
||||||
@@ -1,310 +0,0 @@
|
|||||||
/**
|
|
||||||
* Validation middleware for various data types
|
|
||||||
*/
|
|
||||||
|
|
||||||
const { body, validationResult } = require('express-validator');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validation error handler
|
|
||||||
*/
|
|
||||||
const handleValidationErrors = (req, res, next) => {
|
|
||||||
const errors = validationResult(req);
|
|
||||||
|
|
||||||
if (!errors.isEmpty()) {
|
|
||||||
// For API requests
|
|
||||||
if (req.xhr || req.headers.accept?.includes('application/json')) {
|
|
||||||
return res.status(400).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Validation failed',
|
|
||||||
errors: errors.array()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// For web requests
|
|
||||||
const errorMessages = errors.array().map(error => error.msg);
|
|
||||||
req.flash('error', errorMessages);
|
|
||||||
return res.redirect('back');
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Contact form validation
|
|
||||||
*/
|
|
||||||
const validateContactForm = [
|
|
||||||
body('name')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 50 })
|
|
||||||
.withMessage('이름은 2-50자 사이여야 합니다.')
|
|
||||||
.matches(/^[a-zA-Z가-힣\s]+$/)
|
|
||||||
.withMessage('이름에는 한글, 영문, 공백만 사용할 수 있습니다.'),
|
|
||||||
|
|
||||||
body('email')
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.')
|
|
||||||
.normalizeEmail(),
|
|
||||||
|
|
||||||
body('phone')
|
|
||||||
.optional()
|
|
||||||
.matches(/^[0-9\-\+\(\)\s]+$/)
|
|
||||||
.withMessage('유효한 전화번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('company')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 100 })
|
|
||||||
.withMessage('회사명은 100자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('service')
|
|
||||||
.isIn(['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'digital-marketing', 'consulting', 'other'])
|
|
||||||
.withMessage('유효한 서비스를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('budget')
|
|
||||||
.optional()
|
|
||||||
.isIn(['under-500', '500-1000', '1000-3000', '3000-5000', '5000-10000', 'over-10000', 'discuss'])
|
|
||||||
.withMessage('유효한 예산 범위를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('message')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 10, max: 2000 })
|
|
||||||
.withMessage('메시지는 10-2000자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User registration validation
|
|
||||||
*/
|
|
||||||
const validateRegistration = [
|
|
||||||
body('name')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 50 })
|
|
||||||
.withMessage('이름은 2-50자 사이여야 합니다.')
|
|
||||||
.matches(/^[a-zA-Z가-힣\s]+$/)
|
|
||||||
.withMessage('이름에는 한글, 영문, 공백만 사용할 수 있습니다.'),
|
|
||||||
|
|
||||||
body('email')
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.')
|
|
||||||
.normalizeEmail(),
|
|
||||||
|
|
||||||
body('password')
|
|
||||||
.isLength({ min: 8 })
|
|
||||||
.withMessage('비밀번호는 최소 8자 이상이어야 합니다.')
|
|
||||||
.matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/)
|
|
||||||
.withMessage('비밀번호는 대소문자, 숫자, 특수문자를 포함해야 합니다.'),
|
|
||||||
|
|
||||||
body('confirmPassword')
|
|
||||||
.custom((value, { req }) => {
|
|
||||||
if (value !== req.body.password) {
|
|
||||||
throw new Error('비밀번호 확인이 일치하지 않습니다.');
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User login validation
|
|
||||||
*/
|
|
||||||
const validateLogin = [
|
|
||||||
body('email')
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.')
|
|
||||||
.normalizeEmail(),
|
|
||||||
|
|
||||||
body('password')
|
|
||||||
.isLength({ min: 1 })
|
|
||||||
.withMessage('비밀번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Portfolio validation
|
|
||||||
*/
|
|
||||||
const validatePortfolio = [
|
|
||||||
body('title')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 100 })
|
|
||||||
.withMessage('제목은 2-100자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('description')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 10, max: 5000 })
|
|
||||||
.withMessage('설명은 10-5000자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('shortDescription')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 200 })
|
|
||||||
.withMessage('간단한 설명은 200자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('category')
|
|
||||||
.isIn(['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'marketing'])
|
|
||||||
.withMessage('유효한 카테고리를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('technologies')
|
|
||||||
.optional()
|
|
||||||
.isArray()
|
|
||||||
.withMessage('기술 스택은 배열이어야 합니다.'),
|
|
||||||
|
|
||||||
body('clientName')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 100 })
|
|
||||||
.withMessage('클라이언트 이름은 100자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('projectUrl')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('status')
|
|
||||||
.optional()
|
|
||||||
.isIn(['planning', 'in-progress', 'completed', 'on-hold'])
|
|
||||||
.withMessage('유효한 상태를 선택해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service validation
|
|
||||||
*/
|
|
||||||
const validateService = [
|
|
||||||
body('name')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 100 })
|
|
||||||
.withMessage('서비스명은 2-100자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('description')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 10, max: 5000 })
|
|
||||||
.withMessage('설명은 10-5000자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('shortDescription')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 200 })
|
|
||||||
.withMessage('간단한 설명은 200자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('category')
|
|
||||||
.isIn(['development', 'design', 'marketing', 'consulting'])
|
|
||||||
.withMessage('유효한 카테고리를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('pricing.basePrice')
|
|
||||||
.optional()
|
|
||||||
.isNumeric()
|
|
||||||
.withMessage('기본 가격은 숫자여야 합니다.'),
|
|
||||||
|
|
||||||
body('pricing.priceType')
|
|
||||||
.optional()
|
|
||||||
.isIn(['project', 'hourly', 'monthly'])
|
|
||||||
.withMessage('유효한 가격 유형을 선택해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculator validation
|
|
||||||
*/
|
|
||||||
const validateCalculator = [
|
|
||||||
body('service')
|
|
||||||
.isMongoId()
|
|
||||||
.withMessage('유효한 서비스를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('projectType')
|
|
||||||
.optional()
|
|
||||||
.isIn(['simple', 'medium', 'complex', 'enterprise'])
|
|
||||||
.withMessage('유효한 프로젝트 유형을 선택해주세요.'),
|
|
||||||
|
|
||||||
body('timeline')
|
|
||||||
.optional()
|
|
||||||
.isIn(['urgent', 'normal', 'flexible'])
|
|
||||||
.withMessage('유효한 타임라인을 선택해주세요.'),
|
|
||||||
|
|
||||||
body('features')
|
|
||||||
.optional()
|
|
||||||
.isArray()
|
|
||||||
.withMessage('기능은 배열이어야 합니다.'),
|
|
||||||
|
|
||||||
body('contactInfo.name')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 50 })
|
|
||||||
.withMessage('이름은 2-50자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('contactInfo.email')
|
|
||||||
.optional()
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('contactInfo.phone')
|
|
||||||
.optional()
|
|
||||||
.matches(/^[0-9\-\+\(\)\s]+$/)
|
|
||||||
.withMessage('유효한 전화번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Settings validation
|
|
||||||
*/
|
|
||||||
const validateSettings = [
|
|
||||||
body('siteName')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 1, max: 100 })
|
|
||||||
.withMessage('사이트명은 1-100자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('siteDescription')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 500 })
|
|
||||||
.withMessage('사이트 설명은 500자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('contact.email')
|
|
||||||
.optional()
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('contact.phone')
|
|
||||||
.optional()
|
|
||||||
.matches(/^[0-9\-\+\(\)\s]+$/)
|
|
||||||
.withMessage('유효한 전화번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.facebook')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 Facebook URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.twitter')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 Twitter URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.linkedin')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 LinkedIn URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.instagram')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 Instagram URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
handleValidationErrors,
|
|
||||||
validateContactForm,
|
|
||||||
validateRegistration,
|
|
||||||
validateLogin,
|
|
||||||
validatePortfolio,
|
|
||||||
validateService,
|
|
||||||
validateCalculator,
|
|
||||||
validateSettings
|
|
||||||
};
|
|
||||||
@@ -1,310 +0,0 @@
|
|||||||
/**
|
|
||||||
* Validation middleware for various data types
|
|
||||||
*/
|
|
||||||
|
|
||||||
const { body, validationResult } = require('express-validator');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validation error handler
|
|
||||||
*/
|
|
||||||
const handleValidationErrors = (req, res, next) => {
|
|
||||||
const errors = validationResult(req);
|
|
||||||
|
|
||||||
if (!errors.isEmpty()) {
|
|
||||||
// For API requests
|
|
||||||
if (req.xhr || req.headers.accept?.includes('application/json')) {
|
|
||||||
return res.status(400).json({
|
|
||||||
success: false,
|
|
||||||
message: 'Validation failed',
|
|
||||||
errors: errors.array()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// For web requests
|
|
||||||
const errorMessages = errors.array().map(error => error.msg);
|
|
||||||
req.flash('error', errorMessages);
|
|
||||||
return res.redirect('back');
|
|
||||||
}
|
|
||||||
|
|
||||||
next();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Contact form validation
|
|
||||||
*/
|
|
||||||
const validateContactForm = [
|
|
||||||
body('name')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 50 })
|
|
||||||
.withMessage('이름은 2-50자 사이여야 합니다.')
|
|
||||||
.matches(/^[a-zA-Z가-힣\s]+$/)
|
|
||||||
.withMessage('이름에는 한글, 영문, 공백만 사용할 수 있습니다.'),
|
|
||||||
|
|
||||||
body('email')
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.')
|
|
||||||
.normalizeEmail(),
|
|
||||||
|
|
||||||
body('phone')
|
|
||||||
.optional()
|
|
||||||
.matches(/^[0-9\-\+\(\)\s]+$/)
|
|
||||||
.withMessage('유효한 전화번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('company')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 100 })
|
|
||||||
.withMessage('회사명은 100자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('service')
|
|
||||||
.isIn(['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'digital-marketing', 'consulting', 'other'])
|
|
||||||
.withMessage('유효한 서비스를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('budget')
|
|
||||||
.optional()
|
|
||||||
.isIn(['under-500', '500-1000', '1000-3000', '3000-5000', '5000-10000', 'over-10000', 'discuss'])
|
|
||||||
.withMessage('유효한 예산 범위를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('message')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 10, max: 2000 })
|
|
||||||
.withMessage('메시지는 10-2000자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User registration validation
|
|
||||||
*/
|
|
||||||
const validateRegistration = [
|
|
||||||
body('name')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 50 })
|
|
||||||
.withMessage('이름은 2-50자 사이여야 합니다.')
|
|
||||||
.matches(/^[a-zA-Z가-힣\s]+$/)
|
|
||||||
.withMessage('이름에는 한글, 영문, 공백만 사용할 수 있습니다.'),
|
|
||||||
|
|
||||||
body('email')
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.')
|
|
||||||
.normalizeEmail(),
|
|
||||||
|
|
||||||
body('password')
|
|
||||||
.isLength({ min: 8 })
|
|
||||||
.withMessage('비밀번호는 최소 8자 이상이어야 합니다.')
|
|
||||||
.matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/)
|
|
||||||
.withMessage('비밀번호는 대소문자, 숫자, 특수문자를 포함해야 합니다.'),
|
|
||||||
|
|
||||||
body('confirmPassword')
|
|
||||||
.custom((value, { req }) => {
|
|
||||||
if (value !== req.body.password) {
|
|
||||||
throw new Error('비밀번호 확인이 일치하지 않습니다.');
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User login validation
|
|
||||||
*/
|
|
||||||
const validateLogin = [
|
|
||||||
body('email')
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.')
|
|
||||||
.normalizeEmail(),
|
|
||||||
|
|
||||||
body('password')
|
|
||||||
.isLength({ min: 1 })
|
|
||||||
.withMessage('비밀번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Portfolio validation
|
|
||||||
*/
|
|
||||||
const validatePortfolio = [
|
|
||||||
body('title')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 100 })
|
|
||||||
.withMessage('제목은 2-100자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('description')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 10, max: 5000 })
|
|
||||||
.withMessage('설명은 10-5000자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('shortDescription')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 200 })
|
|
||||||
.withMessage('간단한 설명은 200자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('category')
|
|
||||||
.isIn(['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'marketing'])
|
|
||||||
.withMessage('유효한 카테고리를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('technologies')
|
|
||||||
.optional()
|
|
||||||
.isArray()
|
|
||||||
.withMessage('기술 스택은 배열이어야 합니다.'),
|
|
||||||
|
|
||||||
body('clientName')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 100 })
|
|
||||||
.withMessage('클라이언트 이름은 100자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('projectUrl')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('status')
|
|
||||||
.optional()
|
|
||||||
.isIn(['planning', 'in-progress', 'completed', 'on-hold'])
|
|
||||||
.withMessage('유효한 상태를 선택해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service validation
|
|
||||||
*/
|
|
||||||
const validateService = [
|
|
||||||
body('name')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 100 })
|
|
||||||
.withMessage('서비스명은 2-100자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('description')
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 10, max: 5000 })
|
|
||||||
.withMessage('설명은 10-5000자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('shortDescription')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 200 })
|
|
||||||
.withMessage('간단한 설명은 200자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('category')
|
|
||||||
.isIn(['development', 'design', 'marketing', 'consulting'])
|
|
||||||
.withMessage('유효한 카테고리를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('pricing.basePrice')
|
|
||||||
.optional()
|
|
||||||
.isNumeric()
|
|
||||||
.withMessage('기본 가격은 숫자여야 합니다.'),
|
|
||||||
|
|
||||||
body('pricing.priceType')
|
|
||||||
.optional()
|
|
||||||
.isIn(['project', 'hourly', 'monthly'])
|
|
||||||
.withMessage('유효한 가격 유형을 선택해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculator validation
|
|
||||||
*/
|
|
||||||
const validateCalculator = [
|
|
||||||
body('service')
|
|
||||||
.isMongoId()
|
|
||||||
.withMessage('유효한 서비스를 선택해주세요.'),
|
|
||||||
|
|
||||||
body('projectType')
|
|
||||||
.optional()
|
|
||||||
.isIn(['simple', 'medium', 'complex', 'enterprise'])
|
|
||||||
.withMessage('유효한 프로젝트 유형을 선택해주세요.'),
|
|
||||||
|
|
||||||
body('timeline')
|
|
||||||
.optional()
|
|
||||||
.isIn(['urgent', 'normal', 'flexible'])
|
|
||||||
.withMessage('유효한 타임라인을 선택해주세요.'),
|
|
||||||
|
|
||||||
body('features')
|
|
||||||
.optional()
|
|
||||||
.isArray()
|
|
||||||
.withMessage('기능은 배열이어야 합니다.'),
|
|
||||||
|
|
||||||
body('contactInfo.name')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 2, max: 50 })
|
|
||||||
.withMessage('이름은 2-50자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('contactInfo.email')
|
|
||||||
.optional()
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('contactInfo.phone')
|
|
||||||
.optional()
|
|
||||||
.matches(/^[0-9\-\+\(\)\s]+$/)
|
|
||||||
.withMessage('유효한 전화번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Settings validation
|
|
||||||
*/
|
|
||||||
const validateSettings = [
|
|
||||||
body('siteName')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ min: 1, max: 100 })
|
|
||||||
.withMessage('사이트명은 1-100자 사이여야 합니다.'),
|
|
||||||
|
|
||||||
body('siteDescription')
|
|
||||||
.optional()
|
|
||||||
.trim()
|
|
||||||
.isLength({ max: 500 })
|
|
||||||
.withMessage('사이트 설명은 500자 이하여야 합니다.'),
|
|
||||||
|
|
||||||
body('contact.email')
|
|
||||||
.optional()
|
|
||||||
.isEmail()
|
|
||||||
.withMessage('유효한 이메일 주소를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('contact.phone')
|
|
||||||
.optional()
|
|
||||||
.matches(/^[0-9\-\+\(\)\s]+$/)
|
|
||||||
.withMessage('유효한 전화번호를 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.facebook')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 Facebook URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.twitter')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 Twitter URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.linkedin')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 LinkedIn URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
body('social.instagram')
|
|
||||||
.optional()
|
|
||||||
.isURL()
|
|
||||||
.withMessage('유효한 Instagram URL을 입력해주세요.'),
|
|
||||||
|
|
||||||
handleValidationErrors
|
|
||||||
];
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
handleValidationErrors,
|
|
||||||
validateContactForm,
|
|
||||||
validateRegistration,
|
|
||||||
validateLogin,
|
|
||||||
validatePortfolio,
|
|
||||||
validateService,
|
|
||||||
validateCalculator,
|
|
||||||
validateSettings
|
|
||||||
};
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const contactSchema = new mongoose.Schema({
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
lowercase: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
phone: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
company: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
subject: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
message: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
serviceInterest: {
|
|
||||||
type: String,
|
|
||||||
enum: ['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'consulting', 'other']
|
|
||||||
},
|
|
||||||
budget: {
|
|
||||||
type: String,
|
|
||||||
enum: ['under-1m', '1m-5m', '5m-10m', '10m-20m', '20m-50m', 'over-50m']
|
|
||||||
},
|
|
||||||
timeline: {
|
|
||||||
type: String,
|
|
||||||
enum: ['asap', '1-month', '1-3-months', '3-6-months', 'flexible']
|
|
||||||
},
|
|
||||||
status: {
|
|
||||||
type: String,
|
|
||||||
enum: ['new', 'in-progress', 'replied', 'closed'],
|
|
||||||
default: 'new'
|
|
||||||
},
|
|
||||||
priority: {
|
|
||||||
type: String,
|
|
||||||
enum: ['low', 'medium', 'high', 'urgent'],
|
|
||||||
default: 'medium'
|
|
||||||
},
|
|
||||||
source: {
|
|
||||||
type: String,
|
|
||||||
enum: ['website', 'telegram', 'email', 'phone', 'referral'],
|
|
||||||
default: 'website'
|
|
||||||
},
|
|
||||||
isRead: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
adminNotes: {
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
ipAddress: {
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
userAgent: {
|
|
||||||
type: String
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
contactSchema.index({ status: 1, createdAt: -1 });
|
|
||||||
contactSchema.index({ isRead: 1, createdAt: -1 });
|
|
||||||
contactSchema.index({ email: 1 });
|
|
||||||
|
|
||||||
module.exports = mongoose.model('Contact', contactSchema);
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const contactSchema = new mongoose.Schema({
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
lowercase: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
phone: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
company: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
subject: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
message: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
serviceInterest: {
|
|
||||||
type: String,
|
|
||||||
enum: ['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'consulting', 'other']
|
|
||||||
},
|
|
||||||
budget: {
|
|
||||||
type: String,
|
|
||||||
enum: ['under-1m', '1m-5m', '5m-10m', '10m-20m', '20m-50m', 'over-50m']
|
|
||||||
},
|
|
||||||
timeline: {
|
|
||||||
type: String,
|
|
||||||
enum: ['asap', '1-month', '1-3-months', '3-6-months', 'flexible']
|
|
||||||
},
|
|
||||||
status: {
|
|
||||||
type: String,
|
|
||||||
enum: ['new', 'in-progress', 'replied', 'closed'],
|
|
||||||
default: 'new'
|
|
||||||
},
|
|
||||||
priority: {
|
|
||||||
type: String,
|
|
||||||
enum: ['low', 'medium', 'high', 'urgent'],
|
|
||||||
default: 'medium'
|
|
||||||
},
|
|
||||||
source: {
|
|
||||||
type: String,
|
|
||||||
enum: ['website', 'telegram', 'email', 'phone', 'referral'],
|
|
||||||
default: 'website'
|
|
||||||
},
|
|
||||||
isRead: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
adminNotes: {
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
ipAddress: {
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
userAgent: {
|
|
||||||
type: String
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
contactSchema.index({ status: 1, createdAt: -1 });
|
|
||||||
contactSchema.index({ isRead: 1, createdAt: -1 });
|
|
||||||
contactSchema.index({ email: 1 });
|
|
||||||
|
|
||||||
module.exports = mongoose.model('Contact', contactSchema);
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const portfolioSchema = new mongoose.Schema({
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
shortDescription: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
maxlength: 200
|
|
||||||
},
|
|
||||||
category: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
enum: ['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'e-commerce', 'other']
|
|
||||||
},
|
|
||||||
technologies: [{
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
}],
|
|
||||||
images: [{
|
|
||||||
url: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
alt: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
isPrimary: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
clientName: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
projectUrl: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
githubUrl: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
status: {
|
|
||||||
type: String,
|
|
||||||
enum: ['completed', 'in-progress', 'planning'],
|
|
||||||
default: 'completed'
|
|
||||||
},
|
|
||||||
featured: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
publishedAt: {
|
|
||||||
type: Date,
|
|
||||||
default: Date.now
|
|
||||||
},
|
|
||||||
completedAt: {
|
|
||||||
type: Date
|
|
||||||
},
|
|
||||||
isPublished: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
viewCount: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
likes: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
order: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
seo: {
|
|
||||||
metaTitle: String,
|
|
||||||
metaDescription: String,
|
|
||||||
keywords: [String]
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Index for search and sorting
|
|
||||||
portfolioSchema.index({ title: 'text', description: 'text', technologies: 'text' });
|
|
||||||
portfolioSchema.index({ category: 1, publishedAt: -1 });
|
|
||||||
portfolioSchema.index({ featured: -1, publishedAt: -1 });
|
|
||||||
|
|
||||||
// Virtual for primary image
|
|
||||||
portfolioSchema.virtual('primaryImage').get(function() {
|
|
||||||
const primary = this.images.find(img => img.isPrimary);
|
|
||||||
return primary || (this.images.length > 0 ? this.images[0] : null);
|
|
||||||
});
|
|
||||||
|
|
||||||
portfolioSchema.set('toJSON', { virtuals: true });
|
|
||||||
|
|
||||||
module.exports = mongoose.model('Portfolio', portfolioSchema);
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const portfolioSchema = new mongoose.Schema({
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
shortDescription: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
maxlength: 200
|
|
||||||
},
|
|
||||||
category: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
enum: ['web-development', 'mobile-app', 'ui-ux-design', 'branding', 'e-commerce', 'other']
|
|
||||||
},
|
|
||||||
technologies: [{
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
}],
|
|
||||||
images: [{
|
|
||||||
url: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
alt: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
isPrimary: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
clientName: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
projectUrl: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
githubUrl: {
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
status: {
|
|
||||||
type: String,
|
|
||||||
enum: ['completed', 'in-progress', 'planning'],
|
|
||||||
default: 'completed'
|
|
||||||
},
|
|
||||||
featured: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
publishedAt: {
|
|
||||||
type: Date,
|
|
||||||
default: Date.now
|
|
||||||
},
|
|
||||||
completedAt: {
|
|
||||||
type: Date
|
|
||||||
},
|
|
||||||
isPublished: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
viewCount: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
likes: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
order: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
seo: {
|
|
||||||
metaTitle: String,
|
|
||||||
metaDescription: String,
|
|
||||||
keywords: [String]
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Index for search and sorting
|
|
||||||
portfolioSchema.index({ title: 'text', description: 'text', technologies: 'text' });
|
|
||||||
portfolioSchema.index({ category: 1, publishedAt: -1 });
|
|
||||||
portfolioSchema.index({ featured: -1, publishedAt: -1 });
|
|
||||||
|
|
||||||
// Virtual for primary image
|
|
||||||
portfolioSchema.virtual('primaryImage').get(function() {
|
|
||||||
const primary = this.images.find(img => img.isPrimary);
|
|
||||||
return primary || (this.images.length > 0 ? this.images[0] : null);
|
|
||||||
});
|
|
||||||
|
|
||||||
portfolioSchema.set('toJSON', { virtuals: true });
|
|
||||||
|
|
||||||
module.exports = mongoose.model('Portfolio', portfolioSchema);
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const serviceSchema = new mongoose.Schema({
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
shortDescription: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
maxlength: 150
|
|
||||||
},
|
|
||||||
icon: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
category: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
enum: ['development', 'design', 'consulting', 'marketing', 'maintenance']
|
|
||||||
},
|
|
||||||
features: [{
|
|
||||||
name: String,
|
|
||||||
description: String,
|
|
||||||
included: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
pricing: {
|
|
||||||
basePrice: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
min: 0
|
|
||||||
},
|
|
||||||
currency: {
|
|
||||||
type: String,
|
|
||||||
default: 'KRW'
|
|
||||||
},
|
|
||||||
priceType: {
|
|
||||||
type: String,
|
|
||||||
enum: ['fixed', 'hourly', 'project'],
|
|
||||||
default: 'project'
|
|
||||||
},
|
|
||||||
priceRange: {
|
|
||||||
min: Number,
|
|
||||||
max: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
estimatedTime: {
|
|
||||||
min: {
|
|
||||||
type: Number,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
max: {
|
|
||||||
type: Number,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
unit: {
|
|
||||||
type: String,
|
|
||||||
enum: ['hours', 'days', 'weeks', 'months'],
|
|
||||||
default: 'days'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isActive: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
featured: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
order: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
portfolio: [{
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'Portfolio'
|
|
||||||
}],
|
|
||||||
tags: [{
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
}],
|
|
||||||
seo: {
|
|
||||||
metaTitle: String,
|
|
||||||
metaDescription: String,
|
|
||||||
keywords: [String]
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
serviceSchema.index({ name: 'text', description: 'text', tags: 'text' });
|
|
||||||
serviceSchema.index({ category: 1, featured: -1, order: 1 });
|
|
||||||
|
|
||||||
module.exports = mongoose.model('Service', serviceSchema);
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const serviceSchema = new mongoose.Schema({
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
shortDescription: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
maxlength: 150
|
|
||||||
},
|
|
||||||
icon: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
category: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
enum: ['development', 'design', 'consulting', 'marketing', 'maintenance']
|
|
||||||
},
|
|
||||||
features: [{
|
|
||||||
name: String,
|
|
||||||
description: String,
|
|
||||||
included: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
pricing: {
|
|
||||||
basePrice: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
min: 0
|
|
||||||
},
|
|
||||||
currency: {
|
|
||||||
type: String,
|
|
||||||
default: 'KRW'
|
|
||||||
},
|
|
||||||
priceType: {
|
|
||||||
type: String,
|
|
||||||
enum: ['fixed', 'hourly', 'project'],
|
|
||||||
default: 'project'
|
|
||||||
},
|
|
||||||
priceRange: {
|
|
||||||
min: Number,
|
|
||||||
max: Number
|
|
||||||
}
|
|
||||||
},
|
|
||||||
estimatedTime: {
|
|
||||||
min: {
|
|
||||||
type: Number,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
max: {
|
|
||||||
type: Number,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
unit: {
|
|
||||||
type: String,
|
|
||||||
enum: ['hours', 'days', 'weeks', 'months'],
|
|
||||||
default: 'days'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isActive: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
featured: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
order: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
portfolio: [{
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'Portfolio'
|
|
||||||
}],
|
|
||||||
tags: [{
|
|
||||||
type: String,
|
|
||||||
trim: true
|
|
||||||
}],
|
|
||||||
seo: {
|
|
||||||
metaTitle: String,
|
|
||||||
metaDescription: String,
|
|
||||||
keywords: [String]
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
serviceSchema.index({ name: 'text', description: 'text', tags: 'text' });
|
|
||||||
serviceSchema.index({ category: 1, featured: -1, order: 1 });
|
|
||||||
|
|
||||||
module.exports = mongoose.model('Service', serviceSchema);
|
|
||||||
103
.history/models/Service_20251026221128.js
Normal file
103
.history/models/Service_20251026221128.js
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(150),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
isValidPricing(value) {
|
||||||
|
if (!value.basePrice || value.basePrice < 0) {
|
||||||
|
throw new Error('Base price must be a positive number');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
isValidTime(value) {
|
||||||
|
if (!value.min || !value.max || value.min > value.max) {
|
||||||
|
throw new Error('Invalid estimated time range');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.ARRAY(DataTypes.STRING),
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
96
.history/models/Service_20251026221134.js
Normal file
96
.history/models/Service_20251026221134.js
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(150),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
isValidPricing(value) {
|
||||||
|
if (!value.basePrice || value.basePrice < 0) {
|
||||||
|
throw new Error('Base price must be a positive number');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.ARRAY(DataTypes.STRING),
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
96
.history/models/Service_20251026221140.js
Normal file
96
.history/models/Service_20251026221140.js
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(150),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
isValidPricing(value) {
|
||||||
|
if (!value.basePrice || value.basePrice < 0) {
|
||||||
|
throw new Error('Base price must be a positive number');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
90
.history/models/Service_20251026221146.js
Normal file
90
.history/models/Service_20251026221146.js
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(150),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: {}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
90
.history/models/Service_20251026221152.js
Normal file
90
.history/models/Service_20251026221152.js
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(500),
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: {}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
90
.history/models/Service_20251026221158.js
Normal file
90
.history/models/Service_20251026221158.js
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(500),
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: {}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
91
.history/models/Service_20251026221203.js
Normal file
91
.history/models/Service_20251026221203.js
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(500),
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: 'fas fa-cog'
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: {}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
91
.history/models/Service_20251026221317.js
Normal file
91
.history/models/Service_20251026221317.js
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
const { DataTypes } = require('sequelize');
|
||||||
|
const { sequelize } = require('../config/database');
|
||||||
|
|
||||||
|
const Service = sequelize.define('Service', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.UUID,
|
||||||
|
defaultValue: DataTypes.UUIDV4,
|
||||||
|
primaryKey: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
len: [1, 255]
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.setDataValue('name', value.trim());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
shortDescription: {
|
||||||
|
type: DataTypes.STRING(500),
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: 'fas fa-cog'
|
||||||
|
},
|
||||||
|
category: {
|
||||||
|
type: DataTypes.ENUM(
|
||||||
|
'web-development',
|
||||||
|
'mobile-development',
|
||||||
|
'ui-ux-design',
|
||||||
|
'consulting',
|
||||||
|
'support',
|
||||||
|
'other'
|
||||||
|
),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
features: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
pricing: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
allowNull: true,
|
||||||
|
defaultValue: {}
|
||||||
|
},
|
||||||
|
estimatedTime: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
featured: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
tags: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
seo: {
|
||||||
|
type: DataTypes.JSONB,
|
||||||
|
defaultValue: {}
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'services',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['category', 'featured', 'order']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'gin',
|
||||||
|
fields: ['tags']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = Service;
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const siteSettingsSchema = new mongoose.Schema({
|
|
||||||
siteName: {
|
|
||||||
type: String,
|
|
||||||
default: 'SmartSolTech'
|
|
||||||
},
|
|
||||||
siteDescription: {
|
|
||||||
type: String,
|
|
||||||
default: 'Innovative technology solutions for modern businesses'
|
|
||||||
},
|
|
||||||
logo: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/logo.png'
|
|
||||||
},
|
|
||||||
favicon: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/favicon.ico'
|
|
||||||
},
|
|
||||||
contact: {
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
default: 'info@smartsoltech.kr'
|
|
||||||
},
|
|
||||||
phone: {
|
|
||||||
type: String,
|
|
||||||
default: '+82-10-0000-0000'
|
|
||||||
},
|
|
||||||
address: {
|
|
||||||
type: String,
|
|
||||||
default: 'Seoul, South Korea'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
social: {
|
|
||||||
facebook: String,
|
|
||||||
twitter: String,
|
|
||||||
linkedin: String,
|
|
||||||
instagram: String,
|
|
||||||
github: String,
|
|
||||||
telegram: String
|
|
||||||
},
|
|
||||||
telegram: {
|
|
||||||
botToken: String,
|
|
||||||
chatId: String,
|
|
||||||
isEnabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
seo: {
|
|
||||||
metaTitle: {
|
|
||||||
type: String,
|
|
||||||
default: 'SmartSolTech - Technology Solutions'
|
|
||||||
},
|
|
||||||
metaDescription: {
|
|
||||||
type: String,
|
|
||||||
default: 'Professional web development, mobile apps, and digital solutions in Korea'
|
|
||||||
},
|
|
||||||
keywords: {
|
|
||||||
type: String,
|
|
||||||
default: 'web development, mobile apps, UI/UX design, Korea, technology'
|
|
||||||
},
|
|
||||||
googleAnalytics: String,
|
|
||||||
googleTagManager: String
|
|
||||||
},
|
|
||||||
hero: {
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: 'Smart Technology Solutions'
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
type: String,
|
|
||||||
default: 'We create innovative digital experiences that drive business growth'
|
|
||||||
},
|
|
||||||
backgroundImage: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/hero-bg.jpg'
|
|
||||||
},
|
|
||||||
ctaText: {
|
|
||||||
type: String,
|
|
||||||
default: 'Get Started'
|
|
||||||
},
|
|
||||||
ctaLink: {
|
|
||||||
type: String,
|
|
||||||
default: '#contact'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
about: {
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: 'About SmartSolTech'
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
type: String,
|
|
||||||
default: 'We are a team of passionate developers and designers creating cutting-edge technology solutions.'
|
|
||||||
},
|
|
||||||
image: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/about.jpg'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
maintenance: {
|
|
||||||
isEnabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
message: {
|
|
||||||
type: String,
|
|
||||||
default: 'We are currently performing maintenance. Please check back soon.'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('SiteSettings', siteSettingsSchema);
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
|
|
||||||
const siteSettingsSchema = new mongoose.Schema({
|
|
||||||
siteName: {
|
|
||||||
type: String,
|
|
||||||
default: 'SmartSolTech'
|
|
||||||
},
|
|
||||||
siteDescription: {
|
|
||||||
type: String,
|
|
||||||
default: 'Innovative technology solutions for modern businesses'
|
|
||||||
},
|
|
||||||
logo: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/logo.png'
|
|
||||||
},
|
|
||||||
favicon: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/favicon.ico'
|
|
||||||
},
|
|
||||||
contact: {
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
default: 'info@smartsoltech.kr'
|
|
||||||
},
|
|
||||||
phone: {
|
|
||||||
type: String,
|
|
||||||
default: '+82-10-0000-0000'
|
|
||||||
},
|
|
||||||
address: {
|
|
||||||
type: String,
|
|
||||||
default: 'Seoul, South Korea'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
social: {
|
|
||||||
facebook: String,
|
|
||||||
twitter: String,
|
|
||||||
linkedin: String,
|
|
||||||
instagram: String,
|
|
||||||
github: String,
|
|
||||||
telegram: String
|
|
||||||
},
|
|
||||||
telegram: {
|
|
||||||
botToken: String,
|
|
||||||
chatId: String,
|
|
||||||
isEnabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
seo: {
|
|
||||||
metaTitle: {
|
|
||||||
type: String,
|
|
||||||
default: 'SmartSolTech - Technology Solutions'
|
|
||||||
},
|
|
||||||
metaDescription: {
|
|
||||||
type: String,
|
|
||||||
default: 'Professional web development, mobile apps, and digital solutions in Korea'
|
|
||||||
},
|
|
||||||
keywords: {
|
|
||||||
type: String,
|
|
||||||
default: 'web development, mobile apps, UI/UX design, Korea, technology'
|
|
||||||
},
|
|
||||||
googleAnalytics: String,
|
|
||||||
googleTagManager: String
|
|
||||||
},
|
|
||||||
hero: {
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: 'Smart Technology Solutions'
|
|
||||||
},
|
|
||||||
subtitle: {
|
|
||||||
type: String,
|
|
||||||
default: 'We create innovative digital experiences that drive business growth'
|
|
||||||
},
|
|
||||||
backgroundImage: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/hero-bg.jpg'
|
|
||||||
},
|
|
||||||
ctaText: {
|
|
||||||
type: String,
|
|
||||||
default: 'Get Started'
|
|
||||||
},
|
|
||||||
ctaLink: {
|
|
||||||
type: String,
|
|
||||||
default: '#contact'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
about: {
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: 'About SmartSolTech'
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
type: String,
|
|
||||||
default: 'We are a team of passionate developers and designers creating cutting-edge technology solutions.'
|
|
||||||
},
|
|
||||||
image: {
|
|
||||||
type: String,
|
|
||||||
default: '/images/about.jpg'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
maintenance: {
|
|
||||||
isEnabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
message: {
|
|
||||||
type: String,
|
|
||||||
default: 'We are currently performing maintenance. Please check back soon.'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('SiteSettings', siteSettingsSchema);
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
const bcrypt = require('bcryptjs');
|
|
||||||
|
|
||||||
const userSchema = new mongoose.Schema({
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
unique: true,
|
|
||||||
lowercase: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
minlength: 6
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
role: {
|
|
||||||
type: String,
|
|
||||||
enum: ['admin', 'moderator'],
|
|
||||||
default: 'admin'
|
|
||||||
},
|
|
||||||
avatar: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
isActive: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
lastLogin: {
|
|
||||||
type: Date,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
createdAt: {
|
|
||||||
type: Date,
|
|
||||||
default: Date.now
|
|
||||||
},
|
|
||||||
updatedAt: {
|
|
||||||
type: Date,
|
|
||||||
default: Date.now
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Hash password before saving
|
|
||||||
userSchema.pre('save', async function(next) {
|
|
||||||
if (!this.isModified('password')) return next();
|
|
||||||
|
|
||||||
try {
|
|
||||||
const salt = await bcrypt.genSalt(12);
|
|
||||||
this.password = await bcrypt.hash(this.password, salt);
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
next(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Compare password method
|
|
||||||
userSchema.methods.comparePassword = async function(candidatePassword) {
|
|
||||||
return bcrypt.compare(candidatePassword, this.password);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Update last login
|
|
||||||
userSchema.methods.updateLastLogin = function() {
|
|
||||||
this.lastLogin = new Date();
|
|
||||||
return this.save();
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = mongoose.model('User', userSchema);
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
const mongoose = require('mongoose');
|
|
||||||
const bcrypt = require('bcryptjs');
|
|
||||||
|
|
||||||
const userSchema = new mongoose.Schema({
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
unique: true,
|
|
||||||
lowercase: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
minlength: 6
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
role: {
|
|
||||||
type: String,
|
|
||||||
enum: ['admin', 'moderator'],
|
|
||||||
default: 'admin'
|
|
||||||
},
|
|
||||||
avatar: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
isActive: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
lastLogin: {
|
|
||||||
type: Date,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
createdAt: {
|
|
||||||
type: Date,
|
|
||||||
default: Date.now
|
|
||||||
},
|
|
||||||
updatedAt: {
|
|
||||||
type: Date,
|
|
||||||
default: Date.now
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
timestamps: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Hash password before saving
|
|
||||||
userSchema.pre('save', async function(next) {
|
|
||||||
if (!this.isModified('password')) return next();
|
|
||||||
|
|
||||||
try {
|
|
||||||
const salt = await bcrypt.genSalt(12);
|
|
||||||
this.password = await bcrypt.hash(this.password, salt);
|
|
||||||
next();
|
|
||||||
} catch (error) {
|
|
||||||
next(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Compare password method
|
|
||||||
userSchema.methods.comparePassword = async function(candidatePassword) {
|
|
||||||
return bcrypt.compare(candidatePassword, this.password);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Update last login
|
|
||||||
userSchema.methods.updateLastLogin = function() {
|
|
||||||
this.lastLogin = new Date();
|
|
||||||
return this.save();
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = mongoose.model('User', userSchema);
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "smartsoltech-website",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Modern PWA website for SmartSolTech with admin panel and Telegram integration",
|
|
||||||
"main": "server.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node server.js",
|
|
||||||
"dev": "nodemon server.js",
|
|
||||||
"build": "webpack --mode production",
|
|
||||||
"build:dev": "webpack --mode development",
|
|
||||||
"watch": "webpack --mode development --watch"
|
|
||||||
},
|
|
||||||
"keywords": ["pwa", "nodejs", "express", "telegram", "portfolio", "calculator"],
|
|
||||||
"author": "SmartSolTech",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"mongoose": "^8.0.3",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"jsonwebtoken": "^9.0.2",
|
|
||||||
"express-session": "^1.17.3",
|
|
||||||
"connect-mongo": "^5.1.0",
|
|
||||||
"multer": "^1.4.5-lts.1",
|
|
||||||
"sharp": "^0.33.0",
|
|
||||||
"node-telegram-bot-api": "^0.64.0",
|
|
||||||
"express-rate-limit": "^7.1.5",
|
|
||||||
"helmet": "^7.1.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"compression": "^1.7.4",
|
|
||||||
"morgan": "^1.10.0",
|
|
||||||
"nodemailer": "^6.9.7",
|
|
||||||
"express-validator": "^7.0.1",
|
|
||||||
"socket.io": "^4.7.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"html-webpack-plugin": "^5.5.3",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"terser-webpack-plugin": "^5.3.9",
|
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "smartsoltech-website",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Modern PWA website for SmartSolTech with admin panel and Telegram integration",
|
|
||||||
"main": "server.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node server.js",
|
|
||||||
"dev": "nodemon server.js",
|
|
||||||
"build": "webpack --mode production",
|
|
||||||
"build:dev": "webpack --mode development",
|
|
||||||
"watch": "webpack --mode development --watch"
|
|
||||||
},
|
|
||||||
"keywords": ["pwa", "nodejs", "express", "telegram", "portfolio", "calculator"],
|
|
||||||
"author": "SmartSolTech",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"mongoose": "^8.0.3",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"jsonwebtoken": "^9.0.2",
|
|
||||||
"express-session": "^1.17.3",
|
|
||||||
"connect-mongo": "^5.1.0",
|
|
||||||
"multer": "^1.4.5-lts.1",
|
|
||||||
"sharp": "^0.33.0",
|
|
||||||
"node-telegram-bot-api": "^0.64.0",
|
|
||||||
"express-rate-limit": "^7.1.5",
|
|
||||||
"helmet": "^7.1.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"compression": "^1.7.4",
|
|
||||||
"morgan": "^1.10.0",
|
|
||||||
"nodemailer": "^6.9.7",
|
|
||||||
"express-validator": "^7.0.1",
|
|
||||||
"socket.io": "^4.7.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"html-webpack-plugin": "^5.5.3",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"terser-webpack-plugin": "^5.3.9",
|
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "smartsoltech-website",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Modern PWA website for SmartSolTech with admin panel and Telegram integration",
|
|
||||||
"main": "server.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node server.js",
|
|
||||||
"dev": "node scripts/dev.js",
|
|
||||||
"build": "node scripts/build.js",
|
|
||||||
"init-db": "node scripts/init-db.js",
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"keywords": ["pwa", "nodejs", "express", "telegram", "portfolio", "calculator"],
|
|
||||||
"author": "SmartSolTech",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"mongoose": "^8.0.3",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"jsonwebtoken": "^9.0.2",
|
|
||||||
"express-session": "^1.17.3",
|
|
||||||
"connect-mongo": "^5.1.0",
|
|
||||||
"multer": "^1.4.5-lts.1",
|
|
||||||
"sharp": "^0.33.0",
|
|
||||||
"node-telegram-bot-api": "^0.64.0",
|
|
||||||
"express-rate-limit": "^7.1.5",
|
|
||||||
"helmet": "^7.1.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"compression": "^1.7.4",
|
|
||||||
"morgan": "^1.10.0",
|
|
||||||
"nodemailer": "^6.9.7",
|
|
||||||
"express-validator": "^7.0.1",
|
|
||||||
"socket.io": "^4.7.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"html-webpack-plugin": "^5.5.3",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"terser-webpack-plugin": "^5.3.9",
|
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "smartsoltech-website",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Modern PWA website for SmartSolTech with admin panel and Telegram integration",
|
|
||||||
"main": "server.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node server.js",
|
|
||||||
"dev": "node scripts/dev.js",
|
|
||||||
"build": "node scripts/build.js",
|
|
||||||
"init-db": "node scripts/init-db.js",
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"keywords": ["pwa", "nodejs", "express", "telegram", "portfolio", "calculator"],
|
|
||||||
"author": "SmartSolTech",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"mongoose": "^8.0.3",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"jsonwebtoken": "^9.0.2",
|
|
||||||
"express-session": "^1.17.3",
|
|
||||||
"connect-mongo": "^5.1.0",
|
|
||||||
"multer": "^1.4.5-lts.1",
|
|
||||||
"sharp": "^0.33.0",
|
|
||||||
"node-telegram-bot-api": "^0.64.0",
|
|
||||||
"express-rate-limit": "^7.1.5",
|
|
||||||
"helmet": "^7.1.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"compression": "^1.7.4",
|
|
||||||
"morgan": "^1.10.0",
|
|
||||||
"nodemailer": "^6.9.7",
|
|
||||||
"express-validator": "^7.0.1",
|
|
||||||
"socket.io": "^4.7.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"html-webpack-plugin": "^5.5.3",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"terser-webpack-plugin": "^5.3.9",
|
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "smartsoltech-website",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Modern PWA website for SmartSolTech with admin panel and Telegram integration",
|
|
||||||
"main": "server.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node server.js",
|
|
||||||
"demo": "node server-demo.js",
|
|
||||||
"dev": "node scripts/dev.js",
|
|
||||||
"build": "node scripts/build.js",
|
|
||||||
"init-db": "node scripts/init-db.js",
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"keywords": ["pwa", "nodejs", "express", "telegram", "portfolio", "calculator"],
|
|
||||||
"author": "SmartSolTech",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"mongoose": "^8.0.3",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"jsonwebtoken": "^9.0.2",
|
|
||||||
"express-session": "^1.17.3",
|
|
||||||
"connect-mongo": "^5.1.0",
|
|
||||||
"multer": "^1.4.5-lts.1",
|
|
||||||
"sharp": "^0.33.0",
|
|
||||||
"node-telegram-bot-api": "^0.64.0",
|
|
||||||
"express-rate-limit": "^7.1.5",
|
|
||||||
"helmet": "^7.1.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"compression": "^1.7.4",
|
|
||||||
"morgan": "^1.10.0",
|
|
||||||
"nodemailer": "^6.9.7",
|
|
||||||
"express-validator": "^7.0.1",
|
|
||||||
"socket.io": "^4.7.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"html-webpack-plugin": "^5.5.3",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"terser-webpack-plugin": "^5.3.9",
|
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "smartsoltech-website",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Modern PWA website for SmartSolTech with admin panel and Telegram integration",
|
|
||||||
"main": "server.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node server.js",
|
|
||||||
"demo": "node server-demo.js",
|
|
||||||
"dev": "node scripts/dev.js",
|
|
||||||
"build": "node scripts/build.js",
|
|
||||||
"init-db": "node scripts/init-db.js",
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"keywords": ["pwa", "nodejs", "express", "telegram", "portfolio", "calculator"],
|
|
||||||
"author": "SmartSolTech",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"mongoose": "^8.0.3",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"jsonwebtoken": "^9.0.2",
|
|
||||||
"express-session": "^1.17.3",
|
|
||||||
"connect-mongo": "^5.1.0",
|
|
||||||
"multer": "^1.4.5-lts.1",
|
|
||||||
"sharp": "^0.33.0",
|
|
||||||
"node-telegram-bot-api": "^0.64.0",
|
|
||||||
"express-rate-limit": "^7.1.5",
|
|
||||||
"helmet": "^7.1.0",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"compression": "^1.7.4",
|
|
||||||
"morgan": "^1.10.0",
|
|
||||||
"nodemailer": "^6.9.7",
|
|
||||||
"express-validator": "^7.0.1",
|
|
||||||
"socket.io": "^4.7.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"html-webpack-plugin": "^5.5.3",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"terser-webpack-plugin": "^5.3.9",
|
|
||||||
"workbox-webpack-plugin": "^7.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* Basic reset */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Additional styles for demo */
|
|
||||||
.hero-section {
|
|
||||||
padding: 6rem 0 4rem;
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover {
|
|
||||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-5px);
|
|
||||||
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-gradient {
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-gradient:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading spinner */
|
|
||||||
.loading {
|
|
||||||
display: inline-block;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border: 3px solid rgba(255, 255, 255, 0.3);
|
|
||||||
border-radius: 50%;
|
|
||||||
border-top-color: #fff;
|
|
||||||
animation: spin 1s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
to { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Animations */
|
|
||||||
@keyframes fadeInUp {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.animate-fade-in-up {
|
|
||||||
animation: fadeInUp 0.6s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive utilities */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.hero-section {
|
|
||||||
padding: 4rem 0 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 2rem 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* Basic reset */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Additional styles for demo */
|
|
||||||
.hero-section {
|
|
||||||
padding: 6rem 0 4rem;
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover {
|
|
||||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-5px);
|
|
||||||
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-gradient {
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-gradient:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading spinner */
|
|
||||||
.loading {
|
|
||||||
display: inline-block;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border: 3px solid rgba(255, 255, 255, 0.3);
|
|
||||||
border-radius: 50%;
|
|
||||||
border-top-color: #fff;
|
|
||||||
animation: spin 1s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
to { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Animations */
|
|
||||||
@keyframes fadeInUp {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.animate-fade-in-up {
|
|
||||||
animation: fadeInUp 0.6s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive utilities */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.hero-section {
|
|
||||||
padding: 4rem 0 3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 2rem 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,315 +0,0 @@
|
|||||||
/* Dark Theme Support for SmartSolTech */
|
|
||||||
|
|
||||||
/* Base Dark Theme */
|
|
||||||
html.dark {
|
|
||||||
color-scheme: dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation Dark Theme */
|
|
||||||
.dark nav {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-link {
|
|
||||||
color: #d1d5db;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-link:hover {
|
|
||||||
color: #60a5fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-link.active {
|
|
||||||
color: #60a5fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sections Dark Theme */
|
|
||||||
.dark section {
|
|
||||||
background-color: #111827;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-white {
|
|
||||||
background-color: #1f2937 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-gray-50 {
|
|
||||||
background-color: #111827 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-gray-100 {
|
|
||||||
background-color: #374151 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-gray-900 {
|
|
||||||
background-color: #030712 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Text Colors Dark Theme */
|
|
||||||
.dark .text-gray-900 {
|
|
||||||
color: #f9fafb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-800 {
|
|
||||||
color: #e5e7eb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-700 {
|
|
||||||
color: #d1d5db !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-600 {
|
|
||||||
color: #9ca3af !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-500 {
|
|
||||||
color: #6b7280 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-400 {
|
|
||||||
color: #9ca3af !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-300 {
|
|
||||||
color: #d1d5db !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cards Dark Theme */
|
|
||||||
.dark .card-hover {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .card-hover:hover {
|
|
||||||
background-color: #374151;
|
|
||||||
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Forms Dark Theme */
|
|
||||||
.dark .form-input {
|
|
||||||
background-color: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .form-input:focus {
|
|
||||||
border-color: #60a5fa;
|
|
||||||
background-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .form-input::placeholder {
|
|
||||||
color: #9ca3af;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark input,
|
|
||||||
.dark textarea,
|
|
||||||
.dark select {
|
|
||||||
background-color: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark input:focus,
|
|
||||||
.dark textarea:focus,
|
|
||||||
.dark select:focus {
|
|
||||||
border-color: #60a5fa;
|
|
||||||
background-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Borders Dark Theme */
|
|
||||||
.dark .border-gray-300 {
|
|
||||||
border-color: #4b5563 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .border-gray-200 {
|
|
||||||
border-color: #374151 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .border-t {
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form Dark Theme */
|
|
||||||
.dark .contact-form {
|
|
||||||
background: linear-gradient(145deg, rgba(31,41,55,0.9), rgba(31,41,55,0.95));
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards Dark Theme */
|
|
||||||
.dark .service-card {
|
|
||||||
background: linear-gradient(145deg, rgba(31,41,55,0.8), rgba(31,41,55,0.6));
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Team Cards Dark Theme */
|
|
||||||
.dark .team-card {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Items Dark Theme */
|
|
||||||
.dark .portfolio-item {
|
|
||||||
background-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Dark Theme */
|
|
||||||
.dark .hero-section {
|
|
||||||
background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Shadows Dark Theme */
|
|
||||||
.dark .shadow-lg {
|
|
||||||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .shadow-xl {
|
|
||||||
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .shadow-2xl {
|
|
||||||
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dropdown Dark Theme */
|
|
||||||
.dark .dropdown-menu {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .dropdown-menu a {
|
|
||||||
color: #d1d5db;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .dropdown-menu a:hover {
|
|
||||||
background-color: #374151;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Icons Dark Theme */
|
|
||||||
.dark .text-blue-600 {
|
|
||||||
color: #60a5fa !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-purple-600 {
|
|
||||||
color: #a78bfa !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-green-600 {
|
|
||||||
color: #34d399 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-yellow-600 {
|
|
||||||
color: #fbbf24 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Buttons Dark Theme */
|
|
||||||
.dark .btn-primary {
|
|
||||||
background: linear-gradient(135deg, #3b82f6, #1d4ed8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .btn-primary:hover {
|
|
||||||
background: linear-gradient(135deg, #1d4ed8, #1e40af);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Footer Dark Theme */
|
|
||||||
.dark footer {
|
|
||||||
background-color: #030712;
|
|
||||||
border-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .footer-gradient {
|
|
||||||
background: linear-gradient(135deg, #030712 0%, #111827 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scrollbar Dark Theme */
|
|
||||||
.dark ::-webkit-scrollbar-track {
|
|
||||||
background: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark ::-webkit-scrollbar-thumb {
|
|
||||||
background: linear-gradient(135deg, #3b82f6, #1d4ed8);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Technology Stack Dark Theme */
|
|
||||||
.dark .tech-stack {
|
|
||||||
background-color: #030712;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .tech-card {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CTA Section Dark Theme */
|
|
||||||
.dark .cta-section {
|
|
||||||
background: linear-gradient(135deg, #1e40af 0%, #7c3aed 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Testimonials Dark Theme */
|
|
||||||
.dark .testimonial-card {
|
|
||||||
background: rgba(31, 41, 55, 0.8);
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Alert Messages Dark Theme */
|
|
||||||
.dark .alert-success {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
border-color: rgba(16, 185, 129, 0.3);
|
|
||||||
color: #10b981;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .alert-error {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
border-color: rgba(239, 68, 68, 0.3);
|
|
||||||
color: #ef4444;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile Menu Dark Theme */
|
|
||||||
.dark #mobile-menu {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Language Dropdown Dark Theme */
|
|
||||||
.dark #mobile-language-menu {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smooth Theme Transition */
|
|
||||||
* {
|
|
||||||
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print styles for dark theme */
|
|
||||||
@media print {
|
|
||||||
.dark * {
|
|
||||||
background: white !important;
|
|
||||||
color: black !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* High contrast mode */
|
|
||||||
@media (prefers-contrast: high) {
|
|
||||||
.dark {
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .border {
|
|
||||||
border-width: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reduced motion for accessibility */
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
.dark * {
|
|
||||||
transition: none !important;
|
|
||||||
animation: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,315 +0,0 @@
|
|||||||
/* Dark Theme Support for SmartSolTech */
|
|
||||||
|
|
||||||
/* Base Dark Theme */
|
|
||||||
html.dark {
|
|
||||||
color-scheme: dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation Dark Theme */
|
|
||||||
.dark nav {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-link {
|
|
||||||
color: #d1d5db;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-link:hover {
|
|
||||||
color: #60a5fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-link.active {
|
|
||||||
color: #60a5fa;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sections Dark Theme */
|
|
||||||
.dark section {
|
|
||||||
background-color: #111827;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-white {
|
|
||||||
background-color: #1f2937 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-gray-50 {
|
|
||||||
background-color: #111827 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-gray-100 {
|
|
||||||
background-color: #374151 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .bg-gray-900 {
|
|
||||||
background-color: #030712 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Text Colors Dark Theme */
|
|
||||||
.dark .text-gray-900 {
|
|
||||||
color: #f9fafb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-800 {
|
|
||||||
color: #e5e7eb !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-700 {
|
|
||||||
color: #d1d5db !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-600 {
|
|
||||||
color: #9ca3af !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-500 {
|
|
||||||
color: #6b7280 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-400 {
|
|
||||||
color: #9ca3af !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-gray-300 {
|
|
||||||
color: #d1d5db !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cards Dark Theme */
|
|
||||||
.dark .card-hover {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .card-hover:hover {
|
|
||||||
background-color: #374151;
|
|
||||||
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Forms Dark Theme */
|
|
||||||
.dark .form-input {
|
|
||||||
background-color: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .form-input:focus {
|
|
||||||
border-color: #60a5fa;
|
|
||||||
background-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .form-input::placeholder {
|
|
||||||
color: #9ca3af;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark input,
|
|
||||||
.dark textarea,
|
|
||||||
.dark select {
|
|
||||||
background-color: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark input:focus,
|
|
||||||
.dark textarea:focus,
|
|
||||||
.dark select:focus {
|
|
||||||
border-color: #60a5fa;
|
|
||||||
background-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Borders Dark Theme */
|
|
||||||
.dark .border-gray-300 {
|
|
||||||
border-color: #4b5563 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .border-gray-200 {
|
|
||||||
border-color: #374151 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .border-t {
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form Dark Theme */
|
|
||||||
.dark .contact-form {
|
|
||||||
background: linear-gradient(145deg, rgba(31,41,55,0.9), rgba(31,41,55,0.95));
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards Dark Theme */
|
|
||||||
.dark .service-card {
|
|
||||||
background: linear-gradient(145deg, rgba(31,41,55,0.8), rgba(31,41,55,0.6));
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Team Cards Dark Theme */
|
|
||||||
.dark .team-card {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Items Dark Theme */
|
|
||||||
.dark .portfolio-item {
|
|
||||||
background-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Dark Theme */
|
|
||||||
.dark .hero-section {
|
|
||||||
background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Shadows Dark Theme */
|
|
||||||
.dark .shadow-lg {
|
|
||||||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .shadow-xl {
|
|
||||||
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .shadow-2xl {
|
|
||||||
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dropdown Dark Theme */
|
|
||||||
.dark .dropdown-menu {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .dropdown-menu a {
|
|
||||||
color: #d1d5db;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .dropdown-menu a:hover {
|
|
||||||
background-color: #374151;
|
|
||||||
color: #f9fafb;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Icons Dark Theme */
|
|
||||||
.dark .text-blue-600 {
|
|
||||||
color: #60a5fa !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-purple-600 {
|
|
||||||
color: #a78bfa !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-green-600 {
|
|
||||||
color: #34d399 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .text-yellow-600 {
|
|
||||||
color: #fbbf24 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Buttons Dark Theme */
|
|
||||||
.dark .btn-primary {
|
|
||||||
background: linear-gradient(135deg, #3b82f6, #1d4ed8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .btn-primary:hover {
|
|
||||||
background: linear-gradient(135deg, #1d4ed8, #1e40af);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Footer Dark Theme */
|
|
||||||
.dark footer {
|
|
||||||
background-color: #030712;
|
|
||||||
border-color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .footer-gradient {
|
|
||||||
background: linear-gradient(135deg, #030712 0%, #111827 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scrollbar Dark Theme */
|
|
||||||
.dark ::-webkit-scrollbar-track {
|
|
||||||
background: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark ::-webkit-scrollbar-thumb {
|
|
||||||
background: linear-gradient(135deg, #3b82f6, #1d4ed8);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Technology Stack Dark Theme */
|
|
||||||
.dark .tech-stack {
|
|
||||||
background-color: #030712;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .tech-card {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CTA Section Dark Theme */
|
|
||||||
.dark .cta-section {
|
|
||||||
background: linear-gradient(135deg, #1e40af 0%, #7c3aed 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Testimonials Dark Theme */
|
|
||||||
.dark .testimonial-card {
|
|
||||||
background: rgba(31, 41, 55, 0.8);
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Alert Messages Dark Theme */
|
|
||||||
.dark .alert-success {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
border-color: rgba(16, 185, 129, 0.3);
|
|
||||||
color: #10b981;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .alert-error {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
border-color: rgba(239, 68, 68, 0.3);
|
|
||||||
color: #ef4444;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile Menu Dark Theme */
|
|
||||||
.dark #mobile-menu {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Language Dropdown Dark Theme */
|
|
||||||
.dark #mobile-language-menu {
|
|
||||||
background-color: #1f2937;
|
|
||||||
border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smooth Theme Transition */
|
|
||||||
* {
|
|
||||||
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print styles for dark theme */
|
|
||||||
@media print {
|
|
||||||
.dark * {
|
|
||||||
background: white !important;
|
|
||||||
color: black !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* High contrast mode */
|
|
||||||
@media (prefers-contrast: high) {
|
|
||||||
.dark {
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .border {
|
|
||||||
border-width: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reduced motion for accessibility */
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
|
||||||
.dark * {
|
|
||||||
transition: none !important;
|
|
||||||
animation: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
203
.history/public/css/enhanced-animations_20251026210710.css
Normal file
203
.history/public/css/enhanced-animations_20251026210710.css
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
/* Enhanced Animations for SmartSolTech */
|
||||||
|
|
||||||
|
/* Gradient Animation */
|
||||||
|
@keyframes gradient-x {
|
||||||
|
0%, 100% {
|
||||||
|
background-position: 0% 50%;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
background-position: 100% 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-gradient-x {
|
||||||
|
background-size: 200% 200%;
|
||||||
|
animation: gradient-x 4s ease infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced Blob Animation */
|
||||||
|
@keyframes blob {
|
||||||
|
0% {
|
||||||
|
transform: translate(0px, 0px) scale(1);
|
||||||
|
}
|
||||||
|
33% {
|
||||||
|
transform: translate(30px, -50px) scale(1.1);
|
||||||
|
}
|
||||||
|
66% {
|
||||||
|
transform: translate(-20px, 20px) scale(0.9);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translate(0px, 0px) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-blob {
|
||||||
|
animation: blob 7s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-delay-2000 {
|
||||||
|
animation-delay: 2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-delay-4000 {
|
||||||
|
animation-delay: 4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-delay-6000 {
|
||||||
|
animation-delay: 6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pulse Animation with Delay */
|
||||||
|
@keyframes pulse-delayed {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-pulse-delayed {
|
||||||
|
animation: pulse-delayed 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Floating Animation */
|
||||||
|
@keyframes float {
|
||||||
|
0%, 100% {
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: translateY(-10px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-float {
|
||||||
|
animation: float 3s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Card Hover Effects */
|
||||||
|
.card-hover {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-hover:hover {
|
||||||
|
transform: translateY(-8px);
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Background Pattern */
|
||||||
|
.bg-pattern {
|
||||||
|
background-image: radial-gradient(circle at 1px 1px, rgba(59, 130, 246, 0.15) 1px, transparent 0);
|
||||||
|
background-size: 20px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Glowing Effect */
|
||||||
|
.glow {
|
||||||
|
box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-purple {
|
||||||
|
box-shadow: 0 0 20px rgba(139, 92, 246, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-green {
|
||||||
|
box-shadow: 0 0 20px rgba(16, 185, 129, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-orange {
|
||||||
|
box-shadow: 0 0 20px rgba(251, 146, 60, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hero Section Specific */
|
||||||
|
.hero-section {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background:
|
||||||
|
radial-gradient(1200px 600px at 10% -10%, rgba(99, 102, 241, 0.35), transparent 60%),
|
||||||
|
radial-gradient(1000px 500px at 110% 10%, rgba(168, 85, 247, 0.35), transparent 60%);
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Glass Effect */
|
||||||
|
.glass-effect {
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
-webkit-backdrop-filter: blur(16px);
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smooth Transitions */
|
||||||
|
.smooth-transition {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text Shimmer Effect */
|
||||||
|
@keyframes shimmer {
|
||||||
|
0% {
|
||||||
|
background-position: -200% center;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background-position: 200% center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-shimmer {
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.8), transparent);
|
||||||
|
background-size: 200% 100%;
|
||||||
|
animation: shimmer 2s infinite;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Button Hover Effects */
|
||||||
|
.btn-enhanced {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-enhanced::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
|
||||||
|
transition: left 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-enhanced:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive Adjustments */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.animate-blob {
|
||||||
|
animation-duration: 10s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-hover:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark Mode Adjustments */
|
||||||
|
.dark .glass-effect {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark .bg-pattern {
|
||||||
|
background-image: radial-gradient(circle at 1px 1px, rgba(59, 130, 246, 0.1) 1px, transparent 0);
|
||||||
|
}
|
||||||
203
.history/public/css/enhanced-animations_20251026210722.css
Normal file
203
.history/public/css/enhanced-animations_20251026210722.css
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
/* Enhanced Animations for SmartSolTech */
|
||||||
|
|
||||||
|
/* Gradient Animation */
|
||||||
|
@keyframes gradient-x {
|
||||||
|
0%, 100% {
|
||||||
|
background-position: 0% 50%;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
background-position: 100% 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-gradient-x {
|
||||||
|
background-size: 200% 200%;
|
||||||
|
animation: gradient-x 4s ease infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced Blob Animation */
|
||||||
|
@keyframes blob {
|
||||||
|
0% {
|
||||||
|
transform: translate(0px, 0px) scale(1);
|
||||||
|
}
|
||||||
|
33% {
|
||||||
|
transform: translate(30px, -50px) scale(1.1);
|
||||||
|
}
|
||||||
|
66% {
|
||||||
|
transform: translate(-20px, 20px) scale(0.9);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translate(0px, 0px) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-blob {
|
||||||
|
animation: blob 7s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-delay-2000 {
|
||||||
|
animation-delay: 2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-delay-4000 {
|
||||||
|
animation-delay: 4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-delay-6000 {
|
||||||
|
animation-delay: 6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pulse Animation with Delay */
|
||||||
|
@keyframes pulse-delayed {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-pulse-delayed {
|
||||||
|
animation: pulse-delayed 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Floating Animation */
|
||||||
|
@keyframes float {
|
||||||
|
0%, 100% {
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: translateY(-10px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-float {
|
||||||
|
animation: float 3s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Card Hover Effects */
|
||||||
|
.card-hover {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-hover:hover {
|
||||||
|
transform: translateY(-8px);
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Background Pattern */
|
||||||
|
.bg-pattern {
|
||||||
|
background-image: radial-gradient(circle at 1px 1px, rgba(59, 130, 246, 0.15) 1px, transparent 0);
|
||||||
|
background-size: 20px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Glowing Effect */
|
||||||
|
.glow {
|
||||||
|
box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-purple {
|
||||||
|
box-shadow: 0 0 20px rgba(139, 92, 246, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-green {
|
||||||
|
box-shadow: 0 0 20px rgba(16, 185, 129, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.glow-orange {
|
||||||
|
box-shadow: 0 0 20px rgba(251, 146, 60, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hero Section Specific */
|
||||||
|
.hero-section {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-section::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background:
|
||||||
|
radial-gradient(1200px 600px at 10% -10%, rgba(99, 102, 241, 0.35), transparent 60%),
|
||||||
|
radial-gradient(1000px 500px at 110% 10%, rgba(168, 85, 247, 0.35), transparent 60%);
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Glass Effect */
|
||||||
|
.glass-effect {
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
-webkit-backdrop-filter: blur(16px);
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smooth Transitions */
|
||||||
|
.smooth-transition {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text Shimmer Effect */
|
||||||
|
@keyframes shimmer {
|
||||||
|
0% {
|
||||||
|
background-position: -200% center;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background-position: 200% center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-shimmer {
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.8), transparent);
|
||||||
|
background-size: 200% 100%;
|
||||||
|
animation: shimmer 2s infinite;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Button Hover Effects */
|
||||||
|
.btn-enhanced {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-enhanced::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
|
||||||
|
transition: left 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-enhanced:hover::before {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive Adjustments */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.animate-blob {
|
||||||
|
animation-duration: 10s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-hover:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark Mode Adjustments */
|
||||||
|
.dark .glass-effect {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark .bg-pattern {
|
||||||
|
background-image: radial-gradient(circle at 1px 1px, rgba(59, 130, 246, 0.1) 1px, transparent 0);
|
||||||
|
}
|
||||||
@@ -1,281 +0,0 @@
|
|||||||
/* SmartSolTech - Design Fixes & Enhancements */
|
|
||||||
|
|
||||||
/* Glass effect improvements */
|
|
||||||
.glass-effect {
|
|
||||||
background: rgba(255, 255, 255, 0.15);
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
||||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
|
|
||||||
/* Fallback for browsers that don't support backdrop-filter */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Support backdrop-filter for modern browsers */
|
|
||||||
@supports (backdrop-filter: blur(10px)) {
|
|
||||||
.glass-effect {
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero section improvements */
|
|
||||||
.hero-section {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Background blob animations */
|
|
||||||
@keyframes blob {
|
|
||||||
0% { transform: translate(0px, 0px) scale(1); }
|
|
||||||
33% { transform: translate(30px, -50px) scale(1.1); }
|
|
||||||
66% { transform: translate(-20px, 20px) scale(0.9); }
|
|
||||||
100% { transform: translate(0px, 0px) scale(1); }
|
|
||||||
}
|
|
||||||
|
|
||||||
.animate-blob {
|
|
||||||
animation: blob 7s infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.animation-delay-2000 {
|
|
||||||
animation-delay: 2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.animation-delay-4000 {
|
|
||||||
animation-delay: 4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Enhanced card hover effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
backface-visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px) scale(1.02);
|
|
||||||
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio item enhancements */
|
|
||||||
.portfolio-item {
|
|
||||||
overflow: hidden;
|
|
||||||
border-radius: 16px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image {
|
|
||||||
transform: scale(1.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button improvements */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, #3B82F6, #1D4ED8);
|
|
||||||
border: none;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: -100%;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
|
|
||||||
transition: left 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover::before {
|
|
||||||
left: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
background: linear-gradient(135deg, #1D4ED8, #1E40AF);
|
|
||||||
transform: translateY(-3px);
|
|
||||||
box-shadow: 0 15px 35px rgba(59, 130, 246, 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation improvements */
|
|
||||||
.nav-link {
|
|
||||||
position: relative;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
bottom: -2px;
|
|
||||||
left: 50%;
|
|
||||||
width: 0;
|
|
||||||
height: 2px;
|
|
||||||
background: linear-gradient(90deg, #3B82F6, #8B5CF6);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link:hover::after,
|
|
||||||
.nav-link.active::after {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Form improvements */
|
|
||||||
.form-input {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid #E5E7EB;
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus {
|
|
||||||
border-color: #3B82F6;
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
transform: translateY(-1px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact form styling */
|
|
||||||
.contact-form {
|
|
||||||
background: linear-gradient(145deg, rgba(255,255,255,0.9), rgba(255,255,255,0.95));
|
|
||||||
border: 1px solid rgba(255,255,255,0.3);
|
|
||||||
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CTA section improvements */
|
|
||||||
.cta-section {
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cta-section::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="75" cy="75" r="1" fill="rgba(255,255,255,0.1)"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service cards */
|
|
||||||
.service-card {
|
|
||||||
background: linear-gradient(145deg, rgba(255,255,255,0.1), rgba(255,255,255,0.05));
|
|
||||||
border: 1px solid rgba(255,255,255,0.2);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Team member cards */
|
|
||||||
.team-card {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
}
|
|
||||||
|
|
||||||
.team-card:hover {
|
|
||||||
transform: translateY(-10px);
|
|
||||||
box-shadow: 0 30px 60px rgba(0,0,0,0.12);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Technology icons */
|
|
||||||
.tech-icon {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tech-icon:hover {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
filter: brightness(1.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading states */
|
|
||||||
.loading {
|
|
||||||
opacity: 0.7;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
margin: -10px 0 0 -10px;
|
|
||||||
border: 2px solid #f3f3f3;
|
|
||||||
border-top: 2px solid #3B82F6;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
100% { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile optimizations */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-4px) scale(1.01);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-section {
|
|
||||||
min-height: 80vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility improvements */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
button:focus,
|
|
||||||
input:focus,
|
|
||||||
textarea:focus,
|
|
||||||
select:focus,
|
|
||||||
a:focus {
|
|
||||||
outline: 2px solid #3B82F6;
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smooth scrolling */
|
|
||||||
html {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print styles */
|
|
||||||
@media print {
|
|
||||||
.no-print {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
color: black !important;
|
|
||||||
background: white !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark mode support (if needed) */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
.auto-dark {
|
|
||||||
color: #f9fafb;
|
|
||||||
background-color: #111827;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,281 +0,0 @@
|
|||||||
/* SmartSolTech - Design Fixes & Enhancements */
|
|
||||||
|
|
||||||
/* Glass effect improvements */
|
|
||||||
.glass-effect {
|
|
||||||
background: rgba(255, 255, 255, 0.15);
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
||||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
|
|
||||||
/* Fallback for browsers that don't support backdrop-filter */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Support backdrop-filter for modern browsers */
|
|
||||||
@supports (backdrop-filter: blur(10px)) {
|
|
||||||
.glass-effect {
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero section improvements */
|
|
||||||
.hero-section {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Background blob animations */
|
|
||||||
@keyframes blob {
|
|
||||||
0% { transform: translate(0px, 0px) scale(1); }
|
|
||||||
33% { transform: translate(30px, -50px) scale(1.1); }
|
|
||||||
66% { transform: translate(-20px, 20px) scale(0.9); }
|
|
||||||
100% { transform: translate(0px, 0px) scale(1); }
|
|
||||||
}
|
|
||||||
|
|
||||||
.animate-blob {
|
|
||||||
animation: blob 7s infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.animation-delay-2000 {
|
|
||||||
animation-delay: 2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.animation-delay-4000 {
|
|
||||||
animation-delay: 4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Enhanced card hover effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
backface-visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px) scale(1.02);
|
|
||||||
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio item enhancements */
|
|
||||||
.portfolio-item {
|
|
||||||
overflow: hidden;
|
|
||||||
border-radius: 16px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image {
|
|
||||||
transform: scale(1.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button improvements */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, #3B82F6, #1D4ED8);
|
|
||||||
border: none;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: -100%;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
|
|
||||||
transition: left 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover::before {
|
|
||||||
left: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
background: linear-gradient(135deg, #1D4ED8, #1E40AF);
|
|
||||||
transform: translateY(-3px);
|
|
||||||
box-shadow: 0 15px 35px rgba(59, 130, 246, 0.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation improvements */
|
|
||||||
.nav-link {
|
|
||||||
position: relative;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
bottom: -2px;
|
|
||||||
left: 50%;
|
|
||||||
width: 0;
|
|
||||||
height: 2px;
|
|
||||||
background: linear-gradient(90deg, #3B82F6, #8B5CF6);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link:hover::after,
|
|
||||||
.nav-link.active::after {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Form improvements */
|
|
||||||
.form-input {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid #E5E7EB;
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus {
|
|
||||||
border-color: #3B82F6;
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
transform: translateY(-1px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact form styling */
|
|
||||||
.contact-form {
|
|
||||||
background: linear-gradient(145deg, rgba(255,255,255,0.9), rgba(255,255,255,0.95));
|
|
||||||
border: 1px solid rgba(255,255,255,0.3);
|
|
||||||
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CTA section improvements */
|
|
||||||
.cta-section {
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cta-section::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="75" cy="75" r="1" fill="rgba(255,255,255,0.1)"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service cards */
|
|
||||||
.service-card {
|
|
||||||
background: linear-gradient(145deg, rgba(255,255,255,0.1), rgba(255,255,255,0.05));
|
|
||||||
border: 1px solid rgba(255,255,255,0.2);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Team member cards */
|
|
||||||
.team-card {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
}
|
|
||||||
|
|
||||||
.team-card:hover {
|
|
||||||
transform: translateY(-10px);
|
|
||||||
box-shadow: 0 30px 60px rgba(0,0,0,0.12);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Technology icons */
|
|
||||||
.tech-icon {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tech-icon:hover {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
filter: brightness(1.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading states */
|
|
||||||
.loading {
|
|
||||||
opacity: 0.7;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
margin: -10px 0 0 -10px;
|
|
||||||
border: 2px solid #f3f3f3;
|
|
||||||
border-top: 2px solid #3B82F6;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
100% { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile optimizations */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-4px) scale(1.01);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-section {
|
|
||||||
min-height: 80vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility improvements */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
button:focus,
|
|
||||||
input:focus,
|
|
||||||
textarea:focus,
|
|
||||||
select:focus,
|
|
||||||
a:focus {
|
|
||||||
outline: 2px solid #3B82F6;
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smooth scrolling */
|
|
||||||
html {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print styles */
|
|
||||||
@media print {
|
|
||||||
.no-print {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
color: black !important;
|
|
||||||
background: white !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark mode support (if needed) */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
.auto-dark {
|
|
||||||
color: #f9fafb;
|
|
||||||
background-color: #111827;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,425 +0,0 @@
|
|||||||
/* Custom CSS for SmartSolTech */
|
|
||||||
:root {
|
|
||||||
--primary-color: #3b82f6;
|
|
||||||
--secondary-color: #8b5cf6;
|
|
||||||
--accent-color: #10b981;
|
|
||||||
--text-dark: #1f2937;
|
|
||||||
--text-light: #6b7280;
|
|
||||||
--bg-light: #f9fafb;
|
|
||||||
--border-color: #e5e7eb;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: var(--text-dark);
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading Animation */
|
|
||||||
.loading {
|
|
||||||
display: inline-block;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border: 3px solid rgba(255, 255, 255, 0.3);
|
|
||||||
border-radius: 50%;
|
|
||||||
border-top-color: #fff;
|
|
||||||
animation: spin 1s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
to { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation Enhancements */
|
|
||||||
.navbar-scrolled {
|
|
||||||
background-color: rgba(255, 255, 255, 0.95);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile Menu Animation */
|
|
||||||
.mobile-menu {
|
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
max-height: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
@@ -1,425 +0,0 @@
|
|||||||
/* Custom CSS for SmartSolTech */
|
|
||||||
:root {
|
|
||||||
--primary-color: #3b82f6;
|
|
||||||
--secondary-color: #8b5cf6;
|
|
||||||
--accent-color: #10b981;
|
|
||||||
--text-dark: #1f2937;
|
|
||||||
--text-light: #6b7280;
|
|
||||||
--bg-light: #f9fafb;
|
|
||||||
--border-color: #e5e7eb;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: var(--text-dark);
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading Animation */
|
|
||||||
.loading {
|
|
||||||
display: inline-block;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border: 3px solid rgba(255, 255, 255, 0.3);
|
|
||||||
border-radius: 50%;
|
|
||||||
border-top-color: #fff;
|
|
||||||
animation: spin 1s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
to { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation Enhancements */
|
|
||||||
.navbar-scrolled {
|
|
||||||
background-color: rgba(255, 255, 255, 0.95);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile Menu Animation */
|
|
||||||
.mobile-menu {
|
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
max-height: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
@@ -1,427 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* CSS Reset and Base */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Utility Classes */
|
|
||||||
.container {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading Animation */
|
|
||||||
.loading {
|
|
||||||
display: inline-block;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border: 3px solid rgba(255, 255, 255, 0.3);
|
|
||||||
border-radius: 50%;
|
|
||||||
border-top-color: #fff;
|
|
||||||
animation: spin 1s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
to { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation Enhancements */
|
|
||||||
.navbar-scrolled {
|
|
||||||
background-color: rgba(255, 255, 255, 0.95);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile Menu Animation */
|
|
||||||
.mobile-menu {
|
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
max-height: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
@@ -1,442 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* CSS Reset and Base */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Utility Classes */
|
|
||||||
.container {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation */
|
|
||||||
.navbar {
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #3b82f6;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #6b7280;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 500;
|
|
||||||
padding: 0.5rem 1rem;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link:hover,
|
|
||||||
.nav-link.active {
|
|
||||||
color: #3b82f6;
|
|
||||||
background-color: #eff6ff;
|
|
||||||
}
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
@@ -1,442 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* CSS Reset and Base */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Utility Classes */
|
|
||||||
.container {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation */
|
|
||||||
.navbar {
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #3b82f6;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #6b7280;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 500;
|
|
||||||
padding: 0.5rem 1rem;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link:hover,
|
|
||||||
.nav-link.active {
|
|
||||||
color: #3b82f6;
|
|
||||||
background-color: #eff6ff;
|
|
||||||
}
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
@@ -1,552 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* CSS Reset and Base */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Utility Classes */
|
|
||||||
.container {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation */
|
|
||||||
.navbar {
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #3b82f6;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #6b7280;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 500;
|
|
||||||
padding: 0.5rem 1rem;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link:hover,
|
|
||||||
.nav-link.active {
|
|
||||||
color: #3b82f6;
|
|
||||||
background-color: #eff6ff;
|
|
||||||
}
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step.active {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option,
|
|
||||||
.complexity-option,
|
|
||||||
.timeline-option {
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option:hover,
|
|
||||||
.complexity-option:hover,
|
|
||||||
.timeline-option:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option.selected,
|
|
||||||
.complexity-option.selected,
|
|
||||||
.timeline-option.selected {
|
|
||||||
border-color: #3B82F6 !important;
|
|
||||||
background-color: #EBF8FF !important;
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option.selected::after,
|
|
||||||
.complexity-option.selected::after,
|
|
||||||
.timeline-option.selected::after {
|
|
||||||
content: '✓';
|
|
||||||
position: absolute;
|
|
||||||
top: 0.5rem;
|
|
||||||
right: 0.5rem;
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
background: #3B82F6;
|
|
||||||
color: white;
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Price Display Animation */
|
|
||||||
#final-price {
|
|
||||||
animation: priceReveal 0.8s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes priceReveal {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
transform: scale(0.8);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
transform: scale(1.1);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Progress Bar */
|
|
||||||
.calculator-progress {
|
|
||||||
width: 100%;
|
|
||||||
height: 4px;
|
|
||||||
background: #e5e7eb;
|
|
||||||
border-radius: 2px;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-progress-bar {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, #3B82F6, #8B5CF6);
|
|
||||||
border-radius: 2px;
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
width: 33.33%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-progress-bar.step-2 {
|
|
||||||
width: 66.66%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-progress-bar.step-3 {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Mobile Improvements */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.service-option,
|
|
||||||
.complexity-option,
|
|
||||||
.timeline-option {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#final-price {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,552 +0,0 @@
|
|||||||
/* SmartSolTech - Main Styles */
|
|
||||||
|
|
||||||
/* CSS Reset and Base */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
||||||
line-height: 1.6;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Utility Classes */
|
|
||||||
.container {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-padding {
|
|
||||||
padding: 4rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation */
|
|
||||||
.navbar {
|
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #3b82f6;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
color: #6b7280;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 500;
|
|
||||||
padding: 0.5rem 1rem;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link:hover,
|
|
||||||
.nav-link.active {
|
|
||||||
color: #3b82f6;
|
|
||||||
background-color: #eff6ff;
|
|
||||||
}
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu.show {
|
|
||||||
max-height: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button Hover Effects */
|
|
||||||
.btn-primary {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-primary:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card Hover Effects */
|
|
||||||
.card-hover {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover:hover {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Portfolio Grid */
|
|
||||||
.portfolio-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
||||||
gap: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item {
|
|
||||||
border-radius: 1rem;
|
|
||||||
overflow: hidden;
|
|
||||||
background: white;
|
|
||||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
aspect-ratio: 16/10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-image img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-image img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(139, 92, 246, 0.8));
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item:hover .portfolio-overlay {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Service Cards */
|
|
||||||
.service-card {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
text-align: center;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-4px);
|
|
||||||
box-shadow: 0 20px 40px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-icon {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 0 auto 1rem;
|
|
||||||
font-size: 2rem;
|
|
||||||
color: white;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card:hover .service-icon {
|
|
||||||
transform: scale(1.1) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Contact Form */
|
|
||||||
.contact-form {
|
|
||||||
background: white;
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 2rem;
|
|
||||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
padding: 1rem;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
font-size: 1rem;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
animation: fadeIn 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(20px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card {
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
border-radius: 1rem;
|
|
||||||
padding: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card:hover {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.option-card.selected {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
background: rgba(59, 130, 246, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Progress Bar */
|
|
||||||
.progress-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 8px;
|
|
||||||
background: var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.progress-fill {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero Section Animations */
|
|
||||||
.hero-content {
|
|
||||||
animation: heroFadeIn 1s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes heroFadeIn {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Parallax Effect */
|
|
||||||
.parallax {
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll Animations */
|
|
||||||
.fade-in-up {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(30px);
|
|
||||||
transition: all 0.8s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-in-up.animate {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Typography */
|
|
||||||
.gradient-text {
|
|
||||||
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
||||||
-webkit-background-clip: text;
|
|
||||||
-webkit-text-fill-color: transparent;
|
|
||||||
background-clip: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Status Badges */
|
|
||||||
.status-badge {
|
|
||||||
padding: 0.25rem 0.75rem;
|
|
||||||
border-radius: 9999px;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: uppercase;
|
|
||||||
letter-spacing: 0.05em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-new {
|
|
||||||
background: rgba(239, 68, 68, 0.1);
|
|
||||||
color: #dc2626;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-in-progress {
|
|
||||||
background: rgba(245, 158, 11, 0.1);
|
|
||||||
color: #d97706;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-completed {
|
|
||||||
background: rgba(16, 185, 129, 0.1);
|
|
||||||
color: #059669;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Responsive Design */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.portfolio-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-title {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-card {
|
|
||||||
padding: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark Mode Support */
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--text-dark: #f9fafb;
|
|
||||||
--text-light: #d1d5db;
|
|
||||||
--bg-light: #1f2937;
|
|
||||||
--border-color: #374151;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #111827;
|
|
||||||
color: var(--text-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-hover, .service-card, .contact-form, .option-card {
|
|
||||||
background: #1f2937;
|
|
||||||
border-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
background: #374151;
|
|
||||||
border-color: #4b5563;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: var(--primary-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print Styles */
|
|
||||||
@media print {
|
|
||||||
.navbar, .footer, .contact-form, .mobile-menu {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 12pt;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-item, .service-card {
|
|
||||||
break-inside: avoid;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accessibility */
|
|
||||||
.sr-only {
|
|
||||||
position: absolute;
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
padding: 0;
|
|
||||||
margin: -1px;
|
|
||||||
overflow: hidden;
|
|
||||||
clip: rect(0, 0, 0, 0);
|
|
||||||
white-space: nowrap;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Focus styles for better accessibility */
|
|
||||||
.form-control:focus,
|
|
||||||
.btn:focus,
|
|
||||||
.option-card:focus {
|
|
||||||
outline: 2px solid var(--primary-color);
|
|
||||||
outline-offset: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loading States */
|
|
||||||
.btn-loading {
|
|
||||||
position: relative;
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-loading::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -8px;
|
|
||||||
margin-top: -8px;
|
|
||||||
border: 2px solid transparent;
|
|
||||||
border-top-color: currentColor;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: spin 1s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Styles */
|
|
||||||
.calculator-step {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-step.active {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option,
|
|
||||||
.complexity-option,
|
|
||||||
.timeline-option {
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option:hover,
|
|
||||||
.complexity-option:hover,
|
|
||||||
.timeline-option:hover {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option.selected,
|
|
||||||
.complexity-option.selected,
|
|
||||||
.timeline-option.selected {
|
|
||||||
border-color: #3B82F6 !important;
|
|
||||||
background-color: #EBF8FF !important;
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.service-option.selected::after,
|
|
||||||
.complexity-option.selected::after,
|
|
||||||
.timeline-option.selected::after {
|
|
||||||
content: '✓';
|
|
||||||
position: absolute;
|
|
||||||
top: 0.5rem;
|
|
||||||
right: 0.5rem;
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
background: #3B82F6;
|
|
||||||
color: white;
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Price Display Animation */
|
|
||||||
#final-price {
|
|
||||||
animation: priceReveal 0.8s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes priceReveal {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
transform: scale(0.8);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
transform: scale(1.1);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Progress Bar */
|
|
||||||
.calculator-progress {
|
|
||||||
width: 100%;
|
|
||||||
height: 4px;
|
|
||||||
background: #e5e7eb;
|
|
||||||
border-radius: 2px;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-progress-bar {
|
|
||||||
height: 100%;
|
|
||||||
background: linear-gradient(90deg, #3B82F6, #8B5CF6);
|
|
||||||
border-radius: 2px;
|
|
||||||
transition: width 0.3s ease;
|
|
||||||
width: 33.33%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-progress-bar.step-2 {
|
|
||||||
width: 66.66%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calculator-progress-bar.step-3 {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculator Mobile Improvements */
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.service-option,
|
|
||||||
.complexity-option,
|
|
||||||
.timeline-option {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#final-price {
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
89
.history/public/css/sticky-price_20251026093454.css
Normal file
89
.history/public/css/sticky-price_20251026093454.css
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
/* Sticky Price Display Styles */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility on scroll */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: translateX(-5px) scale(1.05);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
top: auto !important;
|
||||||
|
right: auto !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements */
|
||||||
|
.dark #priceDisplay .bg-white {
|
||||||
|
background: rgba(31, 41, 55, 0.95);
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll-triggered animations */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInRight 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInRight {
|
||||||
|
from {
|
||||||
|
transform: translateX(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateX(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for better visibility */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.25),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.5),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
89
.history/public/css/sticky-price_20251026093548.css
Normal file
89
.history/public/css/sticky-price_20251026093548.css
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
/* Sticky Price Display Styles */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility on scroll */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: translateX(-5px) scale(1.05);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
top: auto !important;
|
||||||
|
right: auto !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements */
|
||||||
|
.dark #priceDisplay .bg-white {
|
||||||
|
background: rgba(31, 41, 55, 0.95);
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll-triggered animations */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInRight 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInRight {
|
||||||
|
from {
|
||||||
|
transform: translateX(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateX(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for better visibility */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.25),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.5),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
108
.history/public/css/sticky-price_20251026095249.css
Normal file
108
.history/public/css/sticky-price_20251026095249.css
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateX(-50%) scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: translateX(-50%) scale(1.05);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateX(-50%) translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateX(-50%) translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
109
.history/public/css/sticky-price_20251026095257.css
Normal file
109
.history/public/css/sticky-price_20251026095257.css
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateX(-50%) scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: translateX(-50%) scale(1.05);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
-webkit-backdrop-filter: blur(24px);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateX(-50%) translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateX(-50%) translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
109
.history/public/css/sticky-price_20251026095324.css
Normal file
109
.history/public/css/sticky-price_20251026095324.css
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
||||||
|
transform: translateX(-50%) scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: translateX(-50%) scale(1.05);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
-webkit-backdrop-filter: blur(24px);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateX(-50%) translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateX(-50%) translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
114
.history/public/css/sticky-price_20251026095604.css
Normal file
114
.history/public/css/sticky-price_20251026095604.css
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display - Full Width */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(0);
|
||||||
|
left: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
max-width: calc(64rem - 2rem); /* max-w-4xl minus padding */
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
-webkit-backdrop-filter: blur(24px);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateX(-50%) translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateX(-50%) translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
114
.history/public/css/sticky-price_20251026095611.css
Normal file
114
.history/public/css/sticky-price_20251026095611.css
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display - Full Width */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(0);
|
||||||
|
left: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
max-width: calc(64rem - 2rem); /* max-w-4xl minus padding */
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
-webkit-backdrop-filter: blur(24px);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
116
.history/public/css/sticky-price_20251026095622.css
Normal file
116
.history/public/css/sticky-price_20251026095622.css
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display - Full Width */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(0);
|
||||||
|
left: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
max-width: calc(64rem - 2rem); /* max-w-4xl minus padding */
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
right: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
-webkit-backdrop-filter: blur(24px);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
116
.history/public/css/sticky-price_20251026095647.css
Normal file
116
.history/public/css/sticky-price_20251026095647.css
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
/* Dynamic Island Style Sticky Price Display - Full Width */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transform: translateX(0);
|
||||||
|
left: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
max-width: calc(64rem - 2rem); /* max-w-4xl minus padding */
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and Dynamic Island effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for Dynamic Island */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
position: relative !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
right: auto !important;
|
||||||
|
transform: none !important;
|
||||||
|
margin: 1rem 0;
|
||||||
|
width: 100%;
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode enhancements for Dynamic Island */
|
||||||
|
.dark #priceDisplay .bg-black\/80 {
|
||||||
|
background: rgba(17, 24, 39, 0.9);
|
||||||
|
-webkit-backdrop-filter: blur(24px);
|
||||||
|
backdrop-filter: blur(24px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dynamic Island entrance animation */
|
||||||
|
#priceDisplay.visible {
|
||||||
|
animation: slideInBottom 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slideInBottom {
|
||||||
|
from {
|
||||||
|
transform: translateY(100%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced shadow for Dynamic Island aesthetic */
|
||||||
|
#priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark #priceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 25px 50px -12px rgba(0, 0, 0, 0.6),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.05),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
69
.history/public/css/sticky-price_20251026100151.css
Normal file
69
.history/public/css/sticky-price_20251026100151.css
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/* Dynamic Price Island - As Calculator Extension */
|
||||||
|
#priceIsland {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#islandContainer {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#islandContent {
|
||||||
|
transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for island */
|
||||||
|
#priceIsland:hover #islandContainer {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
.price-update {
|
||||||
|
animation: priceUpdate 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes priceUpdate {
|
||||||
|
0% { transform: scale(1); }
|
||||||
|
50% { transform: scale(1.05); color: #3b82f6; }
|
||||||
|
100% { transform: scale(1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceIsland {
|
||||||
|
margin: 1rem;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
69
.history/public/css/sticky-price_20251026100440.css
Normal file
69
.history/public/css/sticky-price_20251026100440.css
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/* Dynamic Price Island - As Calculator Extension */
|
||||||
|
#priceIsland {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#islandContainer {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#islandContent {
|
||||||
|
transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects for island */
|
||||||
|
#priceIsland:hover #islandContainer {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
.price-update {
|
||||||
|
animation: priceUpdate 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes priceUpdate {
|
||||||
|
0% { transform: scale(1); }
|
||||||
|
50% { transform: scale(1.05); color: #3b82f6; }
|
||||||
|
100% { transform: scale(1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceIsland {
|
||||||
|
margin: 1rem;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
77
.history/public/css/sticky-price_20251026100707.css
Normal file
77
.history/public/css/sticky-price_20251026100707.css
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/* Price Display Island - Under Calculator */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
.price-update {
|
||||||
|
animation: priceUpdate 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes priceUpdate {
|
||||||
|
0% { transform: scale(1); }
|
||||||
|
50% { transform: scale(1.05); color: #3b82f6; }
|
||||||
|
100% { transform: scale(1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
margin: 1rem;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
77
.history/public/css/sticky-price_20251026100722.css
Normal file
77
.history/public/css/sticky-price_20251026100722.css
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/* Price Display Island - Under Calculator */
|
||||||
|
#priceDisplay {
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced visibility and effects */
|
||||||
|
#priceDisplay.scrolled {
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.3);
|
||||||
|
transform: scale(1.01);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects */
|
||||||
|
#priceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#currentPrice.updating {
|
||||||
|
transform: scale(1.1);
|
||||||
|
filter: brightness(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation for price updates */
|
||||||
|
.price-update {
|
||||||
|
animation: priceUpdate 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes priceUpdate {
|
||||||
|
0% { transform: scale(1); }
|
||||||
|
50% { transform: scale(1.05); color: #3b82f6; }
|
||||||
|
100% { transform: scale(1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enhanced pulse animation for live indicator */
|
||||||
|
.animate-pulse-soft {
|
||||||
|
animation: pulse-soft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse-soft {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.7;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness improvements */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
#priceDisplay {
|
||||||
|
margin: 1rem;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay {
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mobilePriceDisplay:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile Dynamic Island styling */
|
||||||
|
#mobilePriceDisplay .shadow-2xl {
|
||||||
|
box-shadow:
|
||||||
|
0 20px 40px -12px rgba(0, 0, 0, 0.4),
|
||||||
|
0 0 0 1px rgba(255, 255, 255, 0.1),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
46
.history/public/css/sticky-price_20251026100840.css
Normal file
46
.history/public/css/sticky-price_20251026100840.css
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/* Simple Sticky Price Display */
|
||||||
|
#priceDisplay {
|
||||||
|
/* Positioned under calculator with 10px gap */
|
||||||
|
margin-top: 10px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
/* Ensure proper display when visible */
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hidden state */
|
||||||
|
#priceDisplay.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smooth show animation */
|
||||||
|
#priceDisplay.show {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Price update animation */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price-update {
|
||||||
|
animation: priceUpdate 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes priceUpdate {
|
||||||
|
0% { transform: scale(1); }
|
||||||
|
50% { transform: scale(1.05); color: #3b82f6; }
|
||||||
|
100% { transform: scale(1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
#priceDisplay {
|
||||||
|
margin-top: 8px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
46
.history/public/css/sticky-price_20251026100852.css
Normal file
46
.history/public/css/sticky-price_20251026100852.css
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/* Simple Sticky Price Display */
|
||||||
|
#priceDisplay {
|
||||||
|
/* Positioned under calculator with 10px gap */
|
||||||
|
margin-top: 10px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
/* Ensure proper display when visible */
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hidden state */
|
||||||
|
#priceDisplay.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smooth show animation */
|
||||||
|
#priceDisplay.show {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Price update animation */
|
||||||
|
#currentPrice {
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price-update {
|
||||||
|
animation: priceUpdate 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes priceUpdate {
|
||||||
|
0% { transform: scale(1); }
|
||||||
|
50% { transform: scale(1.05); color: #3b82f6; }
|
||||||
|
100% { transform: scale(1); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsiveness */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
#priceDisplay {
|
||||||
|
margin-top: 8px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user