init commit

This commit is contained in:
2025-10-19 18:27:00 +09:00
commit 150891b29d
219 changed files with 70016 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
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);