Giter Club home page Giter Club logo

appgt's Introduction

AppGT

AppGT is the offical app for HackGT on the App Store and Google Play Store. The goal of this app is to simplify every hackathon participant's experience with a simple interface by centralizing essential information. This allows important links, a custom schedule, and relevant notifications to be quickly access throughout events.

Setup

First, make sure to read React Native's offical Environment Setup. Follow the "React Native CLI Quickstart" and select macOS, Windows, Linux and specify either iOS or Android. Following it exactly is extremely important in getting the project to run without any errors.

  • Clone project and cd into AppGT
  • Run npm install to install the dependencies (use Node 14)

Running iOS

  • cd ios and pod install to install iOS dependencies
  • Run npx react-native run-ios

or try to run with Xcode if the above doesn't work

  • cd ios and pod install to install iOS dependencies
  • Open ios/AppGT.xcworkspace in Xcode
  • Add your development account and click Run in the top left

Running Android

  • Open an Android emulator
  • Run npx react-native run-android

or

  • Open the android folder in Android Studio
  • Click the Run in the top right

appgt's People

Contributors

patelrahil avatar nicholas714 avatar joel99 avatar stephanie-a avatar ayush-goyal avatar meha-agrawal avatar roshan-d avatar thaneesh-babu avatar dependabot[bot] avatar rashmiathavale avatar sneharoy321 avatar joshdabosh avatar phillipphanhthourath avatar sthomas313-gatech avatar johnwashburne avatar nikitarajput avatar

Stargazers

Amy avatar  avatar Pham Tuan Anh avatar  avatar  avatar

Watchers

James Cloos avatar Ehsan Asdar avatar  avatar Kexin Zhang avatar  avatar

appgt's Issues

Schedule View

Schedule view screen which has the search bar and table view with dummy clickable workshop cells (name, time, short description...)

Show and notify shift signups

  • Add support to configure notifications on different events and enable push notifications when they are to be at their shift

Integrate Scavenger Hunt backend

Once the ground truth authentication is resolved (#10 ), we should be able to pair with Josh's [https://github.com/HackGT/QA/tree/master/qa](generic QA backend) to have a working scavenger hunt backend.

The UI required by scavenger hunt will be

  1. A camera module that can scan QR codes (probably the HackGT dressed up QR codes that @Nicholas714 played with a while ago) -> which will provide an id for a particular question, or the json specifying the corresponding question screen.
  2. Once the id is provided, open the scavenger hunt question screen using the payload (probably will need React.Context or redux to track this payload)
  • Nonmvp requirement would be to build out a module on QA backend to track user sessions on who is actively working on a problem/who has scanned to prevent fraudulent answer passing
  1. The user will probably have a text input, the answer to the puzzle, which should be submittable. The screen should not be dismissed on submit, but internally allow up to some constant (3?) tries. The screen should also have a timeout.
  2. There should be a simple screen to track scavenger hunt progress (I can extract this to a separate issue at relevant time)

The backend will need to be deployed, which I can do when this issue is arrived at.

Add CI for builds

Add CI for builds for both iOS and Android so builds can be submitted for distribution easier. For example, we can setup with fastlane and use GitHub actions for automatically distributing test builds and releases.

Admin side UI Changes

There are a few UI changes on the admin side that will greatly improve the user experience

  • Make it work for dark and light mode (fix font color, background color, etc.)
  • Fix text-overflow for event descriptions
  • Fix back button positioning to make it more intuitive once you select an event
  • Add tab to switch between QR code scanning and NFC scanning

GCP CI for Android and iOS

Add some system to check that iOS and Android at least build successfully cc @ehsanmasdar - this would be new docker steps and then the same cloudbuild and deployment.yaml right? Any anticipated different steps?

Update admin view statistics

On checking people in to an event, show more statistics like # of users already checked in to an event, etc. This should be mostly a backend endpoint where a request is made with an event id

Workshop View

Workshop/Minievent View screen which displays when workshop cell is clicked in schedule view (summary, links, add to schedule button...)

Swag stuff on app

Don't make people (admins + participants) have to use laptops for swag. Swag checkout is just tapping NFC/QR code and you can see your swag points on app

Fix NFC badge scanning

For Horizons, we used QR code scanning, but for future events, we need NFC badge scanning capability, but we should still retain QR code scanning ability for check in

Setup remote config

Look here to setup remote config, a way to seamlessly roll out new changes without having to upload app updates

Add new account page

“View Account” that takes to a new page where you can see account info like name, email, etc. and then have the delete button on there. It kinda seems a little out there having it on the main page.

Pull fresh updates

Every 5 minutes, repull the event data to keep the app schedule in check.

Event and Workshop Tagging

Implement a tagging system that is specified in a json or yaml file.
Tags should be specified as a dictionary of { <codeName>: <prettyString> } i.e. { food: Food }. Ok, dumb example, but we shouldn't just be uppercasing, so you get the point. Specify tags as a field on the workshop and event schema i.e.

workshops: [{
name: "AI Security for the Modern World"
tags: ["ai", "workshop", "security"]
}, ]

We should be concerned about typos in the tags above (probably have readme warnings) but I'm pretty sure any CMS besides Github files should have solved this kind of problem, so we'll just have to be careful for now.

Selected tags should be stored in a global React.Context and should be toggle-able in a tag selection component - (Design TBA)

Tags should be displayed on events, and workshops (there's a working design posted on zeplin - follow up w/ me or Kimberly about this)

Add a filter by tag on main schedule, and automatically filter my schedule page using followed tags. (use mock data to test)

Virtual Queue for Food

Food lines are hard to manage, create a virtual queue to better manage this.

  • Divides people into batches and sends them notifs when their batch can come for food

Add Support for Ground Truth login

In order to support scavenger hunt progress, it makes sense for the app to have login. This opens to doors for many further integrations and was an inevitable step.

UI wise, this means a simple login screen, that should be accessible via the homepage (as a button prompt - please log in to track scavenger hunt!). No backend is yet needed since ground truth is separately deployed.
However, dealing with OAuth (which ground truth implements) on react native can be fairly sticky. The following references should be useful, along with @petschekr for any questions about ground truth.
https://github.com/fullstackreact/react-native-oauth - Existing library for boilerplate
https://blog.usejournal.com/persisting-user-authentication-in-a-react-native-app-778e028ac816 - Medium article, classic
*** https://github.com/FormidableLabs/react-native-app-auth - I think this is the standard library, with more documentation

Notification View

Change workshop view to notification view (basically just rename the files and change the buttons titles or you can also delete those files and references and create a new one for the Notification screen and add functionality to be able to navigate to it)

Home Page View

Add screen for homepage and add navbar buttons to be able to navigate

Starred Events and Workshops

Allow users to manually follow individual events by exposing a starring mechanic. IDs should just be provided on the queried schedule items, again, we should be able to hold a list of starred items in React.Context.

Starred items should show up under "My Schedule," on top of the followed tags.
Do after #12

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.