Files
web-cad/backend/server.js
T

47 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const express = require('express');
const cors = require('cors');
const passport = require('passport');
require('./config/passport'); // Load JWT strategy
const User = require('./models/User');
const Block = require('./models/Block');
const { sequelize, connectDB } = require('./config/database');
const app = express();
const PORT = process.env.PORT || 5000;
// Middleware
app.use(cors());
app.use(express.json({ limit: '50mb' }));
app.use(passport.initialize());
// Serve static frontend
app.use(express.static('public'));
// Routes
app.use('/api/auth', require('./routes/auth'));
app.use('/api/drawings', require('./routes/drawings'));
app.use('/api/blocks', require('./routes/blocks'));
app.use('/api/dxf', require('./routes/dxf'));
app.use('/api/plugins', require('./routes/plugins'));
// Health check
app.get('/api/health', (req, res) => res.json({ status: 'ok' }));
// SPA fallback serve index.html for all non-API routes
app.get(/^(?!\/api\/).*/, (req, res) => {
res.sendFile('public/index.html', { root: __dirname });
});
// Connect DB and start
connectDB().then(() => sequelize.sync({ force: false })).then(async () => {
// Seed admin user if not exists
const bcrypt = require('bcryptjs');
const existing = await User.findOne({ where: { email: 'admin@cad.local' } });
if (!existing) {
await User.create({ email: 'admin@cad.local', password: 'admin123' });
console.log('Admin user created: admin@cad.local / admin123');
}
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
}).catch(err => {
console.error('Unable to start server:', err);
});