Welcome to Space Traveler's HUB, this web app allows the user to take a fictional tour across the space.

Overview

Space Traveler's HUB

Welcome to Space Traveler's HUB, in this web app you will be able to take a fictional tour across space.

  • You can choose a rocket from our catalog interface, and reserve it for you.
  • Also, you can see the information about the most famous recent special missions and join them.
  • Finally, in the MyProfile interface you will be able to keep track of all your rockets and mission you are subscribed to.

responsive-design

🖥️ Desktop version

This is the home page, where you can see and interact with the available rockets

homepage-screen

This is the missions page, where you can join and read about the available missions

mission-screen

Finally, this interface will help you to keep track of the rockets and mission you joined

myProfile-screen

📱 Mobile version

Here you can take a look at the different pages for the mobile version

Home Page

homepage-screen

Missions Page

missions-screen

My Profile Page

myProfile-screen

Learning objectives

  • Fetch data from a public API
  • Implement state management with react-redux
  • Render fetched data on screen
  • Implement a profile interface with user reserved missions and rockets

🧩 Built With

  • React.js
  • React-router
  • Redux
  • TailwindCSS
  • Webpack

📚 Getting Started

To get a local copy up and running follow these simple example steps.

Prerequisites

For this project you don't need aditional tools

Setup

Fork a copy to your repository

Install

Clone the repository on your local enviroment and run npm i on your terminal

Usage

To start the dev server just run npm start. You can work in your favorite Code Editor

💻 📱 Live Preview

If you want to see a live demo of this project, click here

Authors

👤 Mihreteab Misganaw Aride

👤 William Morales

🤝 Contributing

Contributions, issues, and feature requests are welcome!

Feel free to check the issues page.

👏 Show your support

Give a ⭐️ if you like this project!

📝 License

License: MIT

