Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
4a70789
Merge pull request #60 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
c3d99cf
Merge pull request #61 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
3cb6c2e
Merge pull request #62 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
71c29ce
Merge pull request #63 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
b510fc7
Merge pull request #64 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
89acbe6
Merge pull request #65 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
a9a3a54
Merge pull request #66 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
e63b1c0
Merge pull request #67 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 27, 2026
0ec65f2
feat: implements css themes and 50th start
WeatherGod3218 Mar 28, 2026
3457164
feat: First 50th Design
WeatherGod3218 Mar 29, 2026
c83366b
fix: 50th logo scales correctly
WeatherGod3218 Mar 29, 2026
7d91854
feat: Themes for jumpstart
WeatherGod3218 Mar 30, 2026
6f8f8bc
fix: 50th only being set for 50th
WeatherGod3218 Mar 30, 2026
dd5ea6b
Merge pull request #68 from WeatherGod3218/weather-dev
WeatherGod3218 Mar 30, 2026
7e97283
fix: Weather widget not updating properly
WeatherGod3218 Apr 2, 2026
d05df1e
fix: formatted
WeatherGod3218 Apr 2, 2026
db03051
Update keylime-dev and apply stash
Will-Hellinger Apr 2, 2026
0ac617f
Add checking before assuming creds are present and crashing
Will-Hellinger Apr 2, 2026
dedbaea
fix: Oops, It isin't 50th yet
WeatherGod3218 Apr 2, 2026
416ce34
Merge pull request #70 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 2, 2026
2aa2d5c
feat: implements css themes and 50th start
WeatherGod3218 Mar 28, 2026
31e8d75
feat: First 50th Design
WeatherGod3218 Mar 29, 2026
3c3849c
fix: 50th logo scales correctly
WeatherGod3218 Mar 29, 2026
a97da63
feat: Themes for jumpstart
WeatherGod3218 Mar 30, 2026
dae2e13
fix: 50th only being set for 50th
WeatherGod3218 Mar 30, 2026
f7e04b0
fix: Weather widget not updating properly
WeatherGod3218 Apr 2, 2026
a7f3ecb
fix: formatted
WeatherGod3218 Apr 2, 2026
4c8e037
fix: Oops, It isin't 50th yet
WeatherGod3218 Apr 2, 2026
14b403e
fix: Javascript moment
WeatherGod3218 Apr 2, 2026
32351c6
fix: Fixes something?
WeatherGod3218 Apr 2, 2026
bc67036
fix: no
WeatherGod3218 Apr 2, 2026
7e998a6
Merge pull request #71 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 2, 2026
60e0dde
docs: Themes in /docs
WeatherGod3218 Apr 3, 2026
107f1e7
Add tests to sonarqube workflow, add documentation to readme, add gua…
Will-Hellinger Apr 3, 2026
85f0ac7
Merge branch 'main-dev' into keylime-dev
Will-Hellinger Apr 3, 2026
f5e565c
Migrate if elif to match in wikithoughts and actually declare failed_…
Will-Hellinger Apr 3, 2026
963263b
Merge pull request #72 from WeatherGod3218/keylime-dev
WeatherGod3218 Apr 3, 2026
70d3e37
Updated
WeatherGod3218 Apr 3, 2026
ac22e31
Merge pull request #73 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 4, 2026
dc9cd4c
fix: Endpoints and Slackbot
WeatherGod3218 Apr 6, 2026
001182f
fix: Slackbot not registering
WeatherGod3218 Apr 6, 2026
e807d53
Merge pull request #74 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
83255d2
fix: Slack attempts to open a dm channel
WeatherGod3218 Apr 6, 2026
06c6762
Merge pull request #75 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
e7577bd
fix: adds pytest channel
WeatherGod3218 Apr 6, 2026
b46701c
Merge pull request #76 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
eb7dd5f
fix:Adds SlackAPIError
WeatherGod3218 Apr 6, 2026
72245f2
Merge pull request #77 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
90a9f00
docs: Error traces
WeatherGod3218 Apr 6, 2026
bd77514
Merge pull request #78 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
23619d3
Message
WeatherGod3218 Apr 6, 2026
4c3ea5d
Merge pull request #79 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
6bbcd6c
fix: removes dict conversion from slack DM template
WeatherGod3218 Apr 6, 2026
2c61edd
fix: pytest slack dm template is list
WeatherGod3218 Apr 6, 2026
d3caeab
Merge pull request #80 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
5bbbb7b
fix: reverts opening dm channel
WeatherGod3218 Apr 6, 2026
11b17d7
Merge pull request #81 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
020e01f
fix: styling for wikithoughts
WeatherGod3218 Apr 6, 2026
8adcee8
Merge pull request #82 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 6, 2026
5ecf972
fix: Logs error
WeatherGod3218 Apr 6, 2026
a24ee0c
feat: Slack announcments displays username
WeatherGod3218 Apr 7, 2026
1670a9e
Merge pull request #83 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 7, 2026
156b393
fix: await
WeatherGod3218 Apr 7, 2026
16651b4
Merge pull request #84 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 7, 2026
1d0613d
fix: Correct Javascript ID
WeatherGod3218 Apr 7, 2026
51c55b6
oops
WeatherGod3218 Apr 7, 2026
cdd7a6c
Merge pull request #85 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 7, 2026
5e90e67
fix: Bot properly re-auths during runtime
WeatherGod3218 Apr 7, 2026
95bdb1a
Merge pull request #86 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 7, 2026
362860f
feat: Character limits usernames
WeatherGod3218 Apr 7, 2026
8384859
tests: Updated tests for new slack
WeatherGod3218 Apr 7, 2026
5be9d2b
Merge pull request #87 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 7, 2026
e5df8e4
feat: timestamps
WeatherGod3218 Apr 8, 2026
1518cc9
Merge pull request #89 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 8, 2026
22308e7
feat: timestamps
WeatherGod3218 Apr 8, 2026
d23ed53
feat: Calendar backend now sends a JSON
WeatherGod3218 Apr 8, 2026
83df2a9
docs: Updated docstrings
WeatherGod3218 Apr 8, 2026
0d23d37
Merge pull request #90 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 8, 2026
1fa475d
fix: Removed list of announcments
WeatherGod3218 Apr 8, 2026
d192f6a
tests: fixed pytest
WeatherGod3218 Apr 8, 2026
fcf1030
Merge pull request #91 from WeatherGod3218/weather-dev
WeatherGod3218 Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions .github/workflows/sonarqube.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,19 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.13'
python-version: '3.14'

