Files
antonym/server/index.ts
Dorian 814957cd37 feat: add eslint, image upload, tests, splash tagline, security hooks
- Restore CLAUDE.md with project conventions
- ESLint config with vue3-recommended + typescript
- Image upload endpoint (POST /api/admin/upload) with 5MB limit
- Admin product form now supports image upload/preview/removal
- Vitest config + 19 tests (crypto, validation, btcpay webhook, types)
- Restore .claude/ security hooks (block-risky-bash, protect-files)
- Logo splash now shows "EVERYTHING YOU LOVE IS A PSYOP" tagline
- Add .vite/ to gitignore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 00:47:42 +00:00

39 lines
1.4 KiB
TypeScript

import express from 'express'
import helmet from 'helmet'
import cors from 'cors'
import cookieParser from 'cookie-parser'
import { getDb } from './db/connection.js'
import { initSchema } from './db/schema.js'
import { seedProducts } from './db/seed.js'
import { productsRouter } from './routes/products.js'
import { ordersRouter } from './routes/orders.js'
import { webhooksRouter } from './routes/webhooks.js'
import { adminRouter } from './routes/admin.js'
import { adminProductsRouter } from './routes/adminProducts.js'
import { adminOrdersRouter } from './routes/adminOrders.js'
import { uploadRouter } from './routes/upload.js'
const app = express()
const port = Number(process.env.PORT) || 3141
app.use(helmet({ contentSecurityPolicy: false }))
app.use(cors({ origin: true, credentials: true }))
app.use(cookieParser())
app.use(express.json({ limit: '1mb' }))
const db = getDb()
initSchema(db)
seedProducts(db)
app.use('/api/products', productsRouter)
app.use('/api/orders', ordersRouter)
app.use('/api/webhooks', webhooksRouter)
app.use('/api/admin', adminRouter)
app.use('/api/admin/products', adminProductsRouter)
app.use('/api/admin/orders', adminOrdersRouter)
app.use('/api/admin/upload', uploadRouter)
app.get('/api/health', (_req, res) => { res.json({ ok: true, timestamp: new Date().toISOString() }) })
app.listen(port, () => { console.log(`Antonym API running on http://localhost:${port}`) })