Aggre-Gator is a cloud-based RSS & Atom feed reader. This is a project for Dr. Ngo's CSC 468 - Introduction to Cloud Computing at West Chester University of Pennsylvania.
You may want to look at:
- The report, an explanation of Aggre-gator's design and how we built it
- The slide for our midterm presentation
- Our CI on Garnix; Garnix runs slightly faster than GitHub actions, and is able to take advantage of Nix's ability to cache builds, which makes CI even faster.
- Our Garnix deployment; after Garnix finishes buidling and checking on
main
, it deploys here. - Our CloudLab experiment profile; currently just a machine with Docker, Docker-Compose, and Nix. Our plan is that deployment will be fully automated after the experiment is created.
To get a dev shell with Nix, run nix develop
. This should get you everything you need. It's like a Python virtualenv for your shell!
Some general tips:
- Commit messages should take the form
part: feature
, such asfrontend: make background neon yellow
- Format your code with
nix fmt
(whole project) ornpm run fmt
(frontend only). Your code needs to be formatted to be merged intomain
. If you use VSCode, you should make sure VSCode formats with Prettier, not the builtin HTML formatter. - If your commit fixes an issue, you can put
fixes #<issue number>
in the commit description. GitHub will close the issue when your commit is inmain
. A full list of verbs can be found here - If there's something you need to do later, adding
T
ODO
orF
IXME
(without the spaces!) will ensure it doesn't make it into production. - If possible, rebase your feature branches onto main often.
To get started:
cd frontend
npm i # This installs all required packages locally for development
npm run dev # This runs a development server with live reloading
Some other commands to be aware of:
npm run check # Run lints to check code for bad things
npm run fmt # Format code with consistent style
The backend API base URL is available in scripts as import.meta.env.VITE_API_BASE
. An example usage:
const API_BASE = import.meta.env.VITE_API_BASE;
// Do a GET request to `/debug`
const response = await fetch(`${API_BASE}/debug`);
const json = await reponse.json();
// For more info see:
// https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
- Put things in
src/
instead ofpublic/
whenever possible. This ensures Vite will optimize them. - If you
import ./style.css
in a JS/TS file, that CSS will be included on any page the script runs on.