A professional full-stack web application for molecular docking using AutoDock Vina. This application provides an intuitive interface for submitting docking jobs, monitoring progress, and analyzing results.
- Modern React Frontend: Built with TypeScript, Material-UI, and professional UX design
- FastAPI Backend: High-performance Python backend with async support
- AutoDock Vina Integration: Professional molecular docking with configurable parameters
- Real-time Job Monitoring: Live status updates and progress tracking
- Interactive Results: Sortable tables, best result highlighting, and downloadable outputs
- Professional Architecture: Clean separation of concerns with proper project structure
windsurf-project/
├── backend/
│ ├── src/
│ │ ├── core/
│ │ │ ├── config.py # Application configuration
│ │ │ └── __init__.py
│ │ ├── models/
│ │ │ ├── schemas.py # Pydantic models
│ │ │ └── __init__.py
│ │ ├── routers/
│ │ │ ├── docking.py # Docking endpoints
│ │ │ ├── health.py # Health check
│ │ │ └── __init__.py
│ │ ├── services/
│ │ │ ├── vina_service.py # AutoDock Vina integration
│ │ │ └── __init__.py
│ │ ├── main.py # FastAPI application
│ │ └── __init__.py
│ └── requirements.txt
├── frontend/
│ ├── public/
│ │ ├── index.html
│ │ └── manifest.json
│ ├── src/
│ │ ├── components/
│ │ │ ├── DockingUpload.tsx # File upload and parameter configuration
│ │ │ ├── JobStatus.tsx # Real-time job monitoring
│ │ │ └── Results.tsx # Results visualization
│ │ ├── services/
│ │ │ └── api.ts # API client
│ │ ├── types/
│ │ │ └── index.ts # TypeScript type definitions
│ │ ├── App.tsx # Main application component
│ │ └── index.tsx # Application entry point
│ ├── package.json
│ └── tsconfig.json
└── README.md
- Node.js (v16 or higher)
- Python 3.8+
- AutoDock Vina
- AutoDockTools (prepare_receptor4.py, prepare_ligand4.py)
- Navigate to the backend directory:
cd backend- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Create a
.envfile (optional):
ALLOWED_ORIGINS=["http://localhost:3000"]
VINA_EXECUTABLE=vina
MAX_FILE_SIZE=104857600- Start the backend server:
cd src
python main.pyThe API will be available at http://localhost:8000 with documentation at http://localhost:8000/api/docs.
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm startThe frontend will be available at http://localhost:3000.
- Upload a receptor file (PDB/PDBQT format)
- Upload one or more ligand files (PDB/PDBQT/SDF/MOL2 formats)
- Configure docking parameters:
- Binding site center coordinates (X, Y, Z)
- Search space dimensions
- Exhaustiveness and number of modes
- Submit the job and receive a unique job ID
- Track job status in real-time
- View progress indicators and statistics
- Get detailed information about successful and failed docks
- View sortable results table with binding affinities and RMSD values
- Identify the best docking result with highlighted metrics
- Download result files for further analysis
- Quality assessment with color-coded indicators
GET /api/health- Service health status
POST /api/docking/submit- Submit new docking jobGET /api/docking/status/{job_id}- Get job status and resultsGET /api/docking/results/{job_id}- Download result filesDELETE /api/docking/job/{job_id}- Delete job and cleanup files
- Material Design: Modern, professional interface using Material-UI
- Responsive Layout: Works seamlessly on desktop and mobile devices
- Drag & Drop: Intuitive file upload with drag-and-drop support
- Real-time Updates: Live job status monitoring with automatic refresh
- Data Visualization: Interactive tables with sorting and filtering
- Progress Indicators: Visual feedback for long-running operations
- Binding Site Center: X, Y, Z coordinates of the binding site
- Search Space Size: Dimensions of the search area in Angstroms
- Exhaustiveness: Search thoroughness (1-32, default: 8)
- Number of Modes: Binding poses to generate (1-20, default: 9)
Supported Receptor Formats:
- PDB (Protein Data Bank)
- PDBQT (AutoDock format)
Supported Ligand Formats:
- PDB (Protein Data Bank)
- PDBQT (AutoDock format)
- SDF (Structure Data File)
- MOL2 (Tripos format)
The backend uses FastAPI with a clean architecture:
- Models: Pydantic schemas for request/response validation
- Services: Business logic and AutoDock Vina integration
- Routers: API endpoints and HTTP handling
- Core: Configuration and shared utilities
The frontend is built with React and TypeScript:
- Components: Reusable UI components with Material-UI
- Services: API client with error handling
- Types: TypeScript definitions for type safety
- State Management: React hooks for local state
This project is licensed under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
For questions or issues, please open a GitHub issue or contact the development team.
Built with ❤️ using React, FastAPI, and AutoDock Vina