🇬🇧 English Version
| Status | Live Simulation | Repository |
|---|---|---|
| meteorfall.onrender.com | GitHub |
The video below, created for the NASA Space Apps Challenge, demonstrates MeteorFall's main features in action, from selecting an asteroid to simulating the impact and the civil defense alert.
(Click the image to watch the video on YouTube)
MeteorFall was created as a solution for the NASA Space Apps Challenge, with the goal of transforming complex astronomical data into a visually impactful and accessible simulation. Our platform explores the "what if?" scenario, allowing anyone to understand the magnitude of an asteroid impact event anywhere in the world.
However, our true differentiator lies in connecting the physical simulation to the human response. MeteorFall incorporates a civil defense layer that transforms the experience: instead of just observing the impact, the user receives a simulated emergency alert, complete with actionable safety protocols based on real contingency plans. This turns a complex astronomical event into a powerful lesson on preparedness, resilience, and decision-making.
- Real-time NASA Data: The list of asteroids is fed in real-time by NASA's Near-Earth Object (NEO) API.
- Interactive 3D Globe: Utilizes CesiumJS to render a 3D globe where the user can select the exact impact location with a click or through a location search.
- Physical Impact Calculation: The Python backend calculates the effects of the impact, including crater diameter, energy released (in Megatons), and equivalent seismic magnitude.
- Educational Context: Translates the released energy into understandable equivalents, such as the number of Hiroshima or Tsar Bombs.
- Civil Defense Alert: Simulates an emergency alert, educating the user on preparedness actions and safety protocols.
- Impact Animation: Visualizes the meteor's trajectory and collision on the 3D globe for a more immersive experience.
| Category | Technologies |
|---|---|
| Frontend | |
| 3D Globe | |
| Backend | |
| External APIs | |
| Deployment |
Follow the steps below to set up and run the project in your local environment.
-
Clone the repository:
git clone [https://github.com/anapaulads/MeteorFall.git](https://github.com/anapaulads/MeteorFall.git) cd MeteorFall -
Set Up Environment Variables:
- Create a
.envfile in the project root and add the backend key:NASA_API_KEY=YOUR_NASA_KEY_HERE - Create a
.envfile in thefrontend/folder and add the frontend keys:VITE_GOOGLE_API_KEY=YOUR_GOOGLE_KEY_HERE VITE_CESIUM_ION_TOKEN=YOUR_CESIUM_KEY_HERE VITE_API_URL=[http://127.0.0.1:5000](http://127.0.0.1:5000)
- Create a
-
Run the Application (Frontend & Backend together): The project is configured to launch both servers with a single command.
# Navigate to the frontend folder cd frontend # Install dependencies (only the first time) npm install # Start both servers npm start
- The frontend will be accessible at
http://localhost:5173(or another port shown in the terminal). - The backend will be running at
http://localhost:5000.
- The frontend will be accessible at
├── frontend/ # Visual application with Vite
│ ├── public/
│ ├── src/
│ ├── pages/
│ ├── index.html
│ └── package.json
├── app.py # Flask Backend Server
├── requirements.txt # Python dependencies
├── .gitignore
└── README.md
| Status | Simulação ao Vivo | Repositório |
|---|---|---|
| meteorfall.onrender.com | GitHub |
O vídeo abaixo, criado para o desafio NASA Space Apps Challenge, demonstra as principais funcionalidades do MeteorFall em ação, desde a seleção de um asteroide até a simulação do impacto e o alerta de defesa civil.
(Clique na imagem para assistir ao vídeo no YouTube)
O MeteorFall nasceu como uma solução para o desafio NASA Space Apps Challenge, com o objetivo de transformar dados astronómicos complexos numa simulação visualmente impactante e acessível. A nossa plataforma explora o cenário "e se?", permitindo que qualquer pessoa compreenda a magnitude do impacto de um asteroide em qualquer lugar do mundo.
O verdadeiro diferencial do projeto, no entanto, está em conectar a simulação física à resposta humana. O MeteorFall incorpora uma camada de defesa civil que transforma a experiência: em vez de apenas observar o impacto, o utilizador recebe um alerta de emergência simulado, completo com protocolos de segurança acionáveis baseados em planos de contingência reais. Isto transforma um evento astronómico complexo numa poderosa lição sobre preparação, resiliência e tomada de decisão.
- Dados da NASA em Tempo Real: A lista de asteroides é alimentada em tempo real pela API de Objetos Próximos à Terra (NEO) da NASA.
- Globo 3D Interativo: Utiliza CesiumJS para renderizar um globo 3D onde o utilizador pode selecionar o local exato do impacto com um clique ou através da busca de localizações.
- Cálculo de Impacto Físico: O backend em Python calcula os efeitos do impacto, incluindo diâmetro da cratera, energia libertada (Megatons) e magnitude sísmica equivalente.
- Contexto Educacional: Traduz a energia libertada em equivalentes compreensíveis, como o número de bombas de Hiroshima ou da Tsar Bomba.
- Alerta de Defesa Civil: Simula um alerta de emergência, educando o utilizador sobre ações de preparação e protocolos de segurança.
- Animação de Impacto: Visualiza a trajetória e a colisão do meteoro no globo 3D para uma experiência mais imersiva.
| Categoria | Tecnologias |
|---|---|
| Frontend | |
| Globo 3D | |
| Backend | |
| APIs Externas | |
| Deploy |
Siga os passos abaixo para configurar e executar o projeto no seu ambiente.
-
Clone o repositório:
git clone [https://github.com/anapaulads/MeteorFall.git](https://github.com/anapaulads/MeteorFall.git) cd MeteorFall -
Configure as Variáveis de Ambiente:
- Crie um arquivo
.envna raiz do projeto e adicione a chave do backend:NASA_API_KEY=SUA_CHAVE_DA_NASA_AQUI - Crie um arquivo
.envna pastafrontend/e adicione as chaves do frontend:VITE_GOOGLE_API_KEY=SUA_CHAVE_DO_GOOGLE_AQUI VITE_CESIUM_ION_TOKEN=SUA_CHAVE_DO_CESIUM_AQUI VITE_API_URL=[http://127.0.0.1:5000](http://127.0.0.1:5000)
- Crie um arquivo
-
Execute a Aplicação (Frontend e Backend juntos): O projeto está configurado para iniciar ambos os servidores com um único comando.
# Navegue até a pasta do frontend cd frontend # Instale as dependências (apenas na primeira vez) npm install # Inicie os dois servidores npm start
- O frontend estará acessível em
http://localhost:5173(ou outra porta indicada no terminal). - O backend estará a rodar em
http://localhost:5000.
- O frontend estará acessível em
├── frontend/ # Aplicação visual com Vite
│ ├── public/
│ ├── src/
│ ├── pages/
│ ├── index.html
│ └── package.json
├── app.py # Servidor Backend em Flask
├── requirements.txt # Dependências do Python
├── .gitignore
└── README.md