Skip to content

Spoonbaker/csc468-project

Repository files navigation

Aggre-Gator

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.

Development

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 as frontend: make background neon yellow
  • Format your code with nix fmt (whole project) or npm run fmt (frontend only). Your code needs to be formatted to be merged into main. 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 in main. A full list of verbs can be found here
  • If there's something you need to do later, adding T ODO or F IXME (without the spaces!) will ensure it doesn't make it into production.
  • If possible, rebase your feature branches onto main often.

Frontend

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

Some frontend tips:

  • Put things in src/ instead of public/ 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.

About

Aggre-Gator, a cloud RSS & Atom feed reader

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •