import express, { Express, Request, Response, NextFunction } from 'express';
import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
const app: Express = express();
const PORT: number = parseInt(process.env.PORT || '3000', 10);
const NODE_ENV: string = process.env.NODE_ENV || 'development';
// Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Routes
app.get('/', (_req: Request, res: Response): void => {
res.json({ message: 'Welcome to the Node.js TypeScript server!' });
});
app.get('/health', (_req: Request, res: Response): void => {
res.json({
status: 'OK',
timestamp: new Date().toISOString(),
environment: NODE_ENV,
port: PORT
});
});
// Error handling middleware
app.use((err: Error, _req: Request, res: Response, _next: NextFunction): void => {
console.error(err.stack);
res.status(500).json({ error: 'Something went wrong!' });
});
// Start server
app.listen(PORT, (): void => {
console.log(`🚀 Server is running on port ${PORT} in ${NODE_ENV} mode`);
});