Giter Club home page Giter Club logo

core's People

Contributors

0xsk avatar abhinavpappu avatar aidanglickman avatar aniketgargya avatar arpanlaha avatar asankaran avatar baileytincher avatar chin123 avatar cmsparks avatar csood2 avatar emilycraw4d avatar faddock avatar jonnativ avatar jprx avatar m-pitera avatar mattgeimer avatar melissachen2000 avatar mx101 avatar shg8 avatar shresta4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

core's Issues

Microsoft OAuth

At the moment Core only support Google OAuth for students and faculty. It is possible the over the next few years incoming students will not have Gsuite account associated with their @illinois.edu emails. We should support Microsoft OAuth since these students will likely be transitioned to outlook backed @illinois.edu emails.

OAuth poviders have already been abstracted behind a unifying interface under service/auth/provider/. A new OAuth provider implementation for Microsoft should be added in that folder.

Improved Authorization Errors

Currently the authorization middle simply returns a string error if the user does not have the correct authorization for the endpoint. We should return a json error for REST endpoints and a rendered HTML page for interactive endpoints.

The authorization middleware lives under middleware/. It will need to be modified to take a parameter which indicates if the route we are operating on is a REST endpoint or a web page endpoint. Based on that parameter the string errors should be converted to json errors for a rendered authentication error webpage.

Improved Errors

Currently errors just return a vague raw text string which is rendered in the browser for the user to see. We should have a proper error page that has the standard header and footer and provides more information about how the user can resolve the error. (ie. If you try to access intranet before creating an account or are not a paid member there should be instructions about to be create an account or become a paid member).

GitStore for Data

Currently there are large amount of user visible data embedded with functions of the site controller. We should store this information in a yaml file under data/ and provide a service and can read this data and parse it into a struct which can be then rendered into the page.

Remove MySQL Requirement for Development

Currently developers must set up their own local instances of MySQL for Core to interact with. Instead we should default to using sqlite3 in development mode. Doing this will further streamline the development environment setup for contributors.

The already exists an abstraction layer in database/ which hides the exact implementation of SQL utilized. We should switch to initializing a sqlite3 database when an environment variable is set (Perhaps SQL_IMPLEMENTATION=(mysql|sqlite)). Additionally we need to ensure that all SQL statements executed by our codebase are compatible with both sqlite3 and mysql.

Since production utilizes mysql, we should continue to run the unit tests on github action with mysql.

Improved Developer Workflow

Currently there has been minimal work around improving the development experience for developers which do not have any access to production resources. In order to mitigate this impact the following improvements should be made:

  1. Pull data from the local data/ folder instead of the production data on GitHub.
  2. Improve the Fake OAauth provider to support end to end usage in a development environment.
  3. Add make dev-reset which will reset the state of the development environment (wipe DBs, re-run migrations, etc.)
  4. Add make dev-run which will spin up Core in dev mode
  5. Add document on the end to end workflow for developers and explain how to use the make dev-* targets.

Update groups.yaml

Update groups.yaml to make sure that SIG meeting times, chairs, and committee information is accurate.

Extension Interface

Since Core is intended to be a small replacement for only the minimal set of services requires to ACM@UIUC's website and user management, there needs to be a way for members to build extensions that can leverage Core for authentication, membership verification, and group verification. Therefore we will add an extension interface to Core which allows extension services to plug into the authentication pipeline for Core and get back a token which can then be included in future requests to Core for verifying user attributes.

Bulkload User Accounts and Resumes

Currently all of the user account information and resume metadata / files only exists in the groot based infrastructure. This data needs to be transferred over into the new Core based infrastructure.

Recruiter Login

We intend for recruiters to login via LinkedIn in order to verify they are the owner of the email address we have created a recruiter account for. The OAuth provider interface needs a LinkedIn implementation for this to be completed. Additionally there are a couple places in the auth code which might need to be tweaked to allow for multiple OAuth providers that have different enforcement criteria (ie. We should also enforce @illinois.edu emails for student / faculty login and not recruiter login).

Cleanup HTML & Less / CSS

The majority of the HTML and Less which powers the site has been copied and pasted through multiple generations of ACM@UIUC infrastructure. As a result there is a lot of unused code, poorly named elements, etc. which would greatly benefit from a cleanup.

Resume Upload Timestamps

Currently we do not record the time at which a resume was uploaded. We should record this information in order to track how often resumes are being updated.

