Peer-Prep is an application tailored for aspiring developers seeking collaborative study groups to enhance their skills in coding and web development. The platform simplifies the organization of future study sessions by enabling users to create, explore, and register to sessions relevant to coding and web development topics. With Peer-Prep, users can seamlessly engage in a collaborative learning environment, fostering skill development and knowledge sharing among peers.
This webtool was built using Apollo Server and the MERN stack - with React front end, MongoDB database, and Node.js/ Express.js server and API.
There is no installation necessary for this application as it is deployed using Render. You can access and use the application here or at the following link: https://peer-prep.onrender.com/
If you are interested in running the application locally, please use the following steps:
- Clone this repository to your local machine. (For reference, visit the Cloning a Repository GitHub Docs article.)
- Run
npm install && npm run build
in your CLI to download the npm package dependencies and build the app using vite. - Run
npm run develop
to start up the backend and serve the client. - Navigate to
http://localhost:3000
on your local web browser to use the application.
This project requires the following npm package dependencies for the front-end client, which are included in the client/package.json
file.
- @apollo/client
- bootstrap
- dayjs
- graphql
- jwt-decode
- react
- react-bootstrap
- react-dom
- react-router-dom
This project requires the following npm package dependencies for the back-end server, which are included in the server/package.json
file.
- @apollo/server
- apollo-server-express
- bcrypt
- express
- graphql
- jest
- jsonwebtoken
- mongoose
Upon launching the application, users will be presented the ExploreSessions
page, where they can browse existing sessions. Users will not be given the option of registering for a session if they are not logged in. By pressing the Login/ Sign Up
button in the navigation bar, a modal will appear for users to toggle between logging in and signing up. After doing so, an authentication token will be returned for the user so they may take full advantage of the webtool.
After logging in, the navigation bar will update to allow users to access the MySessions
page. There, they can view the sessions that they've created or are registered to. Users will be presented with a button to Add Session
, which will present them with a form to enter the details of the session they're hosting. An error message will appear if any of the fields are blank or have invalid inputs.
Once the user has created their own sessions, they will render in the MySessions
page. While logged in, they will have the option to update or delete the sessions that they've created. Selecting Update Session
will render a form so that they can make edits to the Session details. Selecting Delete Session
will remove the session from the database and update the user and attendees' saved sessions.
When the user is browsing the ExploreSession
page and see a session they're interested in, they'll have the option to register and save the session to their MySessions
page if they are logged in. After doing so, the button will re-render and give the user the option to unregister from the session if they'd like. After registering for a session, the meeting link will render in the MySessions
page.
A testing suite was written with jest for the helper function formatDate
. You may execute the test suite by running npm run test
on the CLI while in the server/
working directory. Note that the test suite was written based on PST/ PDT time zone.
The GraphQL queries and mutations were tested locally during development with the Apollo Sandbox studio tool.
Please refer to the Installation and Access section if you are interested in running and testing the application locally.
- Implement a forum or Q&A page for users to post questions to their classmates
- Develop a commenting system to increase interactions with their classmates under posts and sessions
- Include payment integration with the Stripe payment platform to support charitable donations or premium features
- Add Progressive Web App (PWA) capabilities by building features such as a web manifest and service worker for offline functionality.
To make contributions to this project:
- Fork the repository
- Make some commits to improve the application
- Open a Pull Request on GitHub
- From there, we can discuss your changes and merge the pull request once your contributions have been approved!
This GitHub repository is licensed under the MIT license. Please refer to the license documentation here.
This project was developed by the following contributors:
For any related questions, please contact me via email at [email protected].