GithubHelp home page GithubHelp logo

shpeucf / shpeucfapp Goto Github PK

View Code? Open in Web Editor NEW
12.0 12.0 25.0 94.41 MB

SHPE UCF Mobile Application

Home Page: https://tech.shpeucf.com

License: MIT License

JavaScript 97.01% Java 1.38% Objective-C 1.00% Ruby 0.20% Starlark 0.42%

shpeucfapp's People

Contributors

aguilarjavier avatar csepulveda7 avatar daniellegonzxlez avatar dependabot[bot] avatar emanuelpadro avatar esteban737 avatar fragabear avatar grindlock avatar hanieldiaz avatar icandell avatar idelmr avatar jonathan-montanez avatar joshncs22 avatar luisbenan avatar luxun2 avatar mechaturtles avatar shpetechdirector avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shpeucfapp's Issues

Add Redux Persist to save state

When user closes the app, the Redux state also goes aways, however, there's a state to be saved locally such as loggedIn to allow fast app start up when users opens it again so there's no delay on checking whether or not there's a user loggedIn with Firebase. This can be enable by saving a small amount of data on the device's memory using either Firebase Persistence (LOCAL) or Redux Persist (preferably).

As of now, the app is showing a loading a screen while user state is verified with Firebase, when the app receives a response from Firebase user state, it takes user to main screen (if logged in) or to log in screen (if logged out)

a6a4d23 loading component temp solution can also be replaced with Splash screen while app gets response from Firebase

Add chat feature

Testing out the issue maker.

I'd imagine we'd want a way to initiate a chat once we land on a person's profile. Maybe we need a search feature to find people next.

Create Election system

Election system must be modular enough where different positions and members can be added and removed by eBoard.
It should record what everyone's vote is(as opposed to being completely anonymous and this is because you need to know to be able to edit your vote if you change your mind)
Must be able to vote, edit vote.

People should apply for a position and then get accepted by the eBoard. This is the easiest way to link people.

  • Allow president to close or open votes during an election

  • Allow president to transition voted eboard into their respective positions on the app

  • In the event of a tie, allow president to choose the winner of the position

  • Add more alerts to verify actions such voting and setting the order of positions in the back end

  • Take away apply button on election screen once or modify button once someone has applied

  • Finish handling some of the election stats on the election back-end screen

  • Ask and reverify if the president wants the election to be closed and finished

Store accounts username/passwords and retrieve securely

  • Have option to add new account information and set access levels
  • Be able to Edit/Delete accounts info
  • All accounts information should be securely encrypted(See links below for info)
  • User's should use their SHPE password to gain access to the account information through hashing(look for a secure algorithm in links below)
  • Figure out a way that if someone is sniffing the network, they can't see the hashed password(Possibly already solved in the links below)

Instead of using lastpass, the E-Board could use the shpeapp as a password manager for all shpe-related accounts. (Note: Some passwords should only be seen by certain positions)

While looking into how to do this I cam across a lot of information. I'm going to be posting links here that need to be read before tackling this issue:

  • Explanation of how lastPass accomplishes what they do here
  • Some more information on what lastPass does here
  • Open source implementation of an online password holder here

Modify Dashboard

To-Do

Dashboard must have useful features such as seeing latest announcement and seeing general SHPE News. Its basis should be that of a welcoming interface where users can see how they can be more active in SHPE and have direct access to the resources provided.

  • Display committees of SHPE. (How to get more involved...)
    Not only will this list the committees SHPE currently has, but also link to these committees within the app. For that reason, it should implemented in a List, so that we don't have to worry about future committees being added. Will be present in the app once the committee system has been implemented.

  • Inform members of resume upload.

  • Improve styling.
    This will be implemented as part of the AppStyling branch, currently being worked on by @csepulveda7.

  • Add upcoming events at the top of the dashboard.
    This will be dynamic since events will continuously be added/removed/edited. Events should be neatly placed so that a user can see some of the most recent events.

  • Display top people in the leaderboard.
    Should also be dynamic and link to the Leaderboard screen in case they want to see their position on the Leaderboard relative to other members' points.
    Update (3/22/19): Although it correcly goes to the Leaderboard screen, it doesn't go back to Dashboard upon return (goes back to the More screen), something that should be fixed on Leaderboard.

  • Add button that links to Slack.
    It should prompt the user to open the link in the Slack app.
    Update (3/22/19): Right now it links to the workspace on the Slack website. The goal is to have it open automatically if the user has the Slack app. Otherwise, it should open on the web browser as it does now.

