/pg6301-social

Exam in PG6301 - Spring 2019

Primary LanguageJavaScript

Social.app

"The application topic for this exam is about a social-media website (i.e., a very simplified Facebook)."

My solution is this app built with lots of cool technologies, including these:

  • React
  • React Router
  • Express
  • Webpack
  • Babel
  • Jest
  • Passport

How to run

Be sure to install all dependencies first using

yarn install

Social.app is available on localhost:8080 when started using

yarn dev

To run tests, use the test command

yarn test

Thoughts

I asked myself 48 hours ago "can I really build this solution?" – I was a bit skeptic. I still am, because all the requirements were not met. I really wish this exam lasted longer. It's a great product for learning, but the requirements are quite huge.

I have, however, learned so much from this stressful exam. I hope that shows in this project with everything from folder structure to React logic. Still lots to learn, but I'm happy with the progress so far.

The focus has been on building the components first and then the backend.

I also want to stress that security in terms of backend was not my number 1 cause this time. My main focus has been the client and API.

Testing is something I finally realized why is important, but the implementation here is not good enough. I'll be sure to look more into this for future projects.

What I want to improve
  • Solving all the tasks
  • Live Chat for for friends
  • Adding native browser notifications
  • Testing. I should've taken testing more seriously this course. I guess I've learned.
  • Search can only display exact case-insensitive matches 🔍 - should smarter
  • For CreatePost: switch from input to textarea
  • Don't return the user's password when getting a user 🤔
  • Data validation
  • Embedding links into chat messages
  • Actually implementing the Friends feature would be fun
  • Improved API design
  • Implementing the YouTube API for displaying YouTube videos in the feed
  • Posting on somebody else's timeline
  • Showing relative time (started on this, but didn't have time to finish)
  • Editing user details
  • Cleaning up package.json (should be pretty good, though)
  • Hosting the app
  • More cool features
  • Improved folder structure and use of best-practises
  • Did I mention tests?

Extra functionality

  • SCSS/SASS
  • Date Picker
  • User Interface
  • The server can serve images
  • Links as attachments
  • Click the user's label on a post to visit their profile
  • Lots of smart conditional rendering (especially on Profile)
  • Search with suggestions
  • Sign out