// app.js - Main Express application
const express = require('express')
const cors = require('cors')
const helmet = require('helmet')
const rateLimit = require('express-rate-limit')
const firewallMiddleware = require('./middleware/firewall')
const userRoutes = require('./routes/users')
const orderRoutes = require('./routes/orders')
const app = express()
// Basic middleware
app.use(helmet())
app.use(cors())
app.use(express.json({ limit: '10mb' }))
app.use(express.urlencoded({ extended: true }))
// Rate limiting
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // limit each IP to 100 requests per windowMs
})
app.use('/api', limiter)
// Intent Firewall protection
app.use('/api', firewallMiddleware)
// Routes
app.use('/api/users', userRoutes)
app.use('/api/orders', orderRoutes)
// Health check (bypass firewall)
app.get('/health', (req, res) => {
res.json({ status: 'healthy', timestamp: new Date().toISOString() })
})
// Error handling
app.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).json({ error: 'Something went wrong!' })
})
// Server port
const PORT = process.env.PORT || 3000
app.listen(PORT, () => {
`Server running on port ${PORT}`
})