A full-stack application for visualizing NASA imagery with tile-based mapping and advanced annotation features.
- Frontend: [https://visionexplorer.vercel.app](https://visionexplo## 🚀 Deployment
Use the automated deployment scripts:
Windows:
.\deploy.ps1
Linux/Mac:
chmod +x deploy.sh
./deploy.sh
VisionExplorer is configured for deployment on:
- Frontend: Vercel (recommended)
- Backend: Render (recommended)
- Connect Repository: Link your GitHub repository to Vercel
- Configure Build:
- Framework: Vite
- Root Directory:
visionexplorer-frontend
- Build Command:
npm run build
- Output Directory:
dist
- Environment Variables:
VITE_API_URL=https://your-backend-url.onrender.com
- Create Web Service: Connect your GitHub repository
- Configure Service:
- Root Directory:
visionexplorer-backend
- Build Command:
npm install
- Start Command:
npm start
- Root Directory:
- Environment Variables:
NODE_ENV=production PORT=3000 CORS_ORIGIN=https://your-frontend-url.vercel.app TILES_DIRECTORY=./tiles MAX_ZOOM_LEVEL=18 TILE_SIZE=256
- Frontend: Netlify, GitHub Pages, Firebase Hosting
- Backend: Railway, Heroku, DigitalOcean App Platform
For detailed deployment instructions, see DEPLOYMENT.md
- Backend API: https://visionexplorer-backend.onrender.com (Replace with your actual URL)
VisionExplorer/
├── visionexplorer-frontend/ # React + Vite frontend
├── visionexplorer-backend/ # Express.js tile server
├── package.json # Root scripts for running both
├── setup.bat # Windows setup script
├── setup.sh # Unix/Linux setup script
├── deploy.ps1 # Windows deployment script
├── deploy.sh # Unix/Linux deployment script
├── vercel.json # Vercel deployment config
├── render.yaml # Render deployment config
├── DEPLOYMENT.md # Detailed deployment guide
├── .gitignore # Git ignore rules
└── README.md # This file
Windows:
setup.bat
Linux/Mac:
chmod +x setup.sh
./setup.sh
- Node.js 18+
- npm or yarn
- Git
# Install all dependencies (frontend + backend + root)
npm run install:all
# Copy environment templates
cp visionexplorer-backend/.env.example visionexplorer-backend/.env
cp visionexplorer-frontend/.env.example visionexplorer-frontend/.env
# Generate test pattern tiles for the backend
npm run generate-tiles
# Start both frontend and backend in development mode
npm run dev
This will start:
- Backend at
http://localhost:3000
(tile server) - Frontend at
http://localhost:5173
(React app)
- Express.js tile server
- NASA imagery processing and serving
- CORS enabled for frontend integration
- API endpoints:
GET /
- Health checkGET /tiles/metadata
- Tile informationGET /tiles/{z}/{x}/{y}.png
- Tile images
- React 19 + Vite 7
- OpenSeadragon for image viewing
- Tailwind CSS v4 for styling
- Framer Motion for animations
- Three.js for 3D graphics
- Automatic Backend Detection: Frontend automatically detects if backend is available
- Graceful Fallback: Uses demo images if backend is offline
- Real-time Tile Loading: Seamless integration with NASA tile server
- Health Monitoring: Connection status indicators
The frontend automatically connects to the backend and:
- Health Check: Verifies backend availability
- Metadata Fetch: Gets available zoom levels and tile info
- Tile Source Creation: Creates OpenSeadragon-compatible tile sources
- Error Handling: Falls back to demo images if backend unavailable
cd visionexplorer-frontend
npm run dev
cd visionexplorer-backend
npm run dev
npm run start # Builds frontend and starts both servers
- Multi-layer Image Viewing: OpenSeadragon-based viewer
- Real-time Annotations: Draw and annotate regions
- Timeline Navigation: Navigate through different time periods
- AI Chat Interface: Ask questions about the imagery
- Export Tools: Save annotations and images
- Responsive Design: Works on desktop and mobile
- Tile Generation: Convert NASA images to web tiles
- Multiple Formats: Support for TIF, PNG, JPEG
- Zoom Levels: Generate tiles for different zoom levels
- Caching: Optimized tile serving with cache headers
- GDAL Integration: Professional geospatial processing
Frontend (.env
in visionexplorer-frontend/
):
VITE_API_URL=http://localhost:3000
Backend (.env
in visionexplorer-backend/
):
PORT=3000
NODE_ENV=development
# Check if both servers are running
npm run health-check
- Ensure backend is running:
cd visionexplorer-backend && npm run dev
- Check port 3000 is available
- Verify CORS settings in
server.js
- Check Tailwind CSS configuration
- Verify all dependencies are installed
- Clear cache:
rm -rf node_modules/.vite
- Generate test tiles:
npm run generate-tiles
- Check tile directory exists:
visionexplorer-backend/tiles/
- Verify tile metadata endpoint:
http://localhost:3000/tiles/metadata
- Tile Caching: 24-hour cache headers for optimal performance
- Lazy Loading: Tiles loaded on-demand
- Memory Management: Efficient OpenSeadragon configuration
- Bundle Optimization: Vite's optimized production builds
Edit visionexplorer-frontend/src/context/ViewerContext.jsx
to add new layer configurations.
Add new endpoints in visionexplorer-backend/server.js
for additional functionality.
Modify Tailwind configuration in visionexplorer-frontend/tailwind.config.js
.
If you used the setup script, Git is already initialized. Otherwise:
git init
git add .
git commit -m "Initial commit: VisionExplorer project setup"
- Go to GitHub and create a new repository
- Name it
VisionExplorer
or your preferred name - Don't initialize with README (we already have one)
# Replace <username> with your GitHub username
git remote add origin https://github.com/<username>/VisionExplorer.git
git branch -M main
git push -u origin main
Backend (.env):
PORT=3000
NODE_ENV=production
CORS_ORIGIN=https://your-frontend-domain.com
Frontend (.env):
VITE_API_URL=https://your-backend-domain.com
Frontend (Vercel/Netlify):
- Build command:
npm run build
- Output directory:
dist
- Root directory:
visionexplorer-frontend
Backend (Railway/Heroku/DigitalOcean):
- Start command:
npm start
- Root directory:
visionexplorer-backend
- Port: Use
process.env.PORT
ISC License - See individual package.json files for details.
Made with ❤️ for NASA imagery exploration