This project is a web application that allows users to view upcoming SpaceX launches, launch history, and schedule new launches (simulation). It utilizes the SpaceX public API to retrieve launch data and stores it in a MongoDB Atlas database.
- Backend: Node.js, Express.js
- Database: MongoDB Atlas (local MongoDB could also work)
- Frontend: React.js
- UI Framework: Arwes UI
- Containerization: Docker
- CI/CD: GitHub Actions
- Cloud Deployment: Amazon EC2
- View upcoming SpaceX launches retrieved from the SpaceX public API.
- View historical launch data stored in MongoDB Atlas.
- Simulate scheduling new launches
- Arwes UI provides a clean and user-friendly interface.
The application follows a separation of concerns with a clear distinction between the frontend (React.js) and backend (Node.js, Express.js). The backend interacts with the SpaceX API and MongoDB Atlas, while the frontend displays the retrieved data and provides an interface for simulated launch scheduling.
- Node.js and npm/yarn/pnpm installed on your system
- Docker installed and running
- A MongoDB Atlas account with a database created
git clone https://github.com/Relin404/NASA-Space-App.git
cd nasa-space-app
pnpm install # npm or yarn could also be used
- This will install both server and client dependencies
- Create a file named .env in the project root directory.
- Add the following environment variables to the .env file, replacing the placeholders with your actual values:
MONGODB_URI=mongodb+srv://<your-username>:<your-password>@<cluster-name>.mongodb.net/<database-name>
docker build -t spacex-launches-scheduler .
docker run -it -p 8000:8000 spacex-launches-scheduler
- This command will build the Docker image for the application and start the containers for both the frontend and backend.
pnpm run deploy
The project is designed to be deployed on Amazon EC2 after building a Docker image. The specific deployment steps will involve creating an EC2 instance, configuring security groups, and utilizing tools like GitHub Actions to automate the CI/CD pipeline.