Onboarding
Jargon / Terminology
Eetswa - Sweet
Project History
V1 (“CSElectives”): Minimum Viable Product (MVP), but database was specifically for CSE courses.
V2 (“Uni-lectives) (2023) - Expanded database to all courses + Revamped front-end
2024 - ????
Firstly… project context and goals for this year
In 2022 the goal was to (1) rewrite “CSElectives” completely to deprecate the dependency on Firebase, and instead use our own backend; and (2) completely rewrite the frontend (again).
In 2023, we successfully refactored our backend from Firebase to PostgreSQL, and completely revamped our frontend design to what you see today. Thus, …
In 2024, we have been given the liberty to focus (almost!) entirely on feature implementations! Some pivotal areas that need to be handled are:
Data collection: an app like Uni-lectives becomes obsolete without many reviews.
A Reddit-scraping initiative was launched at the end of the 2023, but this has yet to be completed…
Uni-lectives wrapped: a fun end-of-year feature that reviews interesting statistics like the most viewed course, etc.
Other ideas are completely open and welcome for discussion with the team!
With this context hopefully you are up to speed with where we are at starting this year.
Moving forward please clone the repo and take a look at the code. For this year, most if not all of our code will be done in the (new!) unilectives repository on Github:
(previously csesoc-unsw/cselectivesv2
).
Each component of our project has a README where it specifies how you can setup local development.At the time of writing this we are working on making this experience better so the setup is minimal as there are many separate parts. See the architecture section below.
Architecture; how do we develop and test?
I’m glad you asked ! We have three main components: frontend, backend and migration.
Frontend
You can get data for the frontend in 3 different ways (when we say get data we mean how to get the actual information served by the backend):
Mock server (API calls are stubbed with MirageJS)
Run backend locally (Setup the database, and backend API locally on your machine)
Staging server (point the frontend to staging)
Going about how to do these different ways can be discussed and documented by the directors if you are unsure. In terms of deciding which to go for, its personal preference and depends on your goals.
Backend
You can run the backend server simply without a database connection, you would just need to comment out the database class setup (we can probably do this better). For setting it up with the database which will probably be most of the time, the README in both the backend and database folders explain very clearly on how to do this (Docker will be needed).
If you are wanting to populate real data into your local database then you would need to run the migration server, the README in that project should be self explanatory.
The backend is more complicated to run and test locally, so please ask directors or other members for assistance with no hesitation.
Deploying to staging and production
Once you commit your code to your branch (see below branching strategy), you would want to raise a PR to develop branch. Once its reviewed by whoever and merged into develop, then a pipeline will run to deploy your code into the staging environment where you can test your changes.
Once it's all good you can then raise a PR to main (so that’s develop → main), and then a director will approve and merge these changes. This will trigger a deployment to production, woo hoo!
At the moment, we don’t have a live production environment for v2 since v1 is still in use, so the last step can be skipped till we release Uni-lectives.
Architecture
Most importantly….
Have fun! Enjoy yourself, don’t take life too seriously, chill and it’ll be eetswa .
We hope that you get a lot of good experience and learnings from working on the project, and please leverage the knowledge and experience of others (especially the directors) to learn as much as you can.
Anytime you ever feel stuck, bored or overwhelmed reach out to the directors and we will be more than happy to assist .