gogo-movement-starter
Version:
GOGO Movement Network React Starter Template - Complete React + Vite + Move contracts setup
152 lines (135 loc) • 5.29 kB
JavaScript
console.log(' ▄████ ▄████ ▄████ ▄████ ');
console.log(' ██ ██ ██ ██ ██ ██ ');
console.log(' ██ ▄▄█ ██ ██ ██ ▄▄█ ██ ██ ');
console.log(' ██ ██ ██ ██ ██ ██ ██ ██ ');
console.log(' ▀████ ▀████ ▀████ ▀████ ');
console.log('▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀');
console.log('');
console.log(' Built on Moveindustries');
console.log('');
console.log('🎯 Welcome to GOGO - Movement Network Starter Template');
console.log('');
console.log('✨ GOGO React Starter Template - Ready to build on Movement!');
console.log('📦 Version: 1.0.0');
console.log('🔗 Homepage: https://movementlabs.xyz');
console.log('📚 Documentation: https://docs.movementnetwork.xyz/');
console.log('');
console.log('🚀 This template includes:');
console.log('• GOGO React components and hooks');
console.log('• Built-in wallet adapters (@razorlabs/razorkit)');
console.log('• Movement Network integration');
console.log('• TypeScript support');
console.log('• Demo application with examples');
console.log('');
console.log('🎯 Installing GOGO React template...');
console.log('');
// Import required modules
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { execSync } from 'child_process';
// Get __dirname equivalent for ES modules
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Recursive copy function
function copyRecursive(src, dest) {
if (fs.statSync(src).isDirectory()) {
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
const files = fs.readdirSync(src);
for (const file of files) {
const srcPath = path.join(src, file);
const destPath = path.join(dest, file);
copyRecursive(srcPath, destPath);
}
} else {
fs.copyFileSync(src, dest);
}
}
// Template installation function
async function installTemplate() {
const currentDir = process.cwd();
const templateDir = path.join(__dirname, '..');
console.log('📁 Copying React template files...');
// Files to copy
const filesToCopy = [
'src',
'public',
'scripts',
'package.json',
'vite.config.ts',
'tsconfig.json',
'tsconfig.app.json',
'tsconfig.node.json',
'eslint.config.js',
'index.html',
'.gitignore'
];
try {
// Copy template files
for (const file of filesToCopy) {
const sourcePath = path.join(templateDir, file);
const destPath = path.join(currentDir, file);
if (fs.existsSync(sourcePath)) {
copyRecursive(sourcePath, destPath);
console.log(`✅ Copied ${file}`);
}
}
console.log('');
console.log('🎉 GOGO React template installed successfully!');
console.log('');
// Step 1.5: Install dependencies (only if not already in postinstall)
if (!process.env.npm_lifecycle_event || process.env.npm_lifecycle_event !== 'postinstall') {
console.log('📦 Installing dependencies...');
console.log('');
try {
execSync('npm install', { stdio: 'inherit' });
console.log('✅ Dependencies installed successfully!');
console.log('');
} catch (error) {
console.error('❌ npm install failed:', error.message);
console.log('You can run "npm install" manually later.');
console.log('');
}
}
// Step 2: Run postinstall setup automatically
console.log('🚀 Step 2: Setting up Movement Network integration...');
console.log('');
try {
// Import and run postinstall setup
const { setupMovementEnvironment } = await import('./postinstall-setup.js');
const setupSuccess = await setupMovementEnvironment();
if (setupSuccess) {
console.log('');
console.log('🎉 Complete GOGO installation finished!');
console.log('');
console.log('✅ What you now have:');
console.log('• Complete React + Vite template');
console.log('• Movement Network integration');
console.log('• Move smart contracts ready');
console.log('• Interactive setup complete');
console.log('');
console.log('🚀 Ready to start development:');
console.log('1. npm run dev (start React app)');
console.log('2. cd contracts (work with Move contracts)');
console.log('3. aptos move compile (compile contracts)');
console.log('4. aptos move publish (deploy to Movement Network)');
console.log('');
console.log('🎯 Your GOGO Movement dapp is ready!');
}
} catch (error) {
console.error('❌ Movement setup failed:', error.message);
console.log('');
console.log('📋 You can still run manual setup:');
console.log(' npm run setup-movement');
}
return true;
} catch (error) {
console.error('❌ Template installation failed:', error.message);
return false;
}
}
// Run template installation
installTemplate().catch(console.error);