Initial commit

This commit is contained in:
2025-12-07 14:32:46 +00:00
commit 0a0969b8af
4726 changed files with 536089 additions and 0 deletions

49
app.js Normal file
View File

@@ -0,0 +1,49 @@
// app.js
require('dotenv').config();
// Enforce presence of JWT_SECRET
if (!process.env.JWT_SECRET) {
console.error('Error: JWT_SECRET is not defined in environment.');
process.exit(1);
}
const express = require('express');
// Route modules
const usersRoutes = require('./routes/users');
const chargerRoutes = require('./routes/chargers');
const sessionsRoutes = require('./routes/charger_sessions');
const pushRoutes = require('./routes/push'); // ✅ ADICIONA ISTO
const app = express();
// Global middlewares
app.use(express.json());
// Public routes (no auth)
app.use('/api/users', usersRoutes);
// Protected routes
// ✅ NOTA: chargers/sessions/push já têm router.use(verifyToken) internamente
// portanto não precisas passar verifyToken aqui.
app.use('/api/chargers', chargerRoutes);
app.use('/api/charger_sessions', sessionsRoutes);
app.use('/api/push', pushRoutes); // ✅ ISTO resolve /api/push/vapid-public-key
// Health check opcional (bom para produção)
app.get('/api/health', (req, res) => {
res.json({ success: true, ok: true });
});
// Error handler (catch-all)
app.use((err, req, res, next) => {
console.error('Unhandled error:', err);
res
.status(err.status || 500)
.json({
success: false,
message: err.message || 'Internal Server Error',
});
});
module.exports = app;