7c0d422228
Ground-up TypeScript rewrite of the Vector hardware parts inventory
system. Ships the full roadmap (Phases 0-8) in one initial commit:
- pnpm + Turbo monorepo: apps/{api,web,e2e}, packages/{db,shared,ui,config}
- Express 5 + Prisma 5 + zod validation + JWT w/ refresh-token rotation
- React 19 + Vite + shadcn/ui + TanStack Query/Table + nuqs URL state
- Repair/RMA, tags, bulk ops, saved views, CSV audit export
- Analytics dashboard on Recharts + EOL tracking
- Signed webhook subscriptions (HMAC-SHA256) with in-process emitter
- Vitest unit tests (shared schemas, api services/helpers) + Playwright skeleton
- Gitea Actions CI (lint, typecheck, test+coverage, build) + Renovate
Deferred follow-ups: Postgres cutover (data-migration script ready),
BullMQ worker for webhook delivery, @react-pdf PDF export, CSV import wizard.
28 lines
640 B
TypeScript
28 lines
640 B
TypeScript
import bcrypt from 'bcryptjs';
|
|
import { prisma } from '../src/client.js';
|
|
|
|
async function main() {
|
|
const passwordHash = await bcrypt.hash('admin', 12);
|
|
|
|
const admin = await prisma.user.upsert({
|
|
where: { username: 'admin' },
|
|
update: {},
|
|
create: {
|
|
username: 'admin',
|
|
email: 'admin@vector.local',
|
|
passwordHash,
|
|
role: 'ADMIN',
|
|
},
|
|
});
|
|
|
|
console.log(`Seeded admin user: ${admin.username} (${admin.email})`);
|
|
console.log('Default password: admin — change this immediately!');
|
|
}
|
|
|
|
main()
|
|
.catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
})
|
|
.finally(() => prisma.$disconnect());
|