This can be accomplished by:

  1. Adding a migration to the database code
  2. Update the resume model to store the timestamp as an int64
  3. Injecting the update timestamp in the controller code for the resume upload endpoint
  4. Updating unit tests to properly handle update timestamps

Record User Creation Timestamp

Currently we do not record the time at which a user account was created. We should record this information in order to track how our membership has changed over the years.

This can be accomplished by:

  1. Adding a migration to the database code
  2. Update the user model to store the timestamp as an int64
  3. Injecting the creation timestamp in the controller code for the user creation endpoint
  4. Updating unit tests to properly handle creation timestamps

Membership Dues payment

Right now, ACM uses venmo or PayPal to collect its new paid memberships (reminder: don't need to pay to be a member of acm or participate in anything). Incorporating the Stripe API to set up billing, and allow students to directly login to the portal and securely pay for membership would be a natural expansion/integration of this system, and make it more convenient for people who decide to become paid members.

Inject Copy Into HTML Templates

Currently there is still a lot of copy embedded with the HTML page templates. We can extract these copy out into yaml files and inject the data into the templates at render time. This is make it easier for us to separate data and code and make quick tweaks to the content on our pages.

The HackIllinois and Reflection | Projections pages are generated from template data. You can their data under data/ and their HTML templates under template/. The goal is to do the same thing for the other content heavy pages in the site.

Resume Filtering

Currently the resume book displays all resumes in an ordered table. We should add the abilility to filter resume's based on all the metadata that we have associated with them. We should also allow for sorting the resumes based on a specified field of the metadata.

This can be done by having the resume book endpoint take a filter in the query string which is uses to decide which resumes to render into the template.

On the front end there needs to be form on the resume book page which allows setting filtering options. Submitting the form should reload the page with the correct filter as a query parameter.

Decouple tests from production data

Currently there are unit tests which depend on data from the production data/ folder. As a result, changing this data can break the tests. We should have a test/data/ folder has a snapshot of the production data and use that for the unit tests.

This can be implemented by copying data/ to test/data/ and then overriding GITSTORE_BASE_URI to read from the test data folder.

User Filtering

Currently the user manager displays all users in an ordered table. We should add the ability to filter users based on all the metadata that we have associated with them. We should also allow for sorting the users based on a specified field of the metadata.

This can be done by having the user manager endpoint take a filter in the query string which is uses to decide which users to render into the template.

On the front end there needs to be form on the user manager page which allows setting filtering options. Submitting the form should reload the page with the correct filter as a query parameter.

Support Multiple Meeting times for SIGs

Many SIGs/committees have multiple meeting times throughout a week. The groups.yaml andsigs.html webpage can be modified to support this. (This could be a good starting point for someone to learn the codebase!)

Potential groups.yaml schema change

sigs:
  - name: AIDA
    description: Artificial Intelligence and Data Analytics
    chairs: Jeffrey Lai, Arjun Gupta, Shaw Kagawa
    website: https://aida.acm.illinois.edu
    email: [email protected]
    meetings:
      - topic: Data Analytics Workshops
        time: 'Sunday 2:00 PM - 3:00 PM'
        location: Siebel 1105
      - topic: AI Workshops
        time: 'Wednesday 5:00 PM - 7:00 PM'
        location: Siebel 1109

SIGGraph meeting time update

After room reservations came in, we need to update the SIGGraph meeting time again. The new info is:

name: SIGGRAPH
description: Special Interest Group for Computer Graphics
chairs: Sahil Patel, Stacy Zheng, Michael Korenchan
meetings:
  - topic: General Meeting
    meetingTime: 'Mondays 4:00 PM - 5:00 PM'
    meetingLocation: Siebel Center for CS rm. 1103
website: https://acm-uiuc.github.io/siggraph/
email: [email protected]

Adding linktree as a "useful link"

image

Adding a link to the linktree under Useful Links on the about page could be useful. Thoughts?

Linktree link: linktr.ee/acmuiuc

We could have the text be "ACM@UIUC Resources" or something like that

Resume Deletion

Currently there is no way to delete a resumes. We should add that functionality to the backend and add a button for it to the frontend. The backend code and endpoints should be similar to the user deletion endpoint. On the frontend there should be a delete button next to the current approve button that shows up for unapproved resumes. Additionally approved resumes should have the delete button available.

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.