some fixes
This commit is contained in:
151
.history/.github/copilot-instructions_20251019201424.md
vendored
Normal file
151
.history/.github/copilot-instructions_20251019201424.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
|
||||
Reference in New Issue
Block a user