# ASLE Quick Start Guide Get up and running with the ASLE platform in minutes. ## Prerequisites - Node.js 20+ - Docker and Docker Compose (optional, for local services) - PostgreSQL 15+ (or use Docker) - Git with submodule support ## Step 1: Clone Repository ```bash # Clone with submodules (IMPORTANT!) git clone --recurse-submodules https://github.com/Order-of-Hospitallers/asle.git cd asle # If you already cloned without submodules: git submodule update --init --recursive ``` ## Step 2: Configure Database Choose one method to set up PostgreSQL: ### Option A: Docker (Recommended) ```bash # Start PostgreSQL container docker-compose up -d postgres # Update backend/.env DATABASE_URL="postgresql://asle:asle_password@localhost:5432/asle?schema=public" ``` ### Option B: Local PostgreSQL ```bash # Create database (requires PostgreSQL admin access) sudo -u postgres psql -c "CREATE DATABASE asle;" # Or: createdb asle # Update backend/.env with your connection string DATABASE_URL="postgresql://your_user:your_password@localhost:5432/asle?schema=public" ``` See [DATABASE_SETUP.md](./DATABASE_SETUP.md) for detailed database configuration options. ## Step 3: Backend Setup ```bash cd backend # Install dependencies npm install # Copy and configure environment cp .env.example .env # Edit .env with your configuration (see DATABASE_SETUP.md) # Generate Prisma client npm run prisma:generate # Run database migrations npm run prisma:migrate # Initialize database npm run setup:db # Create admin user npm run setup:admin # Start backend (development) npm run dev ``` Backend will run on `http://localhost:4000` ## Step 4: Frontend Setup ```bash cd ../frontend # Install dependencies npm install # Copy and configure environment cp .env.example .env.local # Edit .env.local with your configuration # Start frontend (development) npm run dev ``` Frontend will run on `http://localhost:3000` ## Step 5: Deploy Contracts (Optional) ```bash cd ../contracts # Install Foundry dependencies forge install # Build contracts forge build # Run tests forge test # Deploy (see DEPLOYMENT.md for details) forge script script/Deploy.s.sol:DeployScript --rpc-url $RPC_URL --broadcast --private-key $PRIVATE_KEY ``` ## Step 6: Access the Application - **Frontend Dashboard**: http://localhost:3000 - **Admin Dashboard**: http://localhost:3000/admin - **User DApp**: http://localhost:3000/dapp - **Backend API**: http://localhost:4000/api - **GraphQL Playground**: http://localhost:4000/graphql ## Common Issues ### Submodules Not Cloned If you see empty `contracts/` or `frontend/` directories: ```bash git submodule update --init --recursive ``` ### Database Connection Error 1. Verify PostgreSQL is running 2. Check `DATABASE_URL` in `backend/.env` 3. Ensure database exists: `createdb asle` ### Port Already in Use Change `PORT` in `backend/.env` or kill the process: ```bash lsof -i :4000 kill -9 ``` ### Missing Dependencies ```bash # Backend cd backend && npm install # Frontend cd frontend && npm install # Contracts cd contracts && forge install ``` ## Next Steps 1. **Configure Environment**: Update all `.env` files with your API keys and configuration 2. **Deploy Contracts**: Deploy smart contracts to your target network 3. **Set Up KYC/AML**: Configure KYC/AML provider credentials (optional) 4. **Configure Push Notifications**: Set up push notification providers (optional) 5. **Review Documentation**: See [README.md](./README.md) and [DEPLOYMENT.md](./DEPLOYMENT.md) ## Development Workflow ### Making Changes 1. **Backend Changes**: Edit files in `backend/src/`, changes auto-reload with `npm run dev` 2. **Frontend Changes**: Edit files in `frontend/app/` or `frontend/components/`, changes auto-reload 3. **Contract Changes**: Edit files in `contracts/src/`, run `forge build` and `forge test` ### Running Tests ```bash # Backend tests cd backend && npm test # Contract tests cd contracts && forge test ``` ### Database Migrations ```bash cd backend npm run prisma:migrate dev --name migration_name ``` ## Production Deployment See [DEPLOYMENT.md](./DEPLOYMENT.md) for detailed production deployment instructions. ## Getting Help - **Documentation**: See `docs/` directory - **API Reference**: See [API_DOCUMENTATION.md](./API_DOCUMENTATION.md) - **Project Structure**: See [PROJECT_STRUCTURE.md](./PROJECT_STRUCTURE.md) - **Submodules**: See [SUBMODULE_SETUP.md](./SUBMODULE_SETUP.md)