hack4impact-uiuc / memberdb-tool Goto Github PK
View Code? Open in Web Editor NEWTracks member information and notes for the org.
Home Page: https://members.h4i.app
Tracks member information and notes for the org.
Home Page: https://members.h4i.app
Describe the the feature request
Put request in backend that will just edit the visibility of a note.
GET /notes/labels
Return all unique note labels in the DB.
Returns a list of all current labels in order to allow user to choose from a list of current labels.
Create a /notes/:noteID route on the frontend for viewing/updating a note.
Page should display:
We're adding a cleaner look to the navbar. For new pages, it is okay to send them over to a Page Does Not Exist
or of the sort if they haven't been implemented
These points are a rough guideline. Please feel free to discuss with others on the team about the best way to design this component!
Currently, we lead members to a different page when they click on a member. We also want a modal to pop up that will have all of the member's data populated. Where those with permissions can edit specific fields just like the current existing page.
NOTE: This relies on #101 where edit member modal will reside in this given location:
These points are a rough guideline. Please feel free to discuss with others on the team about the best way to design this component!
../utils/apiWrapper.js
Right now we want to be able to host both images of our members along with their resumes too. This might also require the need to add new fields to the Member Schema so be aware of that too.
This will eventually lead to new issues like that of allowing people to upload those specific files
To recap the two main files that we want to host in Contentful CDN are:
These points are a rough guideline. Please feel free to discuss with others on the team about the best way to design this component!
Currently much of the frontend (especially on the Profile page), is generated from the backend. This leads to the labeling being a bit weird. For example, some enum options are "SOFTWARE_DEVELOPER" instead of "Software Developer" and labels are of the form "firstName" instead of "First Name".
To fix this, we could either:
As said by the title the goal is for any hack4impact directors to have the ability to sign into the memberDB tool automatically.
For some clarifications, we are using google sign-in as our method of integration. So see what ways we can accept a specific domain.
Migrate member info from previous semesters to the atlas DB.
Previous Semester
Set up auth backend using Passport.js & Google OAuth
Examples:
GET /notes/labels
Return all unique note labels in the DB.
There are two new fields that we think would help give an additional data point about every member.
These points are a rough guideline. Please feel free to discuss with others on the team about the best way to design this component!
GET /members/:memberId
Currently the viewableBy
field is the sole determiner of whether or not a user can see a note. Lets change this so that individuals on the editableBy
field are able to view a note by default.
Describe the bug
When clicking Create Note
there is a delay before the button updates to Update Note
. In the time of that delay, you can click Create Note
again to create another instance of the same note.
Add a notes section to the Member DB schema.
DB Fields:
Features that notes must have according to PRD
Describe the bug
You can create notes that you can't see if you forget to add yourself to the editors list.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
You should be able to see the note 😛
In ./client/src/pages/note.js
push the current memberId onto the 'editableBy' list if the member did not add themselves.
Filter the current member out of the options list for ease of use.
Update the list of fields editable by members on the backend.
Describe the bug
Users who are only viewers are presented with a form when viewing a note.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The form is greyed out or displayed in text
Add greyed/viewer state (quick win)
We could just see if the editableBy
includes the current user. This is not the best solution, keep reading for the full-stack solution.
Return the current member's permission level as part of the response note object.
Make member grid display data from mongo database and limit the scope to the member's role.
Relevant Files:
client/src/components/table/Table.js
client/src/utils/apiWrapper.js
Tasks:
apiWrapper.js
to populate grid with user's viewable db dataTable.js
and set result to members
state variableDescribe the bug
Opening a link outside of home (e.g. https://members.h4i.app/notes) without logging in first results in an indefinitely loading page.
To Reproduce
Expected behavior
App should redirect to members.h4i.app/login
Add a frontend route /notes. This should display an ag-grid table of all notes a user can view (handled by the backend).
We should put a "view notes" button on the profile page that redirects to /notes?memberID=. The ag-grid should filter to notes where referencedMembers includes memberID.
When a note is clicked on, redirect the member to /notes/:noteID. This page will be handled in another issue.
Add a button on the /notes page to create a new note. Look into using draft.js or markdown draft.js.
Ask Yousef
Break it up into two columns for less scrolling
In the schema, we store a lot of specific data fields as strings (for example, phone, email). We should do some validation on the frontend and backend to make sure our data is uniform. I.e. "Phone numbers must be of format xxx-xxx-xxxx"
The homepage table doesn't display many fields that it should be getting from the backend (netID, grad Sem/Year, etc.). It should be pretty straightforward to fix this by parsing the response from the backend and feeding it the table.
docker_compose.yml
api
and client
Add members should be moved to its designated location button instead of at the top of the page. This also relies on #101 and #102 Where there is a new component to input member information. Add Members functionality is already implemented you just need to marry both new designs together.
Add members are only available to Directors, so make sure to make yourself as a Director
GET /notes
POST /notes
PUT /notes/:noteID
DELETE /notes/:noteID
For all endpoints, ADMIN level takes precedence over editableBy/viewableBy
Create a modal on the /members page for adding members to the DB.
User should enter level/email for each user
Make request to /members/{current_member_id}/permissions. Only display this button if the endpoint returns "addMember".
Currently, we are using AG Grid as a method of displaying member information and it is very straightforward in how it displays it. However, we want to make it more user-friendly and up to date with current h4i UI/UX trends
This is a high impact issue since it will be the first component members will be seeing and it will be used in many ways instead of just member info
Important: This is only focused on the look of the component. Don't worry too much about filters, add members or search members. But still, design this component in a way that those features can easily be implemented (ex. non-functional btns)
These points are a rough guideline. Please feel free to discuss with others on the team about the best way to design this component!
Create endpoints that will support flexible schemas for non-required fields and toggle their visibility (e.g. director can add a field called “areDuesPaid” which is or isn’t visible to members of their chapter)
Things to consider:
These points are a rough guideline. Please feel free to discuss with others on the team about the best way to design this component!
../models/members.js
and linked related question../src/api/
folderUsers are currently able to edit fields about a member's info on the frontend (provided they have proper permissions). Add a button to the Profile page that makes a PUT request to update the member's data after changes are made on the frontend.
For components, use H4I Bridge
Use the PUT /members/:memberID endpoint
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.