- name: Install dependencies
run: |
pip install uv
uv pip install -r src/requirements.txt --system
uv pip install -r tests/requirements.txt --system

- name: Run tests with coverage
run: |
pytest -v

- uses: SonarSource/sonarqube-scan-action@v6
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -185,9 +185,9 @@ cython_debug/
.abstra/

# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/

Expand Down
15 changes: 15 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.6
hooks:
- id: ruff
args: [--fix]
- id: ruff-format

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-json
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.14
3.14
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ RUN addgroup -g 2000 jumpgroup && adduser -S -u 1001 -G jumpgroup jumpstart && \

USER jumpstart

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--log-config", "/jumpstart/logging_config.yaml", "--proxy-headers","--forwarded-allow-ips","*"]
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--log-config", "/jumpstart/logging_config.yaml", "--proxy-headers", "--forwarded-allow-ips", "*"]
27 changes: 26 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ All information displayed has been authorized to been shown.
Documentation for the project can be found be appended /docs to the url
All HTML requests that are sent in the project can be seen by appending /swag

This project uses Python, [FastAPI](https://fastapi.tiangolo.com/), HTML/CSS, and Javascript.
This project uses Python, [FastAPI](https://fastapi.tiangolo.com/), HTML/CSS, and Javascript.
See it live [here](http://jumpstart-cubed.cs.house/)!

## Installing
Expand Down Expand Up @@ -46,3 +46,28 @@ Jumpstart also has support for Docker Compose, a extended version of docker that
docker compose up
```

## Development

### Setup
1. Install uv on your system if not already on it (this just makes it easy)
2. Run: `uv venv .venv`
3. Activate the virtual environment
* Bash: `source .venv/bin/activate`
* Fish: `source .venv/bin/activate.fish`
* Windows: `.venv\Scripts\activate`
* Other: Good luck!
4. Run:
* `uv pip install -r dev-requirements.txt`
* `uv pip install -r src/requirements.txt`
* `uv pip install -r tests/requirements,txt`
* `uv pip install -r docs/requirements.txt`
5. Run: `pre-commit install`
6. You're all set!

### Testing

We're using the pytest framework to create tests. A good minimum coverage requirement is about <=90%.

To run the tests just run: `pytest`

`coverage.xml` and `htmlcov` should be generated. `coverage.xml` is used for Sonarqube, while `htmlcov` is a local html view into code coverage. The easiest way to view the coverage site is to enter the directory and run: `python -m http.server` and visit the site!
2 changes: 2 additions & 0 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pre-commit==4.5.1
ruff==0.15.6
4 changes: 1 addition & 3 deletions docs/core/CSH Calendar.md → docs/core/csh_calendar.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
## Overview

This core component is used for all the fetching, formatting and structuring for the CSH calendar portion of Jumpstart.

---
Expand All @@ -11,4 +9,4 @@ During a fetch of the calendar, if any other clients attempt to connect, they wi
---

### Documentation Overview
::: core.cshcalendar
::: core.cshcalendar
4 changes: 1 addition & 3 deletions docs/core/Slack.md → docs/core/slack.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
## Overview

This component handles the Slack Bot and it's related functions. Such as responding to announcments, requesting to upload to Jumpstart, and the other handles with Slack.

---

### Documentation Overview
::: core.slack
::: core.slack
2 changes: 1 addition & 1 deletion docs/core/Wiki-thoughts.md → docs/core/wikithoughts.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ This component handles the fetching, caching and cycling of the CSH Wikithoughts
---

### Documentation Overview
::: core.wikithoughts
::: core.wikithoughts
2 changes: 1 addition & 1 deletion docs/endpoints/announcements.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@


::: api.endpoints.get_announcement
::: api.endpoints.get_announcement
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ Example error response:
```

### Endpoint Overview
::: api.endpoints.get_calendar
::: api.endpoints.get_calendar
4 changes: 4 additions & 0 deletions docs/endpoints/slack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

::: api.endpoints.get_announcement
::: api.endpoints.slack_events
::: api.endpoints.message_actions
2 changes: 1 addition & 1 deletion docs/endpoints/slack_bot.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


::: api.endpoints.slack_events
::: api.endpoints.message_actions
::: api.endpoints.message_actions
2 changes: 1 addition & 1 deletion docs/endpoints/wikithoughts.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ In the event of an Error, the API will log an error and display default text
}
```

::: api.endpoints.wikithought
::: api.endpoints.wikithought
6 changes: 3 additions & 3 deletions docs/getting-started/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
## Installing
1. Clone and cd into the repo: git clone https://github.com/WeatherGod3218/jumpstartV2
>> Make another branch if you are working on a large PR
2.
2.

## Setup
1. Make sure you have docker installed
>> (OPTIONAL): You can use docker compose as well!!
2. Copy the .env.template file, rename it to .env and place it in the root folder
3. Ask an RTP for jumpstart secrets, add them to the .env accordingly

## Run
## Run
1. Build the docker file
```
docker build -t Jumpstart .
Expand All @@ -23,4 +23,4 @@
### Alternatively, you can run the docker compose file as well
```
docker compose up
```
```
Empty file removed docs/getting-started/setup.md
Empty file.
6 changes: 3 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
![Static Badge](https://img.shields.io/badge/%40gravy-made_by?style=flat-square&logo=github&labelColor=%230d1117&color=%23E11C52&link=https%3A%2F%2Fgithub.com%2FNikolaiStrong)


A graphical interface that displays information in the elevator lobby of Computer Science House.
A graphical interface that displays information in the elevator lobby of Computer Science House.
All information displayed has been authorized to been shown.

This project uses Python, [FastAPI](https://fastapi.tiangolo.com/), HTML/CSS, and Javascript.
This project uses Python, [FastAPI](https://fastapi.tiangolo.com/), HTML/CSS, and Javascript.
See it live [here](http://jumpstart-squared.cs.house/)!

The application has multiple features:
Expand All @@ -23,7 +23,7 @@ The application has multiple features:
5. An informational that displays real-time status information from CSH’s server room.

6. Calendar module that uses the Python ICalendar to display a countdown to the next 10 events from the CSH calendar.

7. Displays a daily forecast.

### AUTHORS:
Expand Down
2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ mkdocstrings
mkdocstrings-python
mkdocs-minify-plugin
mkdocs-git-revision-date-localized-plugin
pymdown-extensions
pymdown-extensions
22 changes: 22 additions & 0 deletions docs/themes/how_to.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Jumpstart has many different themes displayed on the website, this is a step by step process on how to implement your own!

**Any images that need to be added should be put in src/static/img**

### Adding Background

1. Go to the file: **src/static/js/main.js**
2. In the function long update, figure out the day, month, and hour of your theme.
- hour is in 24H format
3. Add it into the if statement (please change this in the future)
- Make sure it follows the bgImage = "url(../static/img/{**YOUR FILE HERE**})"

### Adding CSS Theme
1. Go to the file **src/static/css/style.css**
2. Add a new class for the colors **MAKE SURE IT STARTS WITH {theme-}!!!**
3. Change the colors in this new class
4. Repeat the steps in the "Adding Background"
5. Add a new index into "allThemes" with your css theme, along with any changes to weatherwidget or datadog
6. change the themeToLoad in the if statement to load your new index



30 changes: 30 additions & 0 deletions docs/themes/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Jumpstart has many different themes displayed on the website. Ranging from the light - dark mode, to full background and color shifts fo events.

### All Themes
- Light Mode
- Default theme between 9 AM and 6 PM
- Dark Mode
- Default theme between 6 PM and 9 AM
- Valentine's Day
- Feburary 12th, 13th and 14th
- Changes title to "Constantly Smooching House"
- Adds decorative hearts around the logo
- BANG!
- March 13th
- Changes title to "BANG! Science"
- Gives an orange gradient to the background
- CSH 50th Anniversary
- April 9th, 10th, 11th, and 12
- Replaces title with the CSH 50th Anniversary logo
- Replaces color scheme with a Golden / Black theme
- Halloween
- October 29th, 30th, and 31st
- Changes title to "Computer Spooky House"
- Logo is given orange and purple colors
- Duck!
- November 2nd
- Duck
- Winter
- November and December
- Changes title to "Christmas Season"
- Gives a red and green logo with a bright blue background
18 changes: 10 additions & 8 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,17 @@ use_directory_urls: false
nav:
- Home: index.md
- Getting Started: getting-started/getting-started.md
- Backend:
- Wikithoughts: core/Wiki-thoughts.md
- Calendar: core/CSH Calendar.md
- Slack: core/Slack.md
- Backend:
- Calendar: core/csh_calendar.md
- Slack: core/slack.md
- Wikithoughts: core/wikithoughts.md
- Endpoints:
- Calendar: endpoints/calendar_endpoint.md
- Announcements: endpoints/announcements.md
- Slack Bot: endpoints/slack_bot.md
- Wiki Thoughts: endpoints/wikithoughts.md
- Calendar: endpoints/csh_calendar.md
- Slack: endpoints/slack.md
- Wikithoughts: endpoints/wikithoughts.md
- Themes:
- Themes: themes/overview.md
- Adding Your Own: themes/how_to.md

plugins:
- search
Expand Down
4 changes: 4 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[pytest]
addopts = -ra
python_files = test_*.py
pythonpath = src
2 changes: 1 addition & 1 deletion ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ line-length = 88
[format]
quote-style = "double"
indent-style = "tab"
skip-magic-trailing-comma = false
skip-magic-trailing-comma = false
4 changes: 3 additions & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
sonar.projectKey=jumpstart-v2
sonar.projectKey=jumpstart-v2
sonar.python.coverage.reportPaths=coverage.xml
sonar.coverage.exclusions=**/tests/**,**/*test*.py,**/test_*.py
1 change: 0 additions & 1 deletion src/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@

Loading
Loading