Work on event check in

Use/explore https://www.npmjs.com/package/react-native-beacons-manager to implement event check in based on proximity to beacon/location of meeting.

We'll also use GeoFencing option for outdoor events, but inside buildings beacons are the best bet for now, we can acquire a beacon for the chapter with both iBeacon and Eddystone capabilties or implement it with just software and someone's phone/Bluetooth device will have to play as beacon during events. We'll leave that last part up for discussion after implementation.

Bottom Navigation Panel - Initial State

The bottom navigation panel doesn't revert back to initial state. This is undesirable because each of the four primary tabs retains it's previous state even after a different tab has been chosen. This should be modified so that when someone revisits a previously accessed tab, it will have reverted back to its first screen.

Build profile page

Build general profile page for users with data such, first name, last name, email, major, membership, etc.

Finish Events System

Events System should

  • Allow you to create/edit/delete events
  • See a list of all attendants and access that list(board+)
  • Update the points system accordingly
  • Make sure all events are categorized by specific categories

Email Verification

Email verification link does not work on Office 365 which is what knights email uses.

Committee System Implemented

Members must be able to apply to committees.
They would then get accepted or rejected by the person in charge of the committee.
This would award them points if they get accepted. The amount should be editable by the eBoard.
This should also add some privilege to them so they can see things from that committee such as announcements and such

Linkedin/Github buttons- Profile Screen

So far the Linkedin and Github buttons on the profile page only link to their home pages.
This should be modified so that pressing one of the buttons links to the user's own page.

We would need to modify the 'Edit Profile' screen to ask the user for their page links, and if none or just one of the links are provided, the profile screen should adapt accordingly.

Eboard should see attendance of an Event

They should be able to see it and also email themselves a .csv file with all the user's info.

  • implement convert data to csv and emailing
  • make sure this can only be seen by eboard
  • create page to view attendance of the event

Updated the design of the app to make sure everything looks uniform

  • Create a small design document and upload it to our GitHub wiki
  • Make sure that all forms more or less look the same this includes headers and footers
  • Use custom components to make your life easier
    The app has a lot of different styles on every page. Almost everything looks different.
    Learn to make custom components here

Test app on as many devices as possible

Test apps using emulators/simulator/actual devices for both platforms iOS & Android.

  • Document anything that's wrong or out place with design
  • Document any crashed noting screen and any steps to duplicate if possible

Fix differences in stack nav for android

Stack navigation headers look different from main screen header, this is due to main screen header being a component and the header from stack nav being generated by the React-Navigation package. We might have to check platform and style iOS and android individually or simply move away from Stack Navigation and replace with drawer. iOS looks okay for now after grindlock's fixes but android is not.

Allow users to see their point breakdown

There should be a form that allows users to see where all of their points are coming from. This form should have it organized neatly and possibly group it by overarching titles such as, Events, Committees, Volunteer events, GBM, ... , ect

Then they should be able to click one of those titles and the screen changes to show the breakdown of that. If they click events, a list of all event they've attended should display with how many points they got from each one.

Pull user profile data from Firebase

On user account creation/login we must populate profile with user info such as Name, Email, College, Major, Year, etc using data stored on Firebase

Adapt interface/styles to be platform specific

Insert logic using the Platform API to differentiate design based on platform so app looks more specifically design for each platform.

Let's keep this issue for later but it's important to think about those design decision from now and whenever possible apply them, else, we'll refactor code later to improve design

Create Committee System

Committee System features:

  • Create/Delete/Edit Committees under your name(board+)
  • Members should be able to find committees and request to join/remove themselves
  • Committee leaders should be able to approve or delete committee requests
  • Committee members should gain committee privileges when joining(Can be revoked by committee leaders)
  • Committee members can be assigned leadership roles within the committees that come with titles(board+)
  • Committees should give points to active members possibly manually(board+)
  • Have a way to take attendance to keep track of active members

