Add ESLint + Prettier + EditorConfig tooling at repo root

v1.0 Phase 1.1 — repo-wide lint/format baseline.

- eslint.config.mjs (flat config) lints server, client, shared
- .prettierrc.json, .prettierignore, .editorconfig, .nvmrc
- Root package.json holds shared devDeps; per-package scripts keep
  their typecheck + test runners
- Fix 7 lint issues surfaced by the baseline run:
  - TicketDetail.tsx: replace ternary-with-side-effects with if/else
  - admin/Users.tsx: escape apostrophe in JSX
  - errorHandler.ts: typed err as unknown with ErrorLike refinement
  - users.ts: Prisma.UserUpdateInput instead of Record<string, any>
  - seed.ts: drop unused goddard binding
- Run prettier across tracked sources for a clean formatting baseline
This commit is contained in:
2026-04-18 14:47:34 -04:00
parent 2a6090e473
commit 27d2ab0f0d
48 changed files with 14460 additions and 1096 deletions
+26 -26
View File
@@ -1,41 +1,41 @@
import 'express-async-errors'
import express from 'express'
import cors from 'cors'
import dotenv from 'dotenv'
import 'express-async-errors';
import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import authRoutes from './routes/auth'
import ticketRoutes from './routes/tickets'
import ctiRoutes from './routes/cti'
import userRoutes from './routes/users'
import { authenticate } from './middleware/auth'
import { errorHandler } from './middleware/errorHandler'
import { startAutoCloseJob } from './jobs/autoClose'
import authRoutes from './routes/auth';
import ticketRoutes from './routes/tickets';
import ctiRoutes from './routes/cti';
import userRoutes from './routes/users';
import { authenticate } from './middleware/auth';
import { errorHandler } from './middleware/errorHandler';
import { startAutoCloseJob } from './jobs/autoClose';
dotenv.config()
dotenv.config();
if (!process.env.JWT_SECRET) {
console.error('FATAL: JWT_SECRET is not set')
process.exit(1)
console.error('FATAL: JWT_SECRET is not set');
process.exit(1);
}
const app = express()
const app = express();
app.use(cors({ origin: process.env.CLIENT_URL || 'http://localhost:5173' }))
app.use(express.json())
app.use(cors({ origin: process.env.CLIENT_URL || 'http://localhost:5173' }));
app.use(express.json());
// Public
app.use('/api/auth', authRoutes)
app.use('/api/auth', authRoutes);
// Protected
app.use('/api/tickets', authenticate, ticketRoutes)
app.use('/api/cti', authenticate, ctiRoutes)
app.use('/api/users', authenticate, userRoutes)
app.use('/api/tickets', authenticate, ticketRoutes);
app.use('/api/cti', authenticate, ctiRoutes);
app.use('/api/users', authenticate, userRoutes);
app.use(errorHandler)
app.use(errorHandler);
startAutoCloseJob()
startAutoCloseJob();
const PORT = Number(process.env.PORT) || 3000
const PORT = Number(process.env.PORT) || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`)
})
console.log(`Server running on port ${PORT}`);
});