TruSat / trusat-frontend

The React codebase for space-sustainability tool TruSat
https://trusat.org
Apache License 2.0
31 stars 8 forks source link
ethereum iod javascript open-data open-source orbit-determination react satellite satellite-tracking satellites space space-sustainability

TruSat banner

trusat-frontend

An open-source space sustainability tool

TruSat is a citizen-powered satellite catalog, crowdsourcing observations of satellites to form an independent record of objects orbiting Earth.

This repo contains the frontend code for TruSat’s catalog app, providing citizen-scientists with orbit predictions to help them spot satellites and capture data. Anyone can submit their own satellite observations to automatically update the catalog’s orbit predictions.

Get Started

This repo was bootstrapped with create-react-app. You can clone the repo, install all the dependencies and run the app in development mode with the following commands in your Terminal:

git clone https://github.com/TruSat/trusat-frontend.git trusat-frontend
cd trusat-frontend
yarn install && yarn start

Open http://localhost:3000 to view it in the browser. The page will automatically reload if you make changes to the code.

src directory

.
├── App.js
├── App.test.js
├── app
│   ├── app-helpers.js
│   ├── app-styles.scss
│   └── components
│       ├── BurgerMenu.js
│       ├── Button.js
│       ├── ChatIcon.js
│       ├── CookieBanner.js
│       ├── CopyText.js
│       ├── DiscourseChatIcon.js
│       ├── Footer.js
│       ├── JoinTheMission.js
│       ├── MobileHeader.js
│       ├── NavBar.js
│       ├── ObjectBadge.js
│       ├── ScrollToTop.js
│       ├── SocialIcons.js
│       ├── Spinner.js
│       ├── TablePaginator.js
│       └── TrusatGlobeCanvas.js
├── assets
│   ├── Arrow.svg
│   ├── CircleCheck.svg
│   ├── ConditionBad.svg
│   ├── ConditionExcellent.svg
│   ├── ConditionFair.svg
│   ├── ConditionGood.svg
│   ├── ConditionPoor.svg
│   ├── ConditionTerrible.svg
│   ├── DeleteStation.svg
│   ├── Globe.svg
│   ├── ProfileAvatar.svg
│   ├── QuestionMark.svg
│   ├── SatSymbol.svg
│   ├── SketchLarge.js
│   ├── SketchSmall.js
│   ├── SketchTrusatGlobe.js
│   ├── TrusatLogoBig.svg
│   ├── TrusatLogoSmallBlack.svg
│   ├── TrusatLogoSmallWhite.svg
│   ├── earth-shadows-400px.jpg
│   ├── icon-arrow-up.svg
│   ├── icon-chat.svg
│   ├── icon-eye.svg
│   ├── icon-globe.svg
│   ├── icon-light.svg
│   ├── icon-location.svg
│   ├── icon-lock.svg
│   ├── icon-lowlight.svg
│   ├── icon-question.svg
│   ├── icon-relaxing.svg
│   ├── icon-rocket.svg
│   ├── icon-satellite.svg
│   ├── icon-time.svg
│   ├── icon-trash.svg
│   ├── icon-user.svg
│   └── icon-wave.svg
├── auth
│   ├── auth-context.js
│   ├── auth-helpers.js
│   ├── auth-styles.scss
│   ├── auth.test.js
│   └── components
│       ├── LoginForm.js
│       ├── LoginOptions.js
│       ├── MetaMask.js
│       ├── SignupForm.js
│       └── SignupOptions.js
├── catalog
│   ├── catalog-styles.scss
│   └── components
│       ├── CatalogNavBar.js
│       ├── CatalogNavDropdown.js
│       ├── CatalogTable.js
│       ├── DownloadCatalogFilterTleButton.js
│       ├── FilterDescription.js
│       └── HowToParticipate.js
├── index.js
├── objects
│   ├── components
│   │   ├── DownloadObjectTleButton.js
│   │   ├── FilterDescription.js
│   │   ├── HistoryMonthTable.js
│   │   ├── HistoryYearDropdown.js
│   │   ├── HowToSeeIt.js
│   │   ├── InfluenceTable.js
│   │   ├── Info.js
│   │   ├── ObservationsFilter.js
│   │   └── UserSightingsTable.js
│   ├── objects-context.js
│   └── objects-styles.scss
├── profile
│   ├── components
│   │   ├── ObjectsCollectedTable.js
│   │   ├── ObservationsTable.js
│   │   └── ProfileHeader.js
│   ├── profile-context.js
│   ├── profile-styles.scss
│   └── styles
├── serviceWorker.js
├── styles
│   ├── base
│   │   ├── _base.scss
│   │   ├── _reset.scss
│   │   └── _typography.scss
│   ├── helpers
│   │   ├── _mixins.scss
│   │   └── _variables.scss
│   └── main.scss
├── submissions
│   ├── components
│   │   ├── MultipleObservationForm.js
│   │   └── SingleObservationForm.js
│   └── submissions-styles.scss
├── user
│   ├── components
│   │   ├── DataSettings.js
│   │   ├── DownloadObservations.js
│   │   ├── EditProfileSettingInput.js
│   │   ├── ProfileSettings.js
│   │   ├── SavedLocations.js
│   │   ├── SecuritySettings.js
│   │   ├── StepFive.js
│   │   ├── StepFour.js
│   │   ├── StepOne.js
│   │   ├── StepThree.js
│   │   └── StepTwo.js
│   └── user-styles.scss
└── views
    ├── About.js
    ├── AccountSettings.js
    ├── AddStation.js
    ├── Catalog.js
    ├── ClaimAccount.js
    ├── Join.js
    ├── LogIn.js
    ├── MetamaskImport.js
    ├── ObjectInfo.js
    ├── PrivacyPolicy.js
    ├── Profile.js
    ├── SignUp.js
    ├── Submit.js
    ├── SubscriptionConfirmed.js
    ├── Terms.js
    ├── TestPilotConfirmed.js
    ├── VerifyClaimAccount.js
    ├── Welcome.js
    └── views-styles.scss

Inspired by this post, the files in the src directory are grouped by domain. For example, within the submissions directory you will find all components (and their accompanying styles) related to the domain of observation submissions. At the time of writing this includes the MultipleObservationForm and SingleObservationForm components.

The assets directory contains all the svg files that are utilized by the front end. Other image files are hosted externally on AWS.

Tests

Run the tests with the following command:

yarn test

Contributing

We very much welcome contributions, especially those that tackle open issues! If you wish to contribute, either open an issue then make a pull request or make a pull request against a currently open issue.

Branch naming convention

Our team uses the following convention for naming branches:

And here are some examples:

Branch creation to opening a PR

The "How To" page content is out of date when compared to the latest communication content found in the TruSat discuss forum
- Updates the “how to” view with the latest comms content
- New styles added including a change of font to the headers which matches the latest changes to the "About" page.
- This closes #32.

License

TruSat is open source software licensed as Apache License 2.0.