OrbitScout is an interactive 3D web app designed to track and visualize Near-Earth Objects (NEOs) in real time. By leveraging cutting-edge visualization tools like Three.js and real-time NASA data, users can explore asteroid orbits and other space objects as they approach Earth, providing a unique view of celestial events and potential hazards.
- Introduction
- Getting Started
- Project Structure
- Key Components
- Utilities
- Styling
- API Services
- Scripts
- Configuration
- Contributor's Guide
- License
- Learn More
- Deployment
OrbitScout provides a user-friendly, interactive platform to visualize the orbits of asteroids and other NEOs as they approach Earth. The app enables real-time exploration of these objects with 3D graphics powered by Three.js and NASA's data API, making it a powerful tool for both educational and research purposes.
OrbitScout is deployed at: https://orbit-scout.vercel.app/.
To run the project locally, you can use the following commands:
npm run dev # using npm
yarn dev # using yarn
pnpm dev # using pnpm
bun dev # using bun
Once the development server is running, open http://localhost:3000 in your browser to view the app. You can begin editing the project by modifying the src/app/page.tsx
file. The app automatically updates as you save your changes.
The following is a high-level view of the project structure:
orbit-scout/
├── .next/ # Build artifacts (auto-generated)
├── src/ # Main source code
│ ├── app/ # Pages and layouts
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ └── globals.css
│ ├── components/ # Reusable UI components
│ │ ├── ui/
│ │ │ ├── card.tsx
│ │ │ ├── dialog.tsx
│ │ │ ├── button.tsx
│ │ │ ├── calendar.tsx
│ │ │ └── alert.tsx
│ ├── lib/ # Utility functions and helpers
│ │ └── utils.ts
│ ├── services/ # API service integrations
│ │ └── nasaApi.ts
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentation
- Dialog (
dialog.tsx
): Provides a modal dialog component for user interactions. - Button (
button.tsx
): A customizable button component with different styles and variants. - Calendar (
calendar.tsx
): A component that allows users to select dates. - Card (
card.tsx
): A flexible card component that can hold content such as headers and footers.
- Class Name Utility (
utils.ts
): Thecn
function merges and manages multiple CSS class names effectively.
- Global Styles (
globals.css
): Contains the main styling for the app, including Tailwind CSS configurations.
- NASA API (
nasaApi.ts
): This file contains functions to fetch Near-Earth Object data from NASA's public APIs. It includes methods to retrieve asteroid information, orbits, and other relevant data.
- Development:
npm run dev
- Starts the development server. - Build:
npm run build
- Creates a production build of the project. - Start:
npm run start
- Runs the production server. - Lint:
npm run lint
- Runs ESLint to check for code quality issues.
- TypeScript: (
tsconfig.json
): This file configures TypeScript settings for the project. - Tailwind CSS: (
tailwind.config.ts
): Configuration file for Tailwind CSS. - ESLint: (
.eslintrc.json
): This file configures ESLint rules to ensure code quality. - Environment Variables: (
.env
): Stores environment-specific variables, such as API keys.
We welcome contributions from developers of all levels! If you're interested in contributing to OrbitScout, here are some ways to get started:
- Report Bugs: If you find any issues, feel free to open an issue in the GitHub repository.
- Suggest Features: Have an idea to improve the app? Open a discussion or suggest features via GitHub.
- Submit Pull Requests: Fork the repository and submit a pull request with your contributions. Please make sure your changes are well-tested.
- Fork the Repository: Click "Fork" at the top of the repository page.
- Clone the Forked Repository:
git clone https://github.com/your-username/OrbitScout.git
- Install Dependencies:
npm install
- Create a New Branch:
git checkout -b feature-branch
- Make Changes: Update code and add relevant tests.
- Commit Your Changes:
git commit -m "Description of changes"
- Push Your Changes:
git push origin feature-branch
- Open a Pull Request: Open a pull request on GitHub to merge your changes.
Please adhere to the existing code style guidelines. Run the following to check for style issues:
npm run lint
Make sure to add and run tests for any new features or changes:
npm test
By contributing to OrbitScout, you agree to license your contributions under the MIT License.
- Next.js Documentation - Learn more about Next.js and its API.
- Learn Next.js - Interactive tutorials for mastering Next.js.
- Next.js GitHub Repository - Browse the code and contribute to Next.js.
The recommended platform for deploying your Next.js app is Vercel, the creators of Next.js. You can easily deploy with zero-configuration by following their deployment documentation. OrbitScout is deployed at: https://orbit-scout.vercel.app/.