fcc-alumni / alumni-network Goto Github PK
View Code? Open in Web Editor NEWThe official home of the freeCodeCamp Alumni Network :star: :star: :star:
Home Page: https://fcc-alumni.com
License: BSD 3-Clause "New" or "Revised" License
The official home of the freeCodeCamp Alumni Network :star: :star: :star:
Home Page: https://fcc-alumni.com
License: BSD 3-Clause "New" or "Revised" License
edit
status but this is currently not updated or displayedMany services allow a like to be retracted by clicking it again.
If user events create multiple flash messages in UI, they all get stacked. Should probably auto-clear old messages.
When user is logged in, on Dashboard page, and they attempt to reload, app redirects to login via the HOC even though they should still be logged in, state from redux store does not persist on reload. I think we need to reset the redux state on componentDidMount() in Dashboard.js or something? Any ideas?
@bonham000 I think that as this project gets bigger and gains more contributors, this could be valuable.
I've created a branch to get started on this, but am making slow progress and this is low priority.
I've tried to configure ESLint to catch these errors, but have only managed to do it per file with config comments. In order to do this globally, I believe we'd need to eject from CRA. Which clearly, is not worth it.
The larger point is that I think we need to enforce something across the board so things aren't just willy-nilly, and the codebase maintains some kind of consistency (especially if people actually start contributing). But I think asking people to "pyramid" their imports and such somehow seems silly and less professional.
Also, when I was working on the refactor of Preferences
the other day, I had alphabetized the imports and it was a big help when I was looking for specific packages in the list, so I see the practicality as being more valuable than the aesthetics of our current convention (even though I can't reiterate enough how much I like the way it looks).
Maybe move getCerts
, gitlabRoute
, and userRoute
all into a user
routes file since they are all related, change passportLogin
to just passport
, and create a new routes file, api
, for all future CRUD requests will we make related to application data.❓
Currently clicking on the skill buttons in the Coding Profile section of someone's profiles links you to the wikipedia page which isn't very helpful. Especially things for "React-Router" as the wiki page doesn't even exist.
My suggestion would be to link you to the mentor page within the FCCAN with that particular skill selected in the filter, so you can quickly find other users that also have that same skill
Should probably have a separate route dedicated to this which provides some basic pointers and guidance, code of conduct, etc. on what it means to be a mentor in our community. Just to set some baseline expectations and what not.
Can be simple and to the point for now - but Chance is really the one who made me think of this becuase he offered to put some questions in the next cohort placement survey pertaining to this. So maybe we'll get some useful data / insights from that which can help us build this out further.
There's no option to select "other" or type in my own skill.
Specifically, I wanted to add Webpack as a skill, but couldn't
see short screen cast. This is reproducible from any protected route. Have not looked into yet, but I'm guessing that even though we've logged out, the session is still active?
this package will not prevent users from adding profanity to sections like "bio" and "mentorship bio", but it will blank them out just in case we get a user in production who is not the best apple and tries spamming.
EDIT 2: found a different package - swearjar.js offers all the same features as bad-words.js and more, including what I was really looking for - a method to return true
or false
if a string contains/does not contain profanity. This way it can also be used from keeping curses out of the skills and interests dropdowns as discussed in #163
Could also consider adding this in public chat only, and only blacklisting the worst of words to help us protect against people getting harassed while we have no "terms of use" or "flag user" features in place.
EDIT 1: I was wondering if we could be held legally liable if someone was harassed in our chat room (thinking ahead here!) but, at a quick glance, it looks like, no, we could not be. Still something to consider, and perhaps wise to implement a basic "terms of use" at some point forcing users to take ownership of any content they post. Again, doubt this would be a major issue anyway, but the gitter rooms are often fraught with harassment, so if this ever got big enough, it would be something to consider. https://www.stoel.com/online-forums-chat-rooms-and-hosted-content-risks.
This issue is for tracking anything that comes up in the soft release.
Beta Users: Please report any bugs or issues you may uncover, ideas for improvements, or feedback on the app as a whole here.
Thank you!!! — the FCCAN team
The Readme is the first thing someone reads when visiting the page and its currently too bare and with no helpful information like app features, screenshots. Also some links are wrong for example the contributing guideline points to the edit page.
We need a presentable Readme with links to FCC resources and a plan to give directions on how to install and use the app.
Any other improvements should be noted here in this ticket
I don’t really understand the need/want for the Mess Hall.
There are already many technologies that focus exclusively on chat and therefore do the chat better. (slack/gitter/messenger etc)
I think FCCAN should stick to the collaboration aspect, and utilise the pre-existing technologies like slack for live chatting instead of trying to re-create the wheel.
Running list to track any bugs we need to pin down:
This definitely isn't an issue for right now, but when filtering on mentors/mentees, I'd like to be able to filter based on how active they are or when they last logged in.
Or at least be able to view this information
During beta, someone tested this by plopping in an egregiously long message. Seems like something we should put some kind of reasonable limit on. Open to suggestions. Should be easy enough to implement.
A route specifically for viewing a user's profile, that really highlights their profile and is less of a preview (i.e. in Community page now).
e.g. /dashboard/users/:no-stack-dub-sack
Could link to this from community, mentorship, and chat, to give users a nice way of seeing details about another user.
Thoughts? Can discuss.
@stephenjfox now I see what you mean!
@bonham000 @Bigghead @stephenjfox Interested in implementing this so we are all on the same page and keeping things consistent. I am a very visual person, and disparities in even the way the code looks can drive me up a wall 😄 (yes, I have some issues I need to work through). Nothing has really stood out to me so far, and I've mostly made consistent whatever did, but seeing as the project is getting a bit more complex, here are some thoughts I've had as far as this goes:
As raised by @jdmedlock on the beta fccan slack chat:
So far the only question I have is is it the case that my email is viewable by others registered on the FCCAN site? If so, would it make sense to give the user the option of not sharing so the FCCAN team could use it, but not the general public. If I remove my email then I'm effectively cutting myself off from all communications - public and from FCCAN team
If I'm understanding correctly - the suggestion is to allow users to enter their email, but keep it private in case FCCAN team needs to contact them. Interesting point.
@bonham000 This was also raised by @QuincyLarson when I demoed the app to him.
Sometime go through and figure out how sessions are being maintained and if this is what we want.
Now that the <NavBar />
component is connect to Redux, the activeClassName
props no longer work. When the element is inspected, you can see that the class
attribute no longer changes on click. I've looked into this, and it seems like this has been a known issue for other React-Router versions, with the activeClassName
prop, not specifically with this component, when nested inside the component that is created when a component is connected to Redux.
This is very annoying, because it is very nice to have those active class names. Not sure if there is currently a way around this. I've tried connecting <NavBar />
's parent and making the decision on which nav bar (user or guest) to render there, or passing down the needed info as a prop and still deciding in the nav component, but both of these approaches actually work less and result in a non-working nav bar.
So I'm a bit stumped. Our only choice may just be to write some custom logic and CSS to show the right color when a link is active. 😭
As raised by @Kornil in the FCCAN slack channel:
Community User Cards should be clickable, at least in desktop mode. Meaning the whole card, not just the lower part.
The Big One 💥 💥 💥 🚀
Readme
& Contributing
guides.[email protected]
https://www.fcc-alumni.com/
If you are private chatting someone and you message them and then delete the message, they will still have a notification for that message. Basically, we want to decrement the notifications if a message is deleted.
The flow could operate the same as with the other chat operations which handle deleting a message. We simply want to additionally decrement the notifications (if they exist) when we update the database in step 1, and then update them for the actual user (for the real-time update) in step 2.
loading === true
until we fetch everything and this prevents any sub-component from rendering (we should be able to do all this within AppContainer
). This will help us avoid the contrived logic which exists for example in PublicProfile
and ChatController
right now.At some point, obviously, we will be unable to load the entire community when the app loads. At some point (theoretically) it would be too much data.
...
Let's hope we don't reach that point.
The sign-in with Github button takes multiple clicks sometimes for it to register and redirects to Github for logging in
Create some way / API endpoint to pull in more GitHub user profiles to populate a demo community when developing locally in order to improve development of community/mentorship features.
(GitHub has public API we should be able to get profile data from, and we can manually populate their certificates)
I don't know if it's a coincident, but i get the heroku error anytime i try filling up preferences, ???
@bonham000 we should discuss this tonight - now that this is getting more complex we're running into all sorts of fun new issues. For instance - when the profile page is edited by user and saved, then refreshed, changes do not persist. But when you log back out and log back in, then we see the changes. This is maybe because of the way I set it up? Not sure - the changes go to the server / db first, then come back to redux (as you know), but they still come back to redux, so not sure why they wouldn't be there. Realized this just as I was demoing the app to Stef before bed last night, so didn't look into it at all yet.
Same issue seems to be causing a lag in the update to community page? For instance, the meta under username on the card will reflect either "member" or "mentor" depending on the state of the slider in the profile page, so when you change this and click right over to community, change is not reflected, but on refresh it is. I didn't test the double refresh on profile page, that may have caused the changes to show up, it may be like a 1-load lag, and may not require signing out and back in to see the changes. Either way we need to address! Talk to you tonight.
@bonham000 @Bigghead any thoughts?
/dist/ajv.bundle.js
warning: apparently being championed happily by DanPropTypes
warning, it's possible this is stemming from some package we are relying on that hasn't been updated yet, so I think this is safe to ignore.
common
components)startsWith
and endsWith
with .slice()
as appropriate:username
url params on chat controller and public profileindex.html
title
of app & faviconStarting a draft of the file here...
If someone starts the verification process - i.e. signs in with github, but does not continue by hitting the "verify fcc data" button - the app will break. This will probably be pretty common - if someone reads our message and knows they won't get in because they don't have certs, why hit the button? They would just navigate away.
Problem being - their user document won't get deleted from the DB though unless they hit the button and fail verification. We need to ammend this ASAP. Someone who gets distracted or who is just curious as to what the app is all about might also break the app just by getting to the verification page and not continuing.
Just thought of this... we should allow users to "follow" one another I think. Seems like a useful feature for something like this.
With a community that encourages collaboration and "leveling up" by seeing where others are at in their careers, once you find someone, you should be able to follow or "bookmark" them so you can easily return to that person... Even if it's not public, so it can't become a bragging right for whoever has the most, it's just so you can find people you're interested in easily.
There would be no "feed" involved or anything like that, no need for updates.
Thoughts?
We need fully built out lists for both Core Skills and Coding Interests sections. This is what I have so far, feel free to edit this list, but whatever you add, please make bold, so we know what has not been hard coded into the program. As of now, all of these have. Thanks!
I guess we need a delete user feature?
dashboard/account
?
api/delete-user
💀
If a user deletes their account, we probably should clear their chat history...
@bonham000 This is an interesting one that I just stumbled upon... if you try to type in the url of a user's profile, let's take Weezlo
for example, but you ignore case, which is my general instinct when typing in URLs, we have problems. Because the component is set up to fetch the user info from the db/redux based on that parameter, if the case is not exact, the info does not get pulled. The fcc data still gets scraped, but no other user info is retrieved.
What this also means, is that you can visit the profile page of anyone - even someone that does not exist - and the page will still render with the basic shell...
same goes for dashboard/char/:username
routes
So this is really a 2 part issue:
/:username
routes - should be able to get around this fairly easily/:username
routesAny thoughts as how to get around the second one?
EDIT: I have the first part solved, at least for profile page.
EDIT 2: Both issues solved for ChatController as well now. It looks like you may have already thought of this partly? I just implemented what I thought would fix only the first of the two issues, but it seems to fix both. Not typing in /dashboard/chat/peter
or some other name that does not exist as a user, it just goes to main mess hall, looks to be because of the if/else
in mapStateToProps
Just when we thought we were almost done...
Eventually, we'll need these before official release. 📜 📜 📜
https://github.com/FCC-Alumni/alumni-network/projects/1#card-2287024
What should we include here? There are some rather big decisions to be made (or at least 1), that will affect how folks interact with the app, and how they interact with each other.
i.e. Should this page be "read only", and each user should only be able to change what shows here based on their "preferences" page (old profile page)?
...OR, are we going to allow some sort of "feed" - other users would not get notifications of new posts by others or anything, but do we want to give people that "extra reason" to come back? So they can share that cool ML article they just found, or so they can see how someone else is doing with a project?
...OR simple status updates, or anything?
It might be nice to get people engaging on another level, but sure, it adds another level of complexity...
Thoughts @bonham000?
It's confusing to other users when they see someone joined why they know has no certs... we should consider some kind of modification to the user schema that would indicate honorary member
The whole point of FCCAN is to be able to find meaningful collaborative relationships. I.e. mentors/mentee and to work on projects together.
The mentor/mentee part has been done well with a separate tab that allows me to search all users. However, no functionality exists to let me have that same search for projects other members are working on.
To make it easier/better to collaborate on projects, I would like to see a similar tab like there is for mentors, but for projects that users have assigned in their Collaboration section of their profile.
Would be awesome to be able to filter on projects based on tech stack, number of collaborators, number of commits, latest commit.
Site looks and works awesome !
This is a small issue, re-clicking the heart won't revoke (I'm tired, revoke works here right? lol) the original like.
This is the result when someone navigates away from a Public Profile before some of the axios
calls return. Of course React catches and suppresses these errors nicely and merely provides warnings for us in the console, but there are still several issues here.
First, we should be properly handling the case where these requests return but the component is unmounted. There are a few solutions which would work for this, but a more important consideration is the following: Currently, this component makes 5 ajax calls to the same freeCodeCamp url and we don't persist the results in any way. Furthermore, this will happen separately for any users viewed or even the same user viewed repeatedly — it's easy to imagine how this could escalate to a high amount of request traffic to freeCodeCamp which doesn't represent legitimate users: a problem for them.
I think this is the real issue here. Minimally, the best solution I can see is:
@no-stack-dub-sack this is definitely apparent on mobile, but you can see it on a normal computer if you just type very quickly in any of the text inputs in the profile preferences. I don't think this has to do with the page being in mobile view, I think it's because we are basically updating the entire user object gets every time any field is updated, even if it is just one key press. So everything re-renders (instead of just the input box that was typed in, which is what we want). Finally, I think because this component is fairly complicated and is rendering so much UI, this degree of re-rendering creates a perceptible lag, especially on weaker devices (mobile).
We should try to devise some solution for this. Perhaps we could separate all the inputs into isolated pieces of state and then merge them back into the user object before passing it off to Redux to save. Or, if each of the child components were React class
es, they could check with shouldComponentUpdate
to check manually if their props have changed and see if they should re-render. Becasue we reassign the entire user
in state, right now the answer is always yes since the props are different, even though for almost all of them the actual values of the props haven't changed. Since I assume the actual DOM rendering is the slow step here, preventing that with shouldComponentUpdate
may save us. That might be more fun to implement too.
I'm speculating on solutions though I don't know what the best move here is. Maybe if we rewrite in Vue.js we'll see huge performance gains — @Bigghead, I hear it's faster than React. ✌️
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.