Copyright (c) 2022 William Morales, Mihreteab Misganaw

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Fetch rockets data and Display rockets - Lists render

    Fetch rockets data and Display rockets - Lists render

    In this PR:

    • Fetch data from the Rockets endpoint when the application starts (as Rockets is the default view).
    • Once the data are fetched, dispatch an action to store the selected data in Redux store.
    • Use useSelector(), Redux Hook, to select the state slices and render lists of rockets in corresponding routes.
    • Used Tailwindcss for styling.
    • Render a list of rockets (as per design).

    Close #17 and Close #13

    opened by Mre55 2
  • Add style for the mobile version of Rockets component

    Add style for the mobile version of Rockets component

    In this PR:

    • Add style for the Rockets.js file to be responsive in the mobile view.
    • Make the image and description about the Rocket be displayed in column centered.
    opened by Mre55 1
  • Create basic structure for Rockets - Setup #21

    Create basic structure for Rockets - Setup #21

    In this PR:

    • Create a route and a view component. Used for the page navigation links and style active class to indicate which page the user is currently on by underlining the active navigation link.
    • Create a directory for all Redux state slice files.
    opened by Mre55 1
  • Team3 [1pt] Create basic structure for Dragons - Setup

    Team3 [1pt] Create basic structure for Dragons - Setup

    • Create a route and a view component. Use <NavLink /> for the page navigation links and style active class to indicate which section/page the user is currently on (underline active navigation link).
    • Create a directory for all Redux state slice files.
    opened by Mre55 1
  • Team3 [4pt] Fetch dragons - Fetch data

    Team3 [4pt] Fetch dragons - Fetch data

    Fetch data from the Dragons endpoint (https://api.spacexdata.com/v3/dragons) when a user navigates to the Dragons section.

    Once the data are fetched, dispatch an action to store the selected data in Redux store:

    • id
    • name
    • type
    • flickr_images

    NOTE: Make sure you only dispatch those actions once and do not add data to store on every re-render (i.e. when changing views / using navigation).

    opened by Mre55 1
  • Team3 [4pt] Display dragons - Lists render

    Team3 [4pt] Display dragons - Lists render

    • Use useSelector() Redux Hook to select the state slices and render lists of dragons in corresponding routes. i.e.:
    // get rockets data from the store
    const rockets = useSelector(state => state.rockets);
    
    • You can style the whole application "by hand" or you could use React Bootstrap, a UI library that could speed up the process. This is a popular library and working with its components would be good practice.

    • Render a list of dragons (as per design). For the image of a dragon use the first image in the array of flickr_images.

    opened by Mre55 1
  • Team3 [3pt] Implement dragon booking - Actions

    Team3 [3pt] Implement dragon booking - Actions

    • When a user clicks the "Reserve dragon" button, action needs to be dispatched to update the store. You need to get the ID of the reserved dragon and update the state. Remember you mustn't mutate the state. Instead, you need to return a new state object with all dragons, but the selected rocket will have an extra key reserved with its value set to true. You could use a JS filter() or map() to set the value of the new state - i.e.:
    const newState = state.map(rocket => {
        if(dragon.id !== id) 
            return dragon;
        return { ...dragon, reserved: true };
    });
    
    
    • Regardless of which method you choose, make sure you place all your logic in the reducer. In the React view file, you should only dispatch the action with the correct dragon ID as an argument.
    opened by Mre55 1
  • Team3 [1pt] Implement dragon booking cancelation - Actions

    Team3 [1pt] Implement dragon booking cancelation - Actions

    • Follow the same logic as with the "Reserve dragon" - but you need to set the reserved key to false.
    • Dispatch these actions upon click on the corresponding buttons.
    opened by Mre55 1
  • Team3 [1pt] Switch badges for Dragons - Conditional components

    Team3 [1pt] Switch badges for Dragons - Conditional components

    Dragons that have already been reserved should show a "Reserved" badge and "Cancel reservation" button instead of the default "Reserve dragon" (as per design).

    Use the React conditional rendering syntax:

    {rocket.reserved && ( 
        // render Cancel Rocket button
    )}
    
    opened by Mre55 1
  • Write unit tests with React Testing Library

    Write unit tests with React Testing Library

    In this PR:

    • Write a test for reducer action creators.
    • And dispatch the actions to test if the store dispatched the expected actions.
    • Write a test for testing the Rockets.js component.
    • Write a test for testing the Missions.js component.
    opened by Mre55 0
  • React & Redux group project - Space Travelers' Hub

    React & Redux group project - Space Travelers' Hub

    In this PR:

    Config & basic setup

    • Create React App.
    • Install React-Redux, Redux Logger, and React Router.
    • Create routes and view components (Rockets, Missions, My Profile). Used for the page navigation links and style active class to indicate which section/page the user is currently on by underlining the active navigation link.
    • Create directories for all Redux state slice files

    Redux: Fetch data and update Redux store

    • Upon the first render fetch data from the SpaceX API endpoints.
    • Once the data are fetched, dispatch an action to store the selected data in Redux store.

    Render UI:lists

    • Used useSelector(), Redux Hook, to select the state slices and render lists of rockets and missions in corresponding routes
    • Render a list of rockets (as per design).
    • Render a table with the missions' data (as per design).

    Redux: Write actions and reducers for booking rockets and joining missions

    • When a user clicks the "Reserve rocket" button, the rocket booking action is dispatched to update the store.
    • When a user clicks the "Join Mission" button, the mission booking action is dispatched to update the store.

    Redux: Write actions and reducers for canceling rockets and leaving missions

    • When a user clicks the "Cancel Reservation" button, the rocket booking cancelation action is dispatched to update the store.
    • When a user clicks the "Leave Mission" button, the mission leaving action is dispatched to update the store.

    Render UI: conditional components rendering

    • Rockets that have already been reserved show a "Reserved" badge and "Cancel Reservation" button instead of the default "Reserve rocket" (as per design).
    • Missions that the user has joined already show a badge "Active Member" instead of the default "NOT A MEMBER" and a button "Leave Mission" instead of the "Join Mission" button (as per design).

    Render UI: My Profile section

    • Compose two column layout and list ONLY the rockets reserved and missions joined by the user.
    opened by Mre55 0
Owner
Mihreteab Misganaw
Software Engineer, Stack: React, Redux, JavaScript, Bootstrap, and Saas. Love playing chess in my spare time. Always looking for new opportunities!!
Mihreteab Misganaw
"Space-Travelers-Hub" is a website that allows users to book rockets and join selected space missions by using data from the SpaceX API.

Space-Travelers-Hub This project was bootstrapped with Create React App. Description "Space-Travelers-Hub" is a website that allows users to book rock

Tresor Sawasawa 4 Mar 13, 2022
Space Travelers' Hub - a web application that facilitates booking rockets and join selected space missions

This is a web application that facilitates booking rockets and join selected space missions. It is built for a company that offers both commercial and scientific space travel services. The application also works with real live data from the SpaceX API.

Mong'are 6 Mar 29, 2022
"Space Travelers' Hub" This project will lay foundations for your understanding the new features for Redux, using slice reducer and API requires with createAsyncThunk

Space Travelers' Hub Space Travelers' Hub React - Redux "Space Travelers' Hub" This project will lay foundations for your understand new features for

Hendrid Gonzalez 5 Mar 6, 2022
The leaderboard web app displays the top scoring player on the fictional game of life.

Leaderboard is website that displays the scores submitted by all players. It also allows the current user to submit his/her score. All data is preserved thanks to the external Leaderboard API service.

Soufiane Boursen 13 Nov 23, 2022
This web application provides commercial and scientific space travel services. The application allows users to book rockets and join selected space missions.

space-hub About Project "Space Traveler's Hub" is A web application that provides commercial and scientific space travelling services, We are working

Nicholas Emmanuel 7 Nov 2, 2022
In this project we built a web application that consumes an SpaceX API. It provides commercial and scientific space travel services that allows users to book rockets and join selected space missions.

Space Travelers' Hub In this project we built a web application that consumes an SpaceX API. It provides commercial and scientific space travel servic

Diego Yon 7 Sep 30, 2022
This web application provides commercial and scientific space travel services. The application allows users to book rockets and join selected space missions.

Space Traveler's Hub This web application provides commercial and scientific space travel services. The application allows users to book rockets and j

Michael Mesfin 6 Oct 4, 2022
JS Cloudimage 360 View - A simple, interactive resource that can be used to provide a virtual tour of your product

JS Cloudimage 360 View - A simple, interactive resource that can be used to provide a virtual tour of your product

Scaleflex 1.9k Jan 7, 2023
This repo holds my work on Angular tutorial Tour of Heroes.

TourOfHeroes This project was generated with Angular CLI version 14.2.3. Development server Run ng serve for a dev server. Navigate to http://localhos

Veronica Goranova 2 Sep 21, 2022
This tool uses native browser APIs to take screenshots of a given web page, tab, window, or the user's entire screen.

This tool uses native browser APIs to take screenshots of a given web page, tab, window, or the user's entire screen.

xataio 761 Jan 1, 2023
A web application for a company that provides commercial and scientific space travel services. The application will allow users to book rockets and join selected space missions.

Space Travelers A web application for a company that provides commercial and scientific space travel services. The application will allow users to boo

Hector Torres 2 Apr 6, 2022
This a web application for a company that provides commercial and scientific space travel services. The application will allow users to book rockets, dragons and join selected space missions.

Space Travelers' Hub In this project, we have worked with the real live data from the SpaceX API. Our task was to build a web application for a compan

Apuabi Titilope 4 Oct 31, 2022
A hub for web developers that offers a variety of tools to help with any developing needs.

WebDevHub - A place for developers WebDevHub is designed to be one central place for developers, that offers a variety of tools to help with any devel

Thomas Hamilton-Smith 87 Dec 11, 2022
nodejs load balancing app to distribute http requests evenly across multiple servers.

load-balancer-nodejs nodejs load balancing app to distribute http requests evenly across multiple servers. How to use ? Please edit the file 'config.j

Abdi Syahputra Harahap 13 Nov 7, 2022