Mission Explorer is a web-based platform that allows users with or without an academic background to access and interact with high-resolution lunar imagery and 3D crater panoramas from NASA's Apollo missions. The application provides an immersive experience for exploring the lunar surface, complete with an AI-powered assistant, "CraterBot," to answer questions and provide context about the missions.
- High-Resolution Image Viewer: Explore massive lunar images with a dynamic tiling system that allows for smooth zooming and panning.
- 3D Crater Explorer: Immerse yourself in 360° panoramic views of lunar craters.
- Investigation Lab: Select and stitch multiple images together to create panoramic views.
- AI-Powered Chat Assistant (CraterBot): Get information and ask questions about the Apollo 15, 16, and 17 missions, as well as the lunar features you are observing.
- Admin Panel: A dedicated interface for uploading and managing lunar imagery and crater panoramas.
- Next.js: A React framework for building server-side rendered and static web applications.
- React: A JavaScript library for building user interfaces.
- TypeScript: A typed superset of JavaScript that compiles to plain JavaScript.
- Tailwind CSS: A utility-first CSS framework for rapid UI development.
- shadcn/ui: A collection of re-usable UI components.
- Flask: A lightweight WSGI web application framework in Python.
- Pillow: A powerful image processing library for Python.
- OpenCV: A library of programming functions mainly aimed at real-time computer vision.
- Google Generative AI: Powers the CraterBot assistant.
- Node.js and npm (or yarn)
- Python 3.7+ and pip
- A Google Generative AI API Key
-
Clone the repository:
git clone https://your-repository-url.git cd your-repository-name
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install the required Python packages:
pip install -r requirements.txt
-
Set up your Google Generative AI API Key:
- Open the
server_side.py
file.
- Open the
-
Run the Flask server:
python server_side.py
-
Navigate to the frontend directory (assuming your Next.js project is in a
frontend
subdirectory):cd frontend
-
Install the required npm packages:
npm install
-
Run the Next.js development server:
npm run dev
The frontend application will be accessible at
http://localhost:3000
.
- Home Page: Provides an introduction to the project and links to the main sections.
- Apollo Missions: Browse through the Apollo 15, 16, and 17 missions and explore their available imagery.
- Crater Explorer: View and interact with 3D panoramic images of lunar craters.
- Dynamic Image Viewer: Pan and zoom through high-resolution lunar images. Click on crater hotspots to interact with CraterBot.
- Investigation Lab: Select a mission and choose images to stitch together into a panoramic view.
- Admin Panel: Access the admin panel at a designated route to upload new images and crater panoramas.
POST /api/init
: Initializes a new chat session.POST /api/select-crater
: Selects a crater for the chat context.POST /api/chat/stream
: Streams a response from the CraterBot.
POST /api/upload
: Uploads a new high-resolution image and generates tiles.GET /api/missions/<mission>/images
: Retrieves a list of images for a specific mission.GET /api/tiles/<mission>/<image_name>/<zoom>/<col>_<row>.jpg
: Retrieves a specific image tile.GET /api/preview/<mission>/<image_name>
: Retrieves a preview of an image.GET /api/metadata/<mission>/<image_name>
: Retrieves metadata for a specific image.GET /api/tile-info/<mission>/<image_name>
: Retrieves tile information for a specific image.
POST /api/craters/upload
: Uploads a new crater panorama.GET /api/craters/list
: Retrieves a list of all crater panoramas.GET /api/craters/<crater_id>
: Retrieves information for a specific crater.GET /api/craters/image/<filename>
: Retrieves the full-size image for a crater.GET /api/craters/thumbnail/<filename>
: Retrieves the thumbnail for a crater.DELETE /api/craters/<crater_id>
: Deletes a crater.
POST /api/investigation/stitch
: Stitches a series of images together into a panorama.