The purpose of this project was to get familiar with a tech stack similar to one we anticipate to use during our upcoming externship, while also learning about asteroids.
What it does
We created a SpaceX-themed dashboard for users to browse through a list of asteroids that will display specific details about each asteroid upon selection, such as close approach and orbital data. We also provide users with recently published space news articles, and a list of handpicked featured videos that we think users might enjoy. During a time of what may be considered a second space race, we felt that this type of application will be extremely relevant in the foreseeable future, extending to many fields such as asteroid mining, space tourism and spaceflight safety.
How we built it
The backend is built using Django, which handles API calls to NASA’s NeoWs API, and processes the data to be returned as a list of near Earth objects. The data received is cached using Django's session and set to expire after a certain amount of time (1 hour) to prevent exceeding rate limits. We filter and display this data on the frontend React-Redux client in the Browse section. Each listed near-Earth object is displayed in a selectable card, which consists of custom-made avatars that depicts the asteroid's size comparison to real world objects, the name and ID of the asteroid, its estimated diameter in meters and feet, and whether or not it is a potential hazard. Hovering over each card will highlight it as being clickable, and clicking the card will select it, and display its orbital and close approach data in the NEO Data section. The News section consists of the 3 most recently published space news articles from the Space Flight News API -- also served from our Django backend.
Challenges we ran into
NASA's API limits the number of requests per API key to 1,000 requests per hour. To ensure we didn't exceed those limits, we implemented a cache in the backend that will serve the cached data until the session expires.
Accomplishments that we're proud of
With neither of us having any Python experience, we are both proud to successfully combine our prior knowledge of React and Redux with Django to create a prototype of an app that may be useful in the space industry.
What we learned
Through this project, we learned how to create a backend using Django, reviewed our knowledge of React and Redux, and learned about UX/UI design.
What's next for NEO Dashboard
Due to time constraints, we were unable to create additional features with the other NeoWs endpoints, such as feed and sentry. The feed endpoint will allow us to display the most recent asteroid data of the current day, and the sentry endpoint will allow us to display and keep track of hazardous near-Earth objects that are at risk of colliding with Earth. We'd like to continue building out these features, so that users can observe asteroids at specified dates, search for asteroids by ID, and learn more about the asteroids with high impact risk.
So far, the app is not as responsive as we would like, so the best viewing experience is on a 17" monitor or larger. We'd like to have tablet and mobile support in the future, with the intention of the app being used in the same fashion as SpaceX's dashboard.