Website for the UofT CloudClub.
- if at any point you run into an issue and cannot follow the steps, first look at the Troubleshooting section below. Then, attempt to search up the problem and/or ask the project admin (Qingyuan) for help :)
- estimated setup time for a total beginner (no experience with web dev, terminal commands, etc.) is 30-45 mins. If you've already spent this much time and are not close to finishing, don't be afraid to ask for help!
- git (Download) or GitHub Desktop (Download)
- we recommend using the first option
- you can leave all the default selections
- git allows you to clone (download) this repository, make changes, and submit these changes. Learn more here
- Node.JS + npm (Download)
- you can leave all the default selections
- Node allows you to run the website server locally and see the changes that you made
- Visual Studio Code (Download)
- you can leave all the default selections
- VS Code is a code editor that we recommend you use to make changes to the codebase. It is also the industry standard for professional software engineers.
- XAMPP (Download Here)
- you can leave all the default selections
- XAMPP is the database server that allows you to connect the website to a local database for testing
- Environment variables and MySQL configuration scripts.
- please ask the project admin for this script
Important: to follow this section first ensure you've installed all requirements in the previous section - git, Node, VS Code, and XAMPP
- Either clone this repository using GitHub Desktop (or related software), download as a ZIP and extract, or run
git clone https://github.com/CloudClub-uoft/cloud-club-website
using the terminal and enter your credentials.- we recommend using the command line argument
git clone https://github.com/CloudClub-uoft/cloud-club-website
- if you need further guidance for this, go to the Troubleshooting section below
- we recommend using the command line argument
- Go back to VS Code where you have this project opened. Open up a terminal by clicking on the
Terminal
tab at the top, thenNew Terminal
- Install Node.JS by typing
npm install
in the terminal, then hit enter. This will install all the necessary packages to make our website run - Launch MySQL instance using XAMPP. (Jump to the database setup section for help with this section. Come back here after you've launched XAMPP)
- Go back to VS Code
- Create an empty file called
.env
at the root of the cloned repository (the cloud-club-website folder). The file should be named exactly as .env (pronounced dotenv) and paste in it the environment variables shared by the project administrator (Qingyuan). To make a new file in VS Code, hover over the left panel displaying the open files and hit the new file button near the top right of the panel. Make sure the file is in the cloud-club-website folder, not another folder! - Start the server by executing
node .
in the terminal at the root of the repository. - View the webpage by navigating to
localhost:PORT
in your browser. HerePORT
is a placeholder for the port number specified by the "PORT" variable in the .env file. The default is 4000.- if you see the CloudClub website - same one as what you see when you navigate to
cloudclub.ca
, then congrats! Your setup is complete - Now you can make changes locally and see your changes at
localhost:PORT
- for example, in VS Code, go to the file
views/index.ejs
- change the line
What is CloudClub?
toHello World
, typeCtrl + S
(Windows) orCmd + S
(Mac) to save - go to the terminal (recall, it's at the bottom of VS Code) and type
Ctrl + C
(Windows and Mac) to exit - use the type
node .
again or use the up-arrow key to restart the server - again, navigate to localhost:PORT, but observe this time that the front page heading is changed to
Hello World
- follow these steps to undo the changes you made
- for example, in VS Code, go to the file
- However, can you spot some differences between your local site and the actual cloudclub.ca website?
- if you see the CloudClub website - same one as what you see when you navigate to
Note: The sections below will not be necessary for a first-time setup. They will come into play after you start making changes to the website
- first, make sure your local branch is up-to-date with the remote staging branch
- run
git branch
to verify you are currently on the staging branch - run
git pull
to update your local branch (this is like "refreshing" your Google Docs to get changes from your teammates) - run
git checkout -b <branch-name>
to create a new branch and move to that branch<branch-name>
should be your name, a verb describing the type of change, and what you're changing, something likewu_patch_edit_posts
- now run
git branch
again to verify you are at this new branch. Important: you must be at your own branch, not staging, before you make changes - make changes. Don't forget to save!
- when you are ready to "submit" these changes, do the following:
- run
git status
to check the files you've changed. The files you modified should all be in red - run
git add <file1> <file2> <file3> ...
to stage the files you've changed for commit. Tip: simply copy the files you see from the previous step - if you wish to stage all the files you've changed for commit, run
git add .
. Be sure you're not doing this blindly as you may include unintended files in the commit. - run
git status
again to make sure only the intended files have been staged for commit (turned green). - run
git commit -m "<your message>"
to commit these files. The message you write should be a one-sentence description of your change. - run
git push
to push the changes to the remote. If you get an error, simply follow the instructions and specify an upstream branch (git push --set-upstream origin ....
) - navigate to https://github.com/CloudClub-uoft/cloud-club-website and create a Pull Request
- run
git diff
to see how your local changes compare to the original version of the websitegit log
to get the list of previous commits (both by you and other developers) in reverse chronological ordergit rebase origin/staging
to fast-forward your local branch to stay up to date with the remote branch- analogy: you make a copy of a Word Doc to make changes locally, this is copied from a shared Google Drive with your team - this is analogous to you running
git checkout -b <branch-name>
to make changes locally in another branch. Before you submit these changes, perhaps your peers also made more changes and uploaded the more updated version to Google Drive. In this case you will wish to first incorporate their changes in your local Word Doc - this is analogous to runninggit rebase origin/staging
- tip: you can run
git log
after you rebase to see what new chnages you have pulled in from your teammates
- analogy: you make a copy of a Word Doc to make changes locally, this is copied from a shared Google Drive with your team - this is analogous to you running
The Selenium framework for Python is required for frontend testing. During tests a properly configured MySQL instance should be accessible by the website server.
python -m pip install selenium
NOTE: A Selenium webdriver must be accessible via the PATH variable. Documentation.
All frontend tests are stored under the test/frontend directory. A test can be invoked by executing the test script inside one of the test directories.
python test_forum.py
Review Code Formatting and Standards Document. Link
Setup VSCode workspace for linting and formatting. Link (Slide 12)
- API Name:
METHOD-name
, i.e.GET-post
- Parameters in API tag:
/name?param=:PLACEHOLDER
, i.e./post?id=:POSTID
- Status codes in parentheses, (Success code defaults to 200)
- Nested return data: organize via variable names on multiple lines, i.e. object
data
hasdata.field
- Pass DB and Redis connection objects to each routing file: module export arrow functions should have ALL parameters. I.e.
module.exports = (app, db, redis) => { ... }
even if the function doesn't use DB or Redis connections. Dorequire
inrouting.js
and pass to all imported route files.
- After running
node .
, I'm getting this redis error:
Redis connection failed: Error: Redis connection to redis-17266.c8.us-east-1-2.ec2.cloud.redislabs.com:17266 failed - getaddrinfo ENOTFOUND redis-17266.c8.us-east-1-2.ec2.cloud.redislabs.com
- this error exists when the Redis account is deactivated. Please contact the project admin for help.
- How do I open VS Code?
- click on the serach bar at the bottom of your computer (Windows) or type
command + space bar
(Mac), search forVisual Studio Code
- click on the two file button near the top-left of VS Code, then click Open Folder
- navigate to the cloud-club-website folder that you've cloned from GitHub and open
- Where do I run git clone command?
- For both windows and Mac, we run commands in the Terminal (for windows this is sometimes called the Command Prompt)
- For windows:
- navigate to the directory you wish to put this repository in
- right click a blank space in the directory and click
Open in Terminal
- run the git clone command
- if you have VS Code (you should), open it to the folder of the cloud-club-website project that you just cloned
- For Mac:
- open the terminal (type
command + space bar
and search for terminal, click enter) - navigate to the directory you wish to put this repository in by using
cd <directory>
. For example, if you wish to put it in the Documents directory you would typecd Documents
- run the git clone command
- if you have VS Code (you should), open it to the folder of the cloud-club-website project that you just cloned
- open the terminal (type
- This error:
C:\Users\qingy\OneDrive\Documents\webDev\cloud-club-website\config\sql-db.js:16
if (err) throw err
^
Error: connect ENOENT 3306
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1148:16) {
errno: -4058,
code: 'ENOENT',
syscall: 'connect',
address: '3306,
fatal: true
}
Make sure XAMPP is enabled!