# Quick Start Guide - Python Backend ## Step-by-Step Setup ### 1. Install Python Make sure you have Python 3.8 or higher installed: ```bash python --version ``` ### 2. Create Virtual Environment ```bash cd backend python -m venv venv ``` ### 3. Activate Virtual Environment **Windows:** ```powershell .\venv\Scripts\Activate.ps1 ``` **Linux/Mac:** ```bash source venv/bin/activate ``` ### 4. Install Dependencies ```bash pip install -r requirements.txt ``` ### 5. Verify Database Connection Make sure MySQL is running and the database `myapp` exists: ```sql CREATE DATABASE IF NOT EXISTS myapp; ``` ### 6. Run the Server ```bash python start.py ``` Or: ```bash python app.py ``` The server should now be running at `http://0.0.0.0:3000` ## Testing the API Test if the server is working: ```bash curl http://localhost:3000/api/training-projects ``` ## Common Issues ### ModuleNotFoundError If you get import errors, make sure you've activated the virtual environment and installed all dependencies. ### Database Connection Error Check that: - MySQL is running - Database credentials in `app.py` are correct - Database `myapp` exists ### Port Already in Use If port 3000 is already in use, modify the port in `app.py`: ```python app.run(host='0.0.0.0', port=3001, debug=True) ``` ## What Changed from Node.js 1. **Server Framework**: Express.js → Flask 2. **ORM**: Sequelize → SQLAlchemy 3. **HTTP Client**: node-fetch → requests 4. **Package Manager**: npm → pip 5. **Dependencies**: package.json → requirements.txt 6. **Startup**: `node server.js` → `python app.py` ## Next Steps 1. Test all API endpoints 2. Update frontend to point to the new Python backend (if needed) 3. Migrate any remaining Node.js-specific logic 4. Test file uploads and downloads 5. Test YOLOX training functionality ## File Structure Comparison **Before (Node.js):** ``` backend/ ├── server.js ├── package.json ├── routes/api.js ├── models/*.js └── services/*.js ``` **After (Python):** ``` backend/ ├── app.py ├── requirements.txt ├── routes/api.py ├── models/*.py └── services/*.py ```