first commit of refactor

This commit is contained in:
KS Jannette
2026-02-27 09:58:18 -05:00
commit 0adfd70853
63 changed files with 10558 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
import express from 'express';
import { authenticate } from '../../middleware/authenticate.js';
import * as AddressController from '../../controllers/AddressController.js';
const router = express.Router();
// Apply authentication to all routes
router.use(authenticate);
// POST /addresses - Create Blockchain Address
router.post('/', AddressController.create);
// GET /addresses - List Addresses
router.get('/', AddressController.list);
// DELETE /addresses/:addressId - Delete Address
router.delete('/:addressId', AddressController.remove);
export default router;

View File

@@ -0,0 +1,12 @@
import express from 'express';
import { authenticate } from '../../middleware/authenticate.js';
import * as AlertEventController from '../../controllers/AlertEventController.js';
const router = express.Router();
router.use(authenticate);
router.get('/', AlertEventController.list);
export default router;

View File

@@ -0,0 +1,18 @@
import express from 'express';
import { authenticate } from '../../middleware/authenticate.js';
import * as AlertRuleController from '../../controllers/AlertRuleController.js';
const router = express.Router();
router.use(authenticate);
router.post('/:addressId/alerts', AlertRuleController.create);
router.get('/:addressId/alerts', AlertRuleController.listByAddress);
router.patch('/:alertId', AlertRuleController.updateStatus);
router.delete('/:alertId', AlertRuleController.remove);
export default router;

View File

@@ -0,0 +1,16 @@
import express from 'express';
import { authenticate } from '../../middleware/authenticate.js';
import * as NotificationConfigController from '../../controllers/NotificationConfigController.js';
const router = express.Router();
router.use(authenticate);
router.get('/', NotificationConfigController.getConfig);
router.put('/', NotificationConfigController.updateConfig);
router.delete('/', NotificationConfigController.deleteConfig);
export default router;

View File

@@ -0,0 +1,17 @@
import express from 'express';
const router = express.Router();
// GET /status - System Status (mock)
router.get('/', (req, res) => {
// TEMP - Mock response until poller service is complete
res.json({
latestBlock: 0,
lag: 0,
status: 'healthy',
timestamp: new Date().toISOString()
});
});
export default router;

47
backend/api/server.js Normal file
View File

@@ -0,0 +1,47 @@
import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import addressesRouter from './routes/addresses.js';
import alertsRouter from './routes/alerts.js';
import alertEventsRouter from './routes/alertEvents.js';
import statusRouter from './routes/status.js';
import notificationConfigRouter from './routes/notificationConfig.js';
dotenv.config();
const app = express();
const PORT = process.env.PORT || 3001;
app.use(cors());
app.use(express.json());
// Health check
app.get('/api/health', (req, res) => {
res.json({
status: 'ok',
timestamp: new Date().toISOString(),
service: 'koin-ping-backend'
});
});
app.use('/api/addresses', addressesRouter);
app.use('/api/addresses', alertsRouter); // Alert routes include addressId in path
app.use('/api/alerts', alertsRouter); // Direct alert operations (PATCH, DELETE)
app.use('/api/alert-events', alertEventsRouter);
app.use('/api/status', statusRouter);
app.use('/api/notification-config', notificationConfigRouter);
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({
error: 'Something went wrong!',
message: process.env.NODE_ENV === 'development' ? err.message : undefined
});
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
console.log(`Environment: ${process.env.NODE_ENV || 'development'}`);
});