Introduction¶
This the onboarding introduction for the UCMACM Website. The website serves as the main online hub for the ACM chapter at UC Merced.
Prerequisites¶
Before getting started, there are several tools that you need to be familiar with and have installed. These are noted below.
Note
If you are unfamiliar with any of these tools, please take the time to read, and learn them. There is simply not enough time in order to cover them in the project. You’ll also need to understand basic terminology such as forking, cloning, etc.
npm comes bundled with Node.js. If you want to use yarn
(cannot use both; must be one or the other), you can install it
here
Setup¶
The UCMACM Website requires Node.js v20 or higher.
Important
There are some important notes that you must account for before reading the steps:
The project is located under
react/ucmacm-website.This is the directory that you will be working in during this processThe base repo is
UCMercedACM/Chapter-WebsiteAll code blocks use Bash. If you use a different shell (e.g Powershell), you may or may not need to adjust the commands accordingly
In this example,
npmis used as the package manager. If you would prefer to useyarn, replace thenpmcommands with those foryarn
1. Fork the repository on GitHub. An example command is provided below
(replace <username> with your GitHub account username
that forked the base repo)
git clone https://github.com/<username>/Chapter-Website \
&& cd Chapter-Website/react/ucmacm-website
Install all dependencies and set up pre-commit hooks
npm install \
&& lefthook install
Copy the
.env.examplefile to.envand modify in the appropriate values
cp .env.example .env
In order to demonstrate, you can run the development server to test everything out
npm run dev
Database¶
Primer¶
The database used for the website is Firebase (may change later). Firebase works as a NoSQL database, storing data in JSON format. Just like most NoSQL databases (such as MongoDB), each entry is stored as a document, and those are grouped in collections. Most importantly, NoSQL databases are schema-less, meaning that the data is not bound to a strict schema (e.g the columns on a Excel spreadsheet or a table of a SQL database).
Important
The previous database used on the old website is Firebase. Chances are, the database used will more than likely change for the rewrite.
Obtaining the Firebase key¶
1. Ask Noelle for the Firebase key. This will be securely sent to you through DMs. DO NOT share this key with anyone else!
Add the key to your
.envfile. The key-value pair should look like this:
FIREBASE_KEY=<your key>
Basic Concepts¶
This website is split into two components: the frontend and backend. The frontend is the “face” of the website; it’s primary role is to serve as the user interface for parts such as the landing page, events, etc. The backend is handled by Firebase, and is the main storage of processing and storing data.
In this project, we will mostly focus on the frontend and parts of the backend that are relevant to the frontend (e.g such as the dashboard, etc). It’s up to you to pick on which one you wish to contribute to. If you wish to delve deeper into them, the relevant guides are listed below:
It is also important to read the Contributing guidelines, as they are recommendations on how you should contribute.