117 lines
No EOL
3.1 KiB
Markdown
117 lines
No EOL
3.1 KiB
Markdown
# CodeRED-Astra Development Guide
|
|
|
|
## Project Structure
|
|
|
|
This is a hackathon-ready project with a clean separation between frontend and backend:
|
|
|
|
- **React Frontend** (`web-app/`): Modern React app with Vite and Tailwind CSS
|
|
- **Rust Engine** (`rust-engine/`): High-performance backend API server
|
|
- **Database**: MySQL 8.0 with phpMyAdmin for management
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
- Docker & Docker Compose
|
|
- Node.js 20+ (for local development)
|
|
- Rust 1.82+ (for local development)
|
|
|
|
### Development Setup
|
|
|
|
1. **Clone and setup environment**:
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your database passwords and API keys
|
|
```
|
|
|
|
2. **Start the entire stack**:
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
3. **Access the application**:
|
|
- Frontend: http://localhost (port 80)
|
|
- Rust API: http://localhost:8000
|
|
- phpMyAdmin: http://127.0.0.1:8080
|
|
|
|
### Local Development (Recommended for Hackathon)
|
|
|
|
**Frontend Development**:
|
|
```bash
|
|
cd web-app
|
|
npm install
|
|
npm run dev # Starts on http://localhost:5173
|
|
```
|
|
|
|
**Backend Development**:
|
|
```bash
|
|
cd rust-engine
|
|
cargo run # Starts on http://localhost:8000
|
|
```
|
|
|
|
## Team Workflow
|
|
|
|
### Frontend Team (React)
|
|
- Work in `web-app/src/`
|
|
- Main entry: `src/App.jsx`
|
|
- Add new components in `src/components/`
|
|
- API calls go through `/api/*` (auto-proxied to Rust engine)
|
|
- Use Tailwind CSS for styling
|
|
- Hot reload enabled with Vite
|
|
|
|
### Backend Team (Rust)
|
|
- Work in `rust-engine/src/`
|
|
- Main server: `src/main.rs`
|
|
- Add new modules in `src/`
|
|
- API endpoints start with `/api/`
|
|
- Database connection via SQLx
|
|
- CORS enabled for frontend communication
|
|
|
|
## API Communication
|
|
|
|
The frontend communicates with the Rust engine via:
|
|
```javascript
|
|
// This automatically proxies to http://rust-engine:8000 in Docker
|
|
// or http://localhost:8000 in local development
|
|
fetch('/api/health')
|
|
.then(response => response.json())
|
|
.then(data => console.log(data));
|
|
```
|
|
|
|
## Database Schema
|
|
|
|
Edit `rust-engine/src/main.rs` to add database migrations and models as needed.
|
|
|
|
## Environment Variables
|
|
|
|
Required in `.env`:
|
|
```
|
|
MYSQL_DATABASE=astra
|
|
MYSQL_USER=astraadmin
|
|
MYSQL_PASSWORD=your_secure_password
|
|
MYSQL_ROOT_PASSWORD=your_root_password
|
|
GEMINI_API_KEY=your_gemini_key
|
|
```
|
|
|
|
## Deployment
|
|
|
|
The project is containerized and ready for deployment:
|
|
- Frontend: Static files served via Vite preview
|
|
- Backend: Optimized Rust binary
|
|
- Database: Persistent MySQL data volume
|
|
|
|
## Hackathon Tips
|
|
|
|
1. **Frontend team**: Start with the existing App.jsx and build your UI components
|
|
2. **Backend team**: Add new API endpoints in the Rust main.rs file
|
|
3. **Database**: Use phpMyAdmin at http://127.0.0.1:8080 to manage data
|
|
4. **Testing**: The app shows connection status between frontend and backend
|
|
5. **Hot reload**: Both frontend and backend support hot reload during development
|
|
|
|
## Common Issues
|
|
|
|
- **CORS errors**: Already configured, but check Rust engine CORS settings if needed
|
|
- **Database connection**: Engine gracefully handles DB offline state for initial development
|
|
- **Port conflicts**: Web runs on 80, API on 8000, phpMyAdmin on 8080
|
|
- **Build failures**: Check Node.js and Rust versions match requirements
|
|
|
|
Happy hacking! 🚀 |