Add Node.js/Express backend with PostgreSQL and wire frontend to API
- Server: Express.js with 13 API route files (auth, regulations, contacts, calendar, truck stops, bridges, weigh stations, alerts, load board, escort locator, orders, documents, contributions) - Database: PostgreSQL with Prisma ORM, 15 models covering all modules - Auth: JWT + bcrypt with role-based access control (driver/carrier/escort/admin) - Geospatial: Haversine distance filtering on truck stops, bridges, escorts - Seed script: Imports all existing mock data (51 states, contacts, equipment, truck stops, bridges, weigh stations, alerts, seasonal restrictions) - Frontend: All 10 data-driven pages now fetch from /api instead of mock-data.js - API client (api.js): Compatibility layer that transforms API responses to match existing frontend rendering code, minimizing page-level changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
24
server/src/middleware/errorHandler.js
Normal file
24
server/src/middleware/errorHandler.js
Normal file
@@ -0,0 +1,24 @@
|
||||
function errorHandler(err, req, res, next) {
|
||||
console.error(`[ERROR] ${err.message}`);
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
console.error(err.stack);
|
||||
}
|
||||
|
||||
if (err.name === 'ValidationError') {
|
||||
return res.status(400).json({ error: err.message });
|
||||
}
|
||||
|
||||
if (err.code === 'P2002') {
|
||||
return res.status(409).json({ error: 'A record with that value already exists.' });
|
||||
}
|
||||
|
||||
if (err.code === 'P2025') {
|
||||
return res.status(404).json({ error: 'Record not found.' });
|
||||
}
|
||||
|
||||
res.status(err.status || 500).json({
|
||||
error: process.env.NODE_ENV === 'development' ? err.message : 'Internal server error',
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = errorHandler;
|
||||
Reference in New Issue
Block a user