Profile TextInput text truncated

The text in the TextInput boxes is not allowing more characters than the placeholder has for each individual box. The text gets truncated when it reaches the length of the placeholder.

More screen not loading

After pulling and merging from the last commit more screen no longer works. I can't find the problem. screenshot below of problem.
simulator screen shot - iphone 7 plus - 2017-12-15 at 07 22 09

Registration is broken

Not sure why but registration does not add a user to the database. It does create their Firebase account though.

Edit: The database returns an error when you try to set a field with an undefined or empty variable.

Move event check in to each event

Move current event check in feature to be present on each event in the calendar.

We mus decide whether or not to show the "Check In" button for all events:

  • On any day (always)
  • On event day even if not present in the event.
  • Simply display the button as user picks up the beacon signal in the event

Build dropdown list option data for Colleges, Major

We need a list, most likely a JSON file with the list of Colleges and Majors:

  • College of Engineering and Computer Science
  • College of Sciences
  • etc.

Also for all majors so users select from a predefined list rather than typing it and generating different formats for same value/typos such as:

aerospace engineering
Aerospace Engineering
Aerospace engineering
aerospace Engineering and so on.

We can get the full list here: http://catalog.ucf.edu/programs/degree-programs

Build Leaderboard scene

This scene must:

  • Display number of points for all users/members.
  • Show is descending order (most points on top)
  • Display bar with annotations like: user name, #points
  • Eventually, we can also allow users to tap on the bar and see which events the earned the points from, like GBM 5 points, attending conference 5 points, etc.

The functionality must be:

  • User gets points as they check in to events through the calendar event
  • Those points and its corresponding data get stored in the database under users data.
  • Leaderboard must keep watching changes/get update when user gets point and render the updated data on the Leaderboard scene

Build Statistics System

To-Do

  • Have ability to create new statistics.
    The board should be able to go the Statistics screen and create new statistics by selecting the categories they want to filter the members by (i.e. major, points, class standing...). To do this, we have to work with the database to search through the data selected by the user and "filter" through the members found on Firebase. Once this is achieved, we should save the data in the database for future retrieval.

  • View all created statistics.
    Retrieve and render the statistics created and display them in a simple table. It can be later modified to represent the data visually.

  • Export data created onto phone or email.
    This will be done in case the user(s) want to access them in a 3rd-party program such as Google Sheets or Microsoft Excel.

  • Option to delete existing statistics.
    On the same ViewStatistics screen, the user should be able to also delete the selected table or edit it. For removing, the data should also be removed from Firebase for it to be permanently deleted.

  • Option to edit existing statistics.
    Harder to implement. To edit the statistics, a button will take you back to the CreateStatisticsForm, but with all previously selected options/categories to easily edit the data... At that point, however, it may be easier to create a new statistic.

  • Create statistics for events.
    With the same standpoint as user statistics, a new form should be created (or edit the existing form) to create statistics for events to view information such as the most attended events, it correlation with points, and other relevant information.

  • Modify stylesheet to minimize code repetition.

  • Fix deletion of pickers once selection has been made.

  • Add corresponding rendering of array depending on subcategories, etc.

  • Add Create Form button inside the form to actually create and save the data that will be later displayed.

  • Modify checkboxes to fill out space and not waste an unnecessary amount of the user's screen.

  • Dynamically render checkboxes based on the size of the value array.

  • Create statistics form and corresponding json file for categories.

  • Dynamically render components depending on selected category.

  • Remove specific pickers based on selection, not just last one.

  • Create statistics screen to create/view a graph.

  • Added back arrow buttons to go back to the previous screen.

Divide PostDetail.js into individual components

PostDetail component is loaded with cards, it's must be broken down into other components. One way is:

  1. Rename PostDetail to just Post
  2. Create individual components such as: PostHeader, PostImage, PostDescription, PostFooter
  3. Now Post is the parent component using the children components mentions above.
  4. use props to pass data and style each component individually.

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.