A decentralized application for tracking and predicting satellite positions using blockchain technology. This project explores the integration of blockchain technology with space data to promote an open space community.
- Real-time satellite tracking
- Satellite position prediction
- Decentralized data storage using blockchain
- Interactive web interface
- Smart contract integration for data verification
- Comprehensive logging system for debugging and monitoring
- Python 3.9 or higher
- Node.js and npm
- Ganache (for local blockchain development)
- Truffle (for smart contract deployment)
- MetaMask browser extension
-
Clone the repository:
git clone https://github.com/10lloydj/Blockchain-Satellite-Tracking-and-Prediction-App.git cd Blockchain-Satellite-Tracking-and-Prediction-App
-
Set up Python virtual environment and install dependencies:
python -m venv venv source venv/bin/activate # On Windows use: venv\Scripts\activate pip install -r requirements.txt
-
Install Truffle globally:
npm install -g truffle
-
Start Ganache (local blockchain):
ganache --port 7545
Note: The app expects Ganache to run on port 7545 by default. You can change this in your
.env
if needed. -
Deploy smart contracts:
cd Code truffle migrate
-
Set up environment variables:
- Copy
.env.example
to.env
and fill in your secrets and API keys. - Never commit your
.env
file.
- Copy
-
Start the Flask application:
cd Code export FLASK_APP=flaskr export FLASK_ENV=development flask run
-
Open your web browser and navigate to:
http://localhost:5000
Blockchain-Satellite-Tracking-and-Prediction-App/
├── Code/
│ ├── contracts/ # Smart contracts
│ ├── flaskr/ # Flask application
│ ├── migrations/ # Truffle migrations
│ ├── tests/ # Test files
│ └── truffle-config.js # Truffle configuration
├── requirements.txt # Python dependencies
└── venv/ # Python virtual environment
Key dependencies include:
- Flask
- web3
- skyfield
- requests
- pytz
- numpy
- sgp4
- jplephem
- python-dotenv
For a complete list of dependencies, see requirements.txt
.
- Truffle
- Ganache
- Web3.js
- MetaMask (for browser interaction)
- Create a
.env
file in the root directory using.env.example
as a template. - Add necessary API keys and configuration:
N2YO_API_KEY
GOOGLE_MAPS_API_KEY
BLOCKCHAIN_ADDRESS
CONTRACT_ADDRESS
CONTRACT_ARTIFACT_PATH
DEFAULT_LATITUDE
,DEFAULT_LONGITUDE
SECRET_KEY
(generate securely)- Any other required variables as shown in
.env.example
- Never commit your
.env
file or any secrets. - All sensitive values are loaded from environment variables.
- The app is safe to share and deploy as long as you keep your
.env
private. - Set all secrets in Render's dashboard for production.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Skyfield library for astronomical calculations
- N2YO API for satellite data
- Google Maps API for visualization
- SGP4 library for satellite propagation