This is the repository for the website of Women in Computer Science (WICS) at the University of Manitoba. WICS is a student group supporting women and gender minorities in Computer Science. Our aim is to make computer science less intimidating and create a safe space for women and gender minorities to connect. This website is being built using Vue 3 Composition API and tested using Vitest.
IDE:
- VSCode
- Vue - Official (and disable Vetur).
- GitLens
- Path Intellisense
Browser:
Download Node.js, then do the following command. This will install all dependencies needed to develop and run the website.
npm installnpm run devnpm run buildRun Unit Tests with Vitest
npm run test:unitLint with ESLint
npm run lint- Verify that you're in the main branch.
git branch
- Make sure your main branch is up to date by doing the following command.
git pull
- Create a branch off of the main branch with the issue number as the prefix, followed by the title or summary of the issue. Then checkout that branch.
git checkout -b 2-create-navbar
- If you created new files, add them through the following command.
git add --all
- Save your changes. Inside the quotation marks, put the commit message which describes the changes you made.
git commit -m "Create navigation bar." - Once the issue is done and you're ready to have your code reviewed, do the following commands so other people can see your code.
# if pushing for the first time: git push --set-upstream origin <branch-name> # otherwise do: git push
- Create a pull request on GitHub.
- Go to Pull Requests tab, New Pull Request.
- Keep the
base:main, change thecompare:<branchName>to your branch. - Review your changes and create the pull request.
- Add "closes #2" (#2 being the issue number) in the description so it automatically closes the issue once the pull request has been merged.
- Wait for approval, fix merge conflicts if necessary, then merge.
public: for static assets that don't need to be optimized or importedsrcassets: contains files with css variables, .js arrays of objects for data, and imagesdata: contains files that have texts about the website and imagesevents: contains texts for the events pageimages: contains images shown in events page
base.css: contains font, brand colors, css property colors, and their naming convention
components: contains reusable componentscomposables: contains reusable functions or datarouter: contains the routes to the pages of the websiteviews: contains the pages of the websiteApp.vue: contains the layout and global styles of the website
The data that will be used in reusable components, such as cards, will be in src/assets/data/ so it's easier to import them to the src/views files as one or few imports. Also, these are the information that will most likely be updated every year, so only having to go to src/assets/data/ to update information allows this website to be easier to maintain. Some texts that aren't in src/assets/data will be on their own src/views files, and this will be the case if the information is only a few lines, can't be grouped meaningfully, won't be updated yearly, or aren't used in reusable components.
- CSS variables in
base.css:[color/font]-[css property]-[color/shade]-[state] - Modifier classes:
prop-name--prop-value(BEM)
Most of the texts on the website are stored in src/assets/data/ as arrays of objects in a .js file. If the texts need to be shown with images, the images would be imported in that same .js file, and would then be exported to be used by the pages that need them.
When you want to modify team members (e.g. executives, appointed positions, and website committee), go to src/assets/data/team and modify the objects in the array as needed.
There are 5 different files:
admin: President, Vice President, Secretary, Treasurerevents: Events Coordinator, Assistant Events Coordinatoroutreach: Outreach Coordinator, Assistant Outreach CoordinatorsocialMedia: Social Media Coordinator, Assistant Social Media CoordinatorwebsiteCommittee: Website Committee Coordinator, everyone in the Website Team
There are 3 member types:
Executive: for everyone in admin and all coordinators except Assistant positions and the Website Committee CoordinatorAppointed: for everyone that has Assistant positions and the Website Committee CoordinatorContributor: for everyone else in the website team
When you want to modify or add new information on home, events, outreach, lounge, and/or contact us, go to their corresponding folder in src/assets/data/.
The site is automatically built and deployed using GitHub Actions.
Whenever a Pull Request is merged into the main branch:
- A GitHub Action runner triggers
npm run build. - Instead of using a
gh-pagesbranch, the compiled/distfolder is uploaded as a GitHub Pages artifact and deployed directly to production. - A status update (Success/Failure) is sent to the
#deployment-statuschannel on our team Discord, including the commit message and the author.
If you need to force a redeploy without pushing new code:
- Navigate to the Actions tab in this repository.
- Select the Deploy to GitHub Pages workflow from the left sidebar.
- Click the Run workflow dropdown and select the
mainbranch.ions.