snowva-backend / src /index.ts
zerito's picture
Deploy backend update Tue Jan 20 16:29:46 CET 2026
4a51c37
Raw
History Blame Contribute Delete
1.47 kB
import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import compression from 'compression';
import trackRoutes from './routes/trackRoutes';
import adventureRoutes from './routes/adventureRoutes';
import activityRoutes from './routes/activityRoutes';
import { TrackModel } from './models/TrackModel';
import { AdventureModel } from './models/AdventureModel';
import { ActivityModel } from './models/ActivityModel';
dotenv.config();
const app = express();
const port = Number.parseInt(process.env.PORT ?? '3000', 10);
const host = process.env.HOST || '0.0.0.0';
app.use(cors());
app.use(compression());
app.use(express.json());
// Initialize database tables
async function initializeDatabase() {
try {
await TrackModel.ensureTable();
await AdventureModel.ensureTable();
await ActivityModel.ensureTable();
console.log('Database tables initialized successfully.');
} catch (error) {
console.error('Error initializing database tables:', error);
}
}
initializeDatabase();
// Health check endpoint
app.get('/api/health', (req, res) => {
res.status(200).send('OK');
});
// Public ski tracks endpoints
app.use('/api/tracks', trackRoutes);
// UI taxonomy endpoints
app.use('/api/activities', activityRoutes);
// User adventures endpoints
app.use('/api/adventures', adventureRoutes);
app.listen(port, host, () => {
console.log(`Server running on http://${host}:${port}`);
});