Add initial project structure and documentation files

- Created .gitignore to exclude sensitive files and directories.
- Added API documentation in API_DOCUMENTATION.md.
- Included deployment instructions in DEPLOYMENT.md.
- Established project structure documentation in PROJECT_STRUCTURE.md.
- Updated README.md with project status and team information.
- Added recommendations and status tracking documents.
- Introduced testing guidelines in TESTING.md.
- Set up CI workflow in .github/workflows/ci.yml.
- Created Dockerfile for backend and frontend setups.
- Added various service and utility files for backend functionality.
- Implemented frontend components and pages for user interface.
- Included mobile app structure and services.
- Established scripts for deployment across multiple chains.
This commit is contained in:
defiQUG
2025-12-03 21:22:31 -08:00
commit 507d9a35b1
261 changed files with 47004 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
/**
* Initialize database with default configurations
* Run with: npx ts-node scripts/init-db.ts
*/
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function initDatabase() {
try {
console.log('=== Initializing Database ===\n');
// Create default system configs
const defaultConfigs = [
{
key: 'push_notification_provider',
value: 'firebase',
description: 'Default push notification provider',
category: 'notifications',
},
{
key: 'max_deployment_retries',
value: 3,
description: 'Maximum number of deployment retries',
category: 'deployment',
},
{
key: 'deployment_timeout',
value: 300000, // 5 minutes
description: 'Deployment timeout in milliseconds',
category: 'deployment',
},
{
key: 'audit_log_retention_days',
value: 90,
description: 'Number of days to retain audit logs',
category: 'logging',
},
{
key: 'rate_limit_requests_per_minute',
value: 100,
description: 'Default rate limit for API requests',
category: 'security',
},
];
for (const config of defaultConfigs) {
await prisma.systemConfig.upsert({
where: { key: config.key },
update: {},
create: config,
});
console.log(`✅ Created config: ${config.key}`);
}
console.log('\n✅ Database initialization complete!');
} catch (error: any) {
console.error('\n❌ Error initializing database:', error.message);
process.exit(1);
} finally {
await prisma.$disconnect();
}
}
initDatabase();

View File

@@ -0,0 +1,69 @@
/**
* Setup script to create initial admin user
* Run with: npx ts-node scripts/setup-admin.ts
*/
import { PrismaClient } from '@prisma/client';
import bcrypt from 'bcryptjs';
import readline from 'readline';
const prisma = new PrismaClient();
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
function question(query: string): Promise<string> {
return new Promise((resolve) => {
rl.question(query, resolve);
});
}
async function setupAdmin() {
try {
console.log('=== ASLE Admin Setup ===\n');
const email = await question('Admin email: ');
const password = await question('Admin password: ');
const role = await question('Role (admin/super_admin) [admin]: ') || 'admin';
// Check if admin already exists
const existing = await prisma.adminUser.findUnique({
where: { email },
});
if (existing) {
console.log('\n❌ Admin user already exists!');
process.exit(1);
}
// Hash password
const passwordHash = await bcrypt.hash(password, 10);
// Create admin user
const admin = await prisma.adminUser.create({
data: {
email,
passwordHash,
role: role as 'admin' | 'super_admin',
permissions: [],
active: true,
},
});
console.log('\n✅ Admin user created successfully!');
console.log(` ID: ${admin.id}`);
console.log(` Email: ${admin.email}`);
console.log(` Role: ${admin.role}`);
} catch (error: any) {
console.error('\n❌ Error creating admin user:', error.message);
process.exit(1);
} finally {
rl.close();
await prisma.$disconnect();
}
}
setupAdmin();