some fixes

This commit is contained in:
2025-10-22 21:22:44 +09:00
parent 46fad7ecc2
commit 6ff35e26f4
514 changed files with 156165 additions and 0 deletions

View 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