Files
picpeak/backend/migrations/init.js
T
paul 6c82958c79 Add complete frontend implementation and Docker deployment setup
- Implement React frontend with TypeScript and Tailwind CSS
- Add scrappbook.de-inspired UI design with photo galleries
- Implement authentication, photo viewing, and download features
- Add Docker Swarm configuration with Traefik reverse proxy
- Set up Drone CI/CD pipeline for automated deployments
- Add monitoring stack with Prometheus and Grafana
- Create comprehensive deployment documentation
- Add simple local development setup with docker-compose.local.yml

Features:
- Password-protected galleries with expiration warnings
- Responsive photo grid with lightbox viewer
- Bulk download functionality
- Hot reload development environment
- Email testing with Mailhog
- Production-ready deployment scripts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 20:23:13 +02:00

38 lines
1.0 KiB
JavaScript

const bcrypt = require('bcrypt');
const { db, initializeDatabase } = require('../src/database/db');
async function runMigrations() {
console.log('Running database migrations...');
try {
// Initialize tables
await initializeDatabase();
// Create default admin user if none exists
const adminExists = await db('admin_users').first();
if (!adminExists) {
const defaultPassword = 'admin123'; // Change this!
const passwordHash = await bcrypt.hash(defaultPassword, 10);
await db('admin_users').insert({
username: 'admin',
email: 'admin@example.com',
password_hash: passwordHash
});
console.log('Default admin user created:');
console.log('Username: admin');
console.log('Password: admin123');
console.log('⚠️ Please change this password immediately!');
}
console.log('Migrations completed successfully');
process.exit(0);
} catch (error) {
console.error('Migration failed:', error);
process.exit(1);
}
}
runMigrations();