Wall App is an application that allows users to register, login, and post on the wall. The front-end of the app was made using React, React-Bootstrap, Framer Motion to add some transitions to page changes, and Apollo-Client to request and cache data. The back-end server was set up with Apollo-Server-Express and uses Mongoose in order to communicate with the MongoDB database. User passwords are encrypted using bcrypt and email is handled by Handlebars to generate the email HTML and Nodemailer to send over SMTP. The app also uses JSON Web Tokens to handle user authentication.
In the project directory, first install all the dependencies by typing npm i
and then you can run:
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
Open http://localhost:3001/graphql to query the backend server in the browser.
The page will reload if you make edits on the backend or frontend.
You will also see any lint errors in the console.
This will seed data into the database to create users, posts, comments and also make the created users have friends.
This Application uses environment variables to store and protect the email SMTP settings. I'm using a seperate Gmail account to handle sending emails using a generated Application passsword. If you are testing the entire site flow locally, this step will fail unless you have your own Gmail credentials and set up a .env
file inside the server
directory with the following variables.
HOST=smtp.gmail.com
EMAIL_PORT=465
EMAIL_USER=(Your email)
EMAIL_PASS=(Your gmail generated application password)
SECRET=supersecretpassword
If that is too much, then I suggest to kindly use the deployed site at the link below as all functionality is working.
You can checkout the live deployed site on: Wall-App-Social
You can create an account by putting in a unique username, a valid email, and a password that is longer than 5 characters.
After submitting you will recieve an email from the site to confirm your email, please check your inbox or spam as you will not be able to sign in until you verify your email. The email will look like so once recieved:
After clicking the button you will be able to create your own posts for others to see and you will be able to add and remove friends.
Tests are available for the backend server, so go to the server directory with cd server
from the project directory and then you can run:
Launches the Jest test runner.
Currently there is only tests verifying the database reads and writes information correctly using Mongoose. There is also tests for querying the Apollo server to see if the correct data is requested but they do not work anymore. When the tests were being produced, the excecutequery function was working and requesting the appropriate data but I've been unable to get it working again and they will fail because of a server timeout.
Licensed under the MIT License.
My GitHub
If you have any additional questions and would like to reach me, you can at junioresc1092@gmail.com