refactor: simplify codebase and replace external dependencies with Bun built-ins

Backend changes:
- Merge duplicate award logic (calculatePointsAwardProgress + getPointsAwardEntityBreakdown)
- Simplify LoTW service (merge syncQSOs functions, simplify polling)
- Remove job queue abstraction (hardcode LoTW sync, remove processor registry)
- Consolidate config files (database.js, logger.js, jwt.js → single config.js)
- Replace bcrypt with Bun.password.hash/verify
- Replace Pino logger with console-based logger
- Fix: export syncQSOs and getLastLoTWQSLDate for job queue imports
- Fix: correct database path resolution using new URL()

Frontend changes:
- Simplify auth store (remove localStorage wrappers, reduce from 222→109 lines)
- Consolidate API layer (remove verbose JSDoc, 180→80 lines)
- Add shared UI components (Loading, ErrorDisplay, BackButton)

Dependencies:
- Remove bcrypt (replaced with Bun.password)
- Remove pino and pino-pretty (replaced with console logger)

Total: ~445 lines removed (net), 3 dependencies removed
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-16 18:27:10 +01:00
parent 41ccb5c185
commit 0db6b68f48
13 changed files with 520 additions and 813 deletions

View File

@@ -1,17 +1,14 @@
import bcrypt from 'bcrypt';
import { eq } from 'drizzle-orm';
import { db } from '../config/database.js';
import { db } from '../config.js';
import { users } from '../db/schema/index.js';
const SALT_ROUNDS = 10;
/**
* Hash a password using bcrypt
* Hash a password using Bun's built-in password hashing
* @param {string} password - Plain text password
* @returns {Promise<string>} Hashed password
*/
async function hashPassword(password) {
return bcrypt.hash(password, SALT_ROUNDS);
return Bun.password.hash(password);
}
/**
@@ -21,7 +18,7 @@ async function hashPassword(password) {
* @returns {Promise<boolean>} True if password matches
*/
async function verifyPassword(password, hash) {
return bcrypt.compare(password, hash);
return Bun.password.verify(password, hash);
}
/**