Giter Club home page Giter Club logo

shpe-uci-portal's People

Contributors

alejandrogznz avatar bcid avatar brandonteran avatar ciarteag avatar dependabot[bot] avatar dhsalazar11 avatar eduardo0301 avatar gfmunoz avatar globins avatar guilleeh avatar hlopezes14 avatar johan-cuevas avatar josueal1 avatar ramon024 avatar shpeuci avatar tlb99 avatar waldo023 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

shpe-uci-portal's Issues

SHPE public events google calendar

Screen Shot 2020-04-15 at 2 18 18 PM

Feature request Motivation

to attract more members to SHPE-UCI wide events, and create more easy access, transparency for anyone, not just our members

Solution

Request SHPE-UCI exec board to make a public google calendar, ask leads to save events here, and embed the html <iframe/> into a page. No API required, just that snippet of code from google calendar

Alternatives

Create a whole calendar from scratch which would be more time consuming. https://wics.ics.uci.edu/events/

Dynamic Major and Year Inputs

Feature Request
As a user, I'd like to - Have the ability to start typing a major and autocomplete it so I don't have to type it all.

Solution - Deliverable
HTML provides a solution with datalists

Helpful Links

Register_page

Will require user to input:
password
email (uci)
First name
Last name
ucinetid
major
year
phone (maybe optional)

User Portfolio Page

As a user, I should be able to see my public Portfolio page, along with a preview of my resume.

Requirements:

  • Resume Preview Window
  • Display user info
    • Name
    • Email
    • Class status(Freshman, Sophomore,...)
    • Graduation Date
    • Seeking Internship(Yes/No)
    • Profile Picture
    • Bio
    • Anything else you think should go here.

There is no certain way this must look, as long as its pleasing for the user. :)

Add getAlumniUser() function

Feature

Notes

Reach out @Globins for GitHub Branching clarifications
Reach out @josueal1 for Firebase questions

Shadowee

None

Membership List for Admins

Feature

  • Install GitBash if using Windows
  • Follow README.md of shpe-uci-portal to Install & Run Python web app using Terminal or GitBash
  • Create a new GitHub branch based on master called it ej:admin-dashboard
  • Add a shpe-uci-portal/app/templates/admin.html file
  • Follow README.md of Admin-Dash-Template to Install & Preview app
  • Copy any html, css files from Admin-Dash-Template into our admin.html
  • Git add, commit, & push any changes to to origin/admin-dashboard
  • Open a Pull-request for a code review anytime

Shadowee

@Gfmunoz

Notes

Until backend dev havenot added a /admin route, Just use the Admin-Dashboard python webserver

Member Point System Brainstorm

We need to structure our database in order to track member points.

Remember to follow the new feature guidelines outlined on the README.md document when creating your branch.

Currently, we have a users object with all our users. I believe we should have the users and the points objects separate. Heres an example

DB: {
users: {
- user_id: {name: Guillermo}
- user_id2: {name: Osvaldo}
},
points: {
- user_id: {fall: 24, winter: 45, Spring: 20}
}
}

TO-DO

  • Get familiar with our repository. Go through this tutorial: link
  • Get familiar with Pyrebase. link
  • Get familiar with Firebase. Just play around with Authentication/Database tabs link
    - Create a route that pushes a user with some points like this:

DB: {
points: {
- user_id: {fall: 24}
}
}

Alumni Detail Page

Is your feature request related to a problem? Please describe.
When I click on an alumni after I search for them, I should be redirected to a more details page to find more info about them.

Describe the solution you'd like
I would like a dynamic route that will change its content based on the username entered in the url.
For instance: localhost:5000/search/guilleeh --> should give me details about the alumni with that name. We still haven't decided how we want to have unique user id's, so for now maybe use their ucinetid

Describe alternatives you've considered
Instead of a whole new window, maybe you can do a little drop down window, with all their details.

Additional context
You have freedom to choose how to implement this.

Implement forgot password flow

Feature Request
As a user, I'd like to - be able to reset my password if I forgot it.

Solution - Deliverable
Create a page where a user can put their email and send a password reset link. Then if they click the link, they should be able to reset their password and log in once again.

Helpful Links

New Admin Flask Route

Feature

  • Follow README.md of shpe-uci-portal to Install & Run Python web app
  • Create a new GitHub branch based on master & call it admin-route
  • Add a /admin route in your local branch version of shpe-uci-portal/app/__init__.py file
  • Ensure that admin() function renders a basic admin.html on localhost:5000
  • Git add, commit, & push any changes to origin/admin-route
  • Open a Pull-request for a code review anytime

Notes

May need to reach out to @josueal1 for clarifications
May need to update admin.html from master after frontend updates

Shadowee

None

Searchable FAQ Page

**Feature request related to a problem? **
When I want to know more about SHPE, it's inconvenient having to search valuable information.

Describe the solution you'd like

  • Search box
  • Upon typing I receive different cards that relate to search
  • On clicking a card I am redirected to the page information
  • Connect matching to a { Firebase List of Question : to redirect url }

Additional context
buffer-faq

Create Protected Routes

When a user tries to go into a protected route, they should only be allowed if they are authenticated.

Create Alumni Search

As a user, I want to click on a link on the navbar of the website, and be sent to a page where I can search for alumni by name. A simple, minimal search bar is fine.

Requirements:

  • Create new python file under routes for your desired route. (/search)
  • Create new html/css/js file for your route
  • Create dummy data on the backend where we can pull some alumni from
    • Each alumni can just have a name and email address for now
  • Once a search is submitted, a list of results should be displayed below the search bar
    • We can worry about clicking each individual result later.

The CocoaPods website has an excellent example for a minimalist search feature. Below are some examples: https://cocoapods.org/

Screen Shot 2020-04-18 at 12 46 45 AM

Screen Shot 2020-04-18 at 12 47 05 AM

Resume Upload UX

As a user, when I drag and drop a resume file on the dashboard page, the app should tell me if I'm uploading a file incorrectly

TODO

Related to: #53

Create Login Table

User, time and from what type of system they've logged in. One to one relationship.

Create CI/CD Pipeline

Whenever branches are merged to master, the production environment should be automatically updated.

Options - CI/CD, ???

Payment Checkout Prototype

Feature Request

  • As a user, I'd like to notify the admins that I've paid my Venmo Fee with the press of a button
  • I'd also like to see the status of my membershpe status update visually
  • Backend Task: Update the paid_status of that user to pending on firebase using python flask

Solution - Deliverable

Consider reusing shpe-signin HTML, Bootstrap (CSS), JS code

Helpful Links
checkout_uiux

Redirect_Dashboard_1

As a user, I'd like to be redirected to the dashboard if attempt to go into the login page or registration page. I want to stay logged in unless I log out on my own accord.

Solution - Deliverable
Solution- Check if session exists with the user in both login and registration functions in auth.py

Membershpe Stamps Python App

Python script that reads csv file of zoom attendees email, checks if email exists in firebase database, increases stamp attribute +1 if time cut off met.

Resources:
Membershpe Stamps System

List of Team Tasks for F'20

Feature Request

  • Make a Data schema of futureQuestion records in Google Firebase (ej: {"title" : "str"})
  • Make Hierarchical Design of records of Questions on Firebase
  • Make an API System Design of a /faq endpoint of GET method (gets all questions as JSON)
  • Create user flow of an "admin" using a /faq to POST a new question with answer

Scrum Lead

@alejandrogznz

Developers

@saulg7746, @aovalenz18, @tlb99

Solution - Deliverable

  • Meeting on Zoom & break into smaller tasks for each member

Dynamic navigation bar username

Feature Request
As a user, I'd like to - be able to see my name on the top right corner of the menu item. It currently says, "Hello, Frontend team!", but if I am logged in as Guillermo Hernandez, I would like it to say, "Hello, Guillermo".

Screen Shot 2020-05-08 at 3 53 52 PM

Solution - Deliverable
Look in components.html, the navbar_logged_in(g) component, the button should dynamically have the name of the current user. You may have to define an API call to get the name of the current user since we don't have that yet.

Helpful Links
Ping Alejandro, as he worked on the macros and knows a little more about them than I do, but ping me as well if you need help.

Report Invalid Credentials as Red Alert

Screen Shot 2020-04-15 at 2 22 50 PM

Upon visiting the SHPE-UCI website, It was difficult to know the status of the system until I saw the hidden banner at the top. A centered-red box right above "login" would be great messaging!

Member Search Engine Filters

Feature Request

As a user, I'd like to click a toggle button right above the search box, to only search for alumni, since right now it is searching for all members.
As a website visitor, I should able to leverage the power of SHPE UCI network member database and connect with anyone. Like Linkedin powerful filters!
Solution - Deliverable
A toggle button on the screen
Iteration over all Firebase users will contain a conditional on "Alumni"
Alumni page results must continue to look similar to current

Helpful Links
Engine Filter

#61

Login_Page

-username
-password
-register link
-login button
-info about shpe @ uci
-info about the benefits of having an account

Admin Status Upon Registration

Feature

  • Install GitBash if using Windows
  • Follow README.md of shpe-uci-portal to Install & Run Python web app using Terminal or GitBash
  • Create a new GitHub branch based on master called it ej:admin-status-on-register
  • Git add, commit, & push any changes to to origin/admin-status-on-register
  • Add a new key-value pair, "is_admin": "False", into the data py dictionary on this line so new Firebase Users have this attribute
  • Open a Pull-request for a code review anytime
  • After merging, Manually test by registering a new email thru stage-web to ensure that /register didnt break AND code added new attributes to Firebase user

Shadowee

None

Notes

The dictionary is the data model schema lives in the register() function, which is called using the /register api

Resume Upload API

As a user, when I drag and drop a resume file on the dashboard page, it should be uploaded to a Google Drive Folder.

TO-DO

  • Follow this easy 30-min Google Drive API Codelab: https://codelabs.developers.google.com/codelabs/gsuite-apis-intro/#0
  • Get familiar with our Python Flask repository. Go through this tutorial: https://flask.palletsprojects.com/en/1.1.x/tutorial/
  • Create a branch resume-upload-api, & publish it to github servers
  • Look around the Sumbit button in templates/dashboard.html,
  • Create a dashboard.py in /routes (similar to settings.py) to handle the POST request triggered from submit button
  • Import dashboard from routes and register app.register_blueprint(dashboard.bp) in __init__.py
  • Write logic for Drive Upload:
  1. Extract file from request.form
  2. Setup Drive API Simple upload ( uploadType=media )
  3. Send the file using API
  4. Delete file from local repo
  • Test getting Drive API key, try to save a file into a nested folder
  • Find user name metadata stored in the app variable in flask, and use it to upload Lastname_Firstname.pdf
    Look at setting.py db.child
  • If the user uploads a resume again, (write over the old resume file on GDrive OR deletes the file and reupload new)

Solution to Blocker:

  • edit auth.py in @bp.route('/register', to add a resume_id: None in the data
  • Coordinate zoom call with Josue to wipe out Firebase, Merge Redeploy
  • Test creating a new account,
  • Add if conditional in dashboard.py for POST handler if resume_id is not empty then update file

End Goal:

  • GET request for /dashboard loads a usual, but POST request for /dashboard is reserve to upload resumes

UI/UX

  • Add a flask conditional statement: "if data variable exist; then: show message; else "Drag Resume here" "
  • return render_template() that sends data dictionary with a message "Resume Uploaded"

Extra

  • Try using resumable upload with Drive API

Admin Dashboard Prototype

Feature Request

As a SHPE at UCI Board member, I'd like to visualize KPI (key performing indicator) metrics about our chapter.

Solution - Deliverable

Create new Flask /admin website endpoint for Prototype
Customize template https://github.com/jonalxh/Flask-Admin-Dashboard
Consider Firebase user attributes for Permissioning

Helpful Links
image

Create 404 Page

When a user tries to access a page with that does not exist, a custom 404 page should be shown.
Here are some examples.
Screen Shot 2020-02-04 at 2 26 26 PM

Implement User Portfolio Page

As a user, I should be able to see my public Portfolio page, along with a preview of my resume.

Requirements:

Resume Preview Window
Display user info
Name
Email
Class status(Freshman, Sophomore,...)
Graduation Date
Seeking Internship(Yes/No)
Profile Picture
Bio
Anything else you think should go here.
There is no certain way this must look, as long as its pleasing for the user. :)

Admin Tab in Menu [For Admins]

Feature Request

As an admin user, I'd like to see a clickable menu option that takes me to /admin

Solution - Deliverable

Helpful Links

Paid Status Upon Register

Feature

  • Install GitBash if using Windows
  • Follow README.md of shpe-uci-portal to Install & Run Python web app using Terminal or GitBash
  • Create a new GitHub branch based on master called it ej:paid-status-on-register
  • Git add, commit, & push any changes to to origin/paid-status-on-register
  • Add a new key-value pair, "paid_status": "general", into the data py dictionary on this line so new Firebase Users have this attribute
  • Open a Pull-request for a code review anytime
  • After merging, Manually test by registering a new email thru stage-web to ensure that /register didnt break AND code added new attributes to Firebase user

Shadowee

@jesusantmoto

Notes

The dictionary is the data model schema lives in the register() function, which is called using the /register api

SHPE Familias Leaderboard DB

As a user, if I am part of a shpe Familia from the mentorSHPE program, I would like to see the points my Familia has.

We need to design how we want to store the points using Firebase Realtime Database.

I imagine something like this

families: {
  fall: {
    tech-eaters: 25,
    dino: 50,
  }
}

TO-DO

  • Get familiar with our repository. Go through this tutorial: link
  • Get familiar with Pyrebase. link
  • Get familiar with Firebase. Just play around with Authentication/Database tabs link
  • Create a Flask get request that gives us the data for the familias.
  • Create a Object Classes representing: Points, Teams, Teammember, Dashboard
  • Create an API endpoint to add, update, delete: points, teams, teammembers

Helpful Links / Visuals
Example Leaderboard Dashboard Metrics UI

Make Login Page Mobile Friendly

As a user on my phone, if I access the login page I should be able to easily login by fitting the center container correctly in mobile.

To-Do

  • Make login page mobile friendly.
  • Change "SHPE | UCI Portal" to "SHPE at UCI Portal"
  • Integrate error message to be above the login container. Refer to image below for where it should be.

Screen Shot 2020-04-06 at 7 32 34 PM

Admins Creating Other Admins

Feature Request

As a developer, I'd like to call a function within my /promote/<user_email> API

Solution - Deliverable

Write a function in extensions.py that:

  • Takes a user email string as input (assume email will always be valid)
  • Searches for that user in DB (Similar to get_user(username: str) -> FBUser )
  • Sets is_admin attribute, of that user, to True
  • If successful return 200, else (if useremail not found) 400

Helpful Notes

  • Test function locally, call it directly above render(dashboard.html) in __init__.py#L73
  • This function will be called via a POST /promote/<user_email>

Add ReCaptcha Integration to Registration Page

Is your feature request related to a problem? Please describe.
When I register for a new account, I would like for the site to make sure that there is protection against bots. We don't want spam in our databases.

Describe the solution you'd like
There is a python library for implementing ReCaptcha's - https://github.com/mardix/flask-recaptcha/

Describe alternatives you've considered
You can follow this tutorial - https://pusher.com/tutorials/google-recaptcha-flask
This may require for us to change how we implement forms.

Additional context
If possible, could you fix the gray bar above the navbar bug on the registration page?
Also, if you could make the registration page responsive that would be great as well.

IMPORTANT
You will have to re-download the .env file from slack, as it contains the new variable keys for the recaptcha.

Dashboard_Page

Dashboard page, page redirected to after logging/registering

Add CSS to registration page

Something clean like this. Talk to the other people in the front end team to get the right colors they are working with.
Screen Shot 2020-02-24 at 11 03 54 PM

To-Do

  • Finish CSS for registration Page, make it consistent with the login page.
  • Make Registration Page mobile friendly.
  • Ask for help in the slack "#Web-portal" channel.
    @Johan-Cuevas

Implement sessions & ReCaptcha

As a user, if I click remember me, I should be able to keep my session going even if I exit the browser.

The web portal should also have a way to prevent spam or bots from login in by using reCapcha

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.