feat: Add folder management, visual thumbnails in dashboard, and full-page editor

This commit is contained in:
Mohan Ki
2026-07-27 18:45:37 +05:30
parent 8b95c0d77b
commit 3a61488d26
6 changed files with 626 additions and 215 deletions
+12
View File
@@ -28,12 +28,14 @@ const redirectRoutes = require('./routes/redirect');
const analyticsRoutes = require('./routes/analytics');
const adminRoutes = require('./routes/admin');
const paymentsRoutes = require('./routes/payments');
const foldersRoutes = require('./routes/folders');
app.use('/api/auth', authRoutes);
app.use('/api/qr', qrRoutes);
app.use('/api/analytics', analyticsRoutes);
app.use('/api/admin', adminRoutes);
app.use('/api/payments', paymentsRoutes);
app.use('/api/folders', foldersRoutes);
// Support Traefik stripped prefixes
app.use('/auth', authRoutes);
@@ -41,6 +43,7 @@ app.use('/qr', qrRoutes);
app.use('/analytics', analyticsRoutes);
app.use('/admin', adminRoutes);
app.use('/payments', paymentsRoutes);
app.use('/folders', foldersRoutes);
app.use('/l', redirectRoutes);
@@ -112,7 +115,16 @@ app.get('/api/health', healthCheck);
app.get('/health', healthCheck);
// Auto-migrate schema
pgPool.query(`
CREATE TABLE IF NOT EXISTS folders (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);`).catch(console.error);
pgPool.query(`ALTER TABLE qr_codes ADD COLUMN IF NOT EXISTS name VARCHAR(255);`).catch(console.error);
pgPool.query(`ALTER TABLE qr_codes ADD COLUMN IF NOT EXISTS folder_id UUID REFERENCES folders(id) ON DELETE SET NULL;`).catch(console.error);
pgPool.query(`
CREATE TABLE IF NOT EXISTS qr_scans (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),