Giter VIP home page Giter VIP logo

scouting-app's Introduction

scouting-app

This app was created for high school robotics teams to enter competitive scouting data at First Robotics Competitions. Because WiFi is not permitted it uses QR codes to transmit data from phones to the database. It's written in React Native so it runs on any platform.

How it works

This repository contains two components. The phone app for entering data, and the desktop app for reading QR codes and storing the data.

The app uses a schema to generate the forms that are displayed to users. If we simply transfered the entered data in a JSON format the QR codes would be too large to read reliably. In order to prevent this we have two solutions. One solution is to just use multiple QR codes. This allows any amount of data to be transfered but it can take longer. The other way is to pack the data as efficiently as possible. We do this by treating the form schema as a series of bases, each one representing the number of possible inputs for that value, and encoding this as a mixed-radix number. This means each possible state of the form has a unique number and we just need to send that. Strings are encoded with their length so we don't waste space with blank characters.

Installation

Make sure you have a new version of nodejs and npm installed. In order to test the app you must install a few libraries. Start by installing expo-cli with

npm install -g expo-cli

You might need to run it as root. To just be able to run the desktop side, after cloning this repository run npm install in both scouting-app and desktopSide. Then you can open the desktop app with cd desktopSide npm start git clone this repository with

git clone https://github.com/Arctos6135/scouting-app.git
cd scouting-app

You can run the expo server with

npm start

It will open the QR code in you browser and you can scan that with the expo app on your phone to see the app.

Thank you to our generous sponsors:
Toronto District School Board Nordic Semiconductors SNC-Lavalin Scotia McLeod Ryver Inc. The Maker Bean Cafe Connect Tech Inc. HD Supply Brafasco Arbour Memorial

scouting-app's People

Contributors

alexwaeseperlman avatar michal-davis avatar moeezm avatar tylertian123 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

scouting-app's Issues

Empty column for Alliance

This empty column is there to provide consistency with previous data entered by hand in the Excel spreadsheet. As we are developing the new database, we need to change this. We can either remove the column, or have the user enter the alliance during the addMatch phase.

App renders entire tree on any data change

For some reason when I was writing this app I thought it would be a good idea to propagate every state change up to the root component for each form. This means that the app re-renders every component in that view, even though only one changed. Fixing this should be relatively easy and it will create a visible performance increase.

Test out bluetooth

Using bluetooth to transfer data between phones and the server would make things quicker and increase the amount of data we can collect (pit, super, etc.).

The way Lake Effect does it is that each phone is actually a Bluetooth "server" and our server is the Bluetooth "client". Once paired, the "client" can poll the "server" without the scouts doing anything.

Preferably done by Wednesday the 31st

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.