In this project, you are tasked with working on an existing application. A significant part of the challenge will be to familiarise yourself with the codebase you've inherited, as you work to improve and extend it.
More documentation of the codebase and its architecture can be found here. It's recommended you all read this after making sure the whole setup below worked for everyone. Then work together on a diagram describing how the application works.
A template Miro board for your diagrams can be found here. Make sure your validate your diagrams with your coach.
REPLACE THIS TEXT WITH A LINK TO YOUR CARD WALL
- Install Node Version Manager (NVM)
Then follow the instructions to update your
brew install nvm
~/.bash_profile
. - Open a new terminal
- Install the latest version of Node.js, currently
18.1.0
.nvm install 18
- Fork this repository
- Rename your fork to
acebook-<team name>
- Clone your fork to your local machine
- Install Node.js dependencies for both the
frontend
andapi
directories.; cd api ; npm install ; cd ../frontend ; npm install
You might get warning messages about the installed dependencies at this point. You can ignore them, as long as the installation process doesn't fail. If the setup fails at this point, don't wait for too long and reach out to your coach.
- Install an ESLint plugin for your editor. For example:
linter-eslint
for Atom. - Install MongoDB
Note: If you see a message that says
brew tap mongodb/brew brew install [email protected]
If you need to have [email protected] first in your PATH, run:
, follow the instruction. Restart your terminal after this. - Start MongoDB
brew services start [email protected]
- Start the server application (in the
api
directory)
Note the use of an environment variable for the JWT secret
; cd api
; JWT_SECRET=f6d278bb34e1d0e146a80b16ec254c05 npm start
- Start the front end application (in the
frontend
directory)
In a new terminal session...
; cd frontend
; npm start
You should now be able to open your browser and go to http://localhost:3000/signup
to create a new user.
Then, after signing up, you should be able to log in by going to http://localhost:3000/login
.
After logging in, you won't see much but you can create posts using PostMan and they should then show up in the browser if you refresh the page.
The automated tests run by sending actual HTTP requests to the API. Therefore, before anything, you'll need to start the backend server in test mode (so that it connects to the test DB).
Note the use of an environment variable for the JWT secret
# Make sure you're in the api directory
; cd api
; JWT_SECRET=f6d278bb34e1d0e146a80b16ec254c05 npm run start:test
You should leave this running in a terminal.
Then, you can either run tests for the backend or the frontend following the steps below.
Run the tests in a new terminal session:
# Make sure you're in the api directory
; cd api
; JWT_SECRET=f6d278bb34e1d0e146a80b16ec254c05 npm run test
Start the front end in a new terminal session
# Make sure you're in the frontend directory
; cd frontend
; JWT_SECRET=f6d278bb34e1d0e146a80b16ec254c05 npm start
Then run the tests in a new terminal session
# Make sure you're in the frontend directory
; cd frontend
; JWT_SECRET=f6d278bb34e1d0e146a80b16ec254c05 npm run test
If you're not sure how to query your database and you need to test out a few approaches, we recommend you use Mongo Playground.
- Use the left pane to create a mock-up of your collection
- Use the middle pane to try out a new query
- See the results in the right pane
Some people occasionally experience MongoDB connection errors when running the tests or trying to use the application. Here are some tips which might help resolve such issues.
- Check that MongoDB is installed using
mongo --version
- Check that it's running using
brew services list
If you have issues that are not resolved by these tips, please reach out to a coach and, once the issue is resolved, we can add a new tip!