DockIt

AutoDock Vina, reimagined for the web and mobile.

Launch Web App GitHub

Also available as a native iOS & Android app built with Expo React Native.

Features

Protein Search

Search 200,000+ structures from RCSB Protein Data Bank with organism, resolution, and method metadata.

RCSB PDB

Ligand Search

Search 100M+ compounds from PubChem by name, SMILES, or drug name. View 2D structures and properties.

PubChem

Protein Preparation

Automatic removal of water molecules and heteroatoms. Protonation at pH 7.4 with partial charges.

Automated

AutoDock Vina

Full docking engine with configurable grid box, exhaustiveness, energy range, and number of poses.

Vina 1.2.5

Job Queue

Submit jobs and track progress in real time. Queue position, status updates, and completion notifications.

Background Worker

Email Notifications

Receive styled HTML emails when docking completes or fails, with direct links to results.

SMTP

3D Viewer

Interactive Mol* viewer for proteins, ligands, and docked poses with full rotation and zoom.

Mol*

Download Results

Export docked poses in PDB or PDBQT format for use in PyMOL, Chimera, or other tools.

PDB / PDBQT

Examples Gallery

16 curated famous dockings with search and category filters. Tap to start docking instantly.

Imatinib, Aspirin, Caffeine …

Mobile App

Native iOS & Android app built with Expo React Native. Same features, same backend.

Expo SDK 52

Examples Gallery

MolDock includes 16 curated famous protein-ligand dockings across 7 categories. Search, filter, and tap any example to skip straight to docking with pre-filled protein and ligand.

LigandProteinCategoryDescription
ImatinibBCR-ABL Kinase (1IEP)CancerFirst targeted tyrosine kinase inhibitor for CML
Nutlin-3aMDM2 (4HG7)CancerReactivates p53 tumor suppressor
AspirinCOX-2 (5IKR)PainWorld's most widely used drug
CaffeineA2A Receptor (3RFM)NeuroscienceBlocks adenosine receptors
SildenafilPDE5 (1UDT)CardiovascularFamous repurposed drug
OseltamivirNeuraminidase (2HT8)AntiviralTamiflu — influenza antiviral
RemdesivirRdRp (7BV2)AntiviralCOVID-19 RNA replication terminator
LopinavirHIV-1 Protease (1MUI)AntiviralHIV protease inhibitor
PaclitaxelTubulin (1JFF)CancerTaxol — stabilizes microtubules
MetforminAMPK (4CFF)MetabolicMost prescribed diabetes drug
TamoxifenERα (3ERT)CancerBreast cancer SERM
DonepezilAChE (2RG6)NeuroscienceFirst-line Alzheimer's treatment
ErlotinibEGFR Kinase (3NYA)CancerLung cancer EGFR inhibitor
AtorvastatinHMG-CoA (3OGP)CardiovascularLipitor — best-selling drug in history
MethotrexateDHFR (2ITO)CancerAntimetabolite chemotherapy
Penicillin GPBP (1PWC)AntibioticStarted the antibiotic revolution

Categories: Cancer, Antiviral, Neuroscience, Cardiovascular, Pain & Inflammation, Metabolic, Antibiotic

Docking Workflow

MolDock guides you through a 4-step molecular docking process:

StepRouteDescription
1 /docking/protein Search and select a protein from RCSB PDB. View it in 3D with Mol*.
2 /docking/marinate Prepare the protein — remove water molecules and heteroatoms, add charges.
3 /docking/ligand Search PubChem for a ligand. View molecular properties and 2D structure.
4 /docking/cook Configure docking parameters (grid box, exhaustiveness), add email, and submit.
/examples Browse 16 curated famous dockings with search and category filters.
/dashboard Real-time job tracker. Auto-polls every 3 seconds for status updates.
/results/[jobId] View docked pose in 3D, binding affinities table, download PDB/PDBQT.

Mobile App (iOS & Android)

MolDock includes a standalone Expo React Native mobile app in the mobile/ directory. It provides the same 4-step docking workflow, examples gallery, and results viewer — optimized for touch.

No CORS Proxy

Mobile apps call RCSB and PubChem APIs directly — no server-side proxy needed.

Same Backend

Uses the same CapRover backend at lcbc-server.apps.johnseong.com. No changes required.

3D WebView

Protein structures rendered in native WebView components via RCSB 3D viewer.

Expo Router

File-based navigation matching the web app's route structure.

Running Locally

cd mobile
npm install
npx expo start

Scan the QR code with Expo Go on your phone, or press i for iOS simulator / a for Android emulator.

Building for App Store / Play Store

# Install EAS CLI
npm install -g eas-cli

# Configure (first time only)
eas build:configure

# Build for both platforms
eas build --platform all

# Submit to stores
eas submit --platform ios
eas submit --platform android

App Configuration

FieldValue
Bundle ID (iOS)com.johnseong.dockit
Package (Android)com.johnseong.dockit
Backend URLhttps://lcbc-server.apps.johnseong.com
ThemeDark mode only
OrientationPortrait

Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/johnseong/LCBC-Dock.git
cd LCBC-Dock

# Install frontend dependencies
npm install

# Install backend dependencies
pip3 install -r requirements.txt

# Copy and configure environment variables
cp .env.example .env

Development

# Start both frontend and backend concurrently
npm run dev

# Or run separately:
npm run next-dev      # Frontend on :3000
npm run fastapi-dev   # Backend on :8000

Open http://localhost:3000 to access the app.

API Reference

The FastAPI backend exposes a RESTful API. Interactive docs are available at /docs when the backend is running.

Protein Endpoints

MethodEndpointDescription
GET /api/proteins/search?q={query} Search RCSB PDB with detailed metadata
GET /api/proteins/{pdb_id} Get protein details (title, organism, resolution)
GET /api/proteins/{pdb_id}/center Compute geometric center for grid box

Ligand Endpoints

MethodEndpointDescription
GET /api/ligands/search?q={query} Search PubChem by name or SMILES
GET /api/ligands/{cid} Get ligand details, synonyms, image URL
GET /api/ligands/{cid}/sdf Download 3D SDF structure

Docking Endpoints

MethodEndpointDescription
POST /api/dock Submit a docking job
GET /api/jobs/{job_id} Get job status and queue position
GET /api/results/{job_id} Get full results with poses and affinities
GET /api/results/{job_id}/download/pdb Download docked output as PDB
GET /api/results/{job_id}/download/pdbqt Download docked output as PDBQT

POST /api/dock — Request Body

{
  "protein_pdb_id": "4HG7",
  "ligand_cid": 11314340,
  "ligand_name": "Nutlin-3a",
  "center_x": 0.0,        // auto-computed if all zeros
  "center_y": 0.0,
  "center_z": 0.0,
  "size_x": 20.0,         // grid box size in Angstroms
  "size_y": 20.0,
  "size_z": 20.0,
  "exhaustiveness": 8,     // 1-32, higher = more thorough
  "num_modes": 9,          // number of poses to generate
  "energy_range": 3.0,     // kcal/mol
  "email": "user@example.com"  // optional
}

Configuration

All configuration is through environment variables. Copy .env.example to .env and update:

VariableDescriptionDefault
SMTP_HOSTSMTP server hostnamesmtp.gmail.com
SMTP_PORTSMTP server port587
SMTP_USERSMTP username / email
SMTP_PASSSMTP password or app password
FROM_EMAILSender address for notificationsnoreply@dockit.app
BASE_URLPublic URL (for email links)https://lcbc-client.apps.johnseong.com
LCBC_DB_PATHSQLite database file pathlcbc_dock.db
VINA_PATHAutoDock Vina executable pathvina

Gmail Setup

To use Gmail for notifications:

  1. Enable 2-Factor Authentication on your Google account
  2. Generate an App Password
  3. Set SMTP_USER to your Gmail address and SMTP_PASS to the app password

CapRover Deployment

MolDock uses two CapRover apps: lcbc-client (frontend, port 3000) and lcbc-server (backend, port 8000).

Prerequisites

Deploy Script

The included deploy.sh handles the captain-definition swap automatically:

# Login to CapRover (one-time, saves credentials)
caprover login

# Deploy everything (frontend + backend)
bash deploy.sh all

# Deploy frontend only
bash deploy.sh frontend

# Deploy backend only
bash deploy.sh backend

CapRover App Setup

AppDockerfileContainer Port
lcbc-clientDockerfile.frontend3000
lcbc-serverDockerfile.backend8000

Backend Configuration

In CapRover dashboard → lcbc-serverApp Configs:

Bulk Edit Environment Variables

Go to Environmental Variables → Bulk Edit and paste:

SMTP_USER=yourname@gmail.com
SMTP_PASS=your_16_char_app_password
FROM_EMAIL=yourname@gmail.com
BASE_URL=https://lcbc-client.apps.johnseong.com

Persistent Storage

Go to Persistent Directories and add:

Path in AppLabel
/app/datalcbc-data

This keeps the SQLite database alive across redeploys.

HTTPS

Go to HTTP Settings → Enable HTTPS for both apps.

Verify Deployment

# Check backend health
curl https://lcbc-server.apps.johnseong.com/
# Expected: {"message":"MolDock API v2.0 is running!","docs":"/docs"}

# Check frontend
open https://lcbc-client.apps.johnseong.com

# If backend returns 502, redeploy it
bash deploy.sh backend

Docker (Standalone)

The backend Docker image includes AutoDock Vina 1.2.5 and Open Babel pre-installed.

Backend

docker build -f Dockerfile.backend -t dockit-api .

docker run -p 8000:8000 \
  -e SMTP_USER=your@email.com \
  -e SMTP_PASS=your-app-password \
  -e BASE_URL=https://lcbc-client.apps.johnseong.com \
  -v lcbc-data:/app/data \
  dockit-api

The -v lcbc-data:/app/data flag persists the SQLite database across container restarts.

Frontend

docker build -f Dockerfile.frontend -t dockit-web .
docker run -p 3000:3000 dockit-web

Architecture

Web Frontend

Next.js 13 with App Router, React, TypeScript, Tailwind CSS, Mol* (3D molecular viewer), Material UI icons.

Mobile App

Expo SDK 52, React Native, Expo Router, WebView for 3D viz. Direct API calls (no CORS proxy).

Backend

FastAPI (Python) with async endpoints. Background docking worker thread processes jobs from SQLite queue.

Docking Engine

AutoDock Vina 1.2.5 for molecular docking. Open Babel for file format conversions (PDB, PDBQT, SDF).

Data Sources

RCSB PDB for protein structures. PubChem for small molecule / ligand data and 3D conformers.

Deployment

CapRover (Docker PaaS) for web frontend + backend. EAS Build for iOS and Android app store releases.

Docking Pipeline

When a job is submitted, the background worker:

  1. Downloads the protein PDB from RCSB
  2. Cleans the protein (removes water, heteroatoms)
  3. Auto-computes grid center if not specified
  4. Converts protein to PDBQT format (via Open Babel)
  5. Downloads the ligand 3D SDF from PubChem
  6. Converts ligand to PDBQT format
  7. Runs AutoDock Vina with user-specified parameters
  8. Parses output poses and binding affinities
  9. Converts docked output to PDB for viewer
  10. Stores results in database and sends email notification