Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
a10bd1b
Fully restructure project
IAmThe2ndHuman Oct 4, 2025
229d7c4
Remove all references to Flutter
IAmThe2ndHuman Oct 18, 2025
59e618a
Add react stub
IAmThe2ndHuman Oct 18, 2025
deb8b0d
Configure frameworks
IAmThe2ndHuman Oct 18, 2025
afae98e
Add sample UI
IAmThe2ndHuman Oct 18, 2025
e29aad3
Implement login UI
IAmThe2ndHuman Oct 19, 2025
cf2bfae
Add sidebar for main screen
IAmThe2ndHuman Oct 19, 2025
99e907c
Add mobile support for main screen sidebar
IAmThe2ndHuman Oct 20, 2025
b4e1e83
Add firebase support
IAmThe2ndHuman Oct 20, 2025
c5e69aa
Add rudimentary oauth reimplementation
IAmThe2ndHuman Oct 20, 2025
1545b85
Improve auth flow
IAmThe2ndHuman Oct 20, 2025
e637cee
Add redirect on login
IAmThe2ndHuman Oct 20, 2025
c3ef78a
Clean up code
IAmThe2ndHuman Oct 20, 2025
af058c3
Redesign callback code
IAmThe2ndHuman Nov 28, 2025
666bbb9
Add new syne mono font
IAmThe2ndHuman Nov 28, 2025
80d4a6d
Update firestore rules
IAmThe2ndHuman Nov 28, 2025
c68165b
Add atom for user management
IAmThe2ndHuman Nov 28, 2025
67bd86a
Add user data to homepage
IAmThe2ndHuman Nov 28, 2025
6e8e754
Update spreadsheet search to use header names
IAmThe2ndHuman Dec 20, 2025
1a31b4b
Add adaptive UI
IAmThe2ndHuman Dec 20, 2025
71a2e9e
Refactor and add schedule UI
IAmThe2ndHuman Dec 20, 2025
4fe2efc
Add comments and remove unused imports
IAmThe2ndHuman Dec 20, 2025
30319c8
Add stub organizer page and a way to switch in dbg mode
IAmThe2ndHuman Dec 21, 2025
f99a043
Add Event Config type declarations
IAmThe2ndHuman Dec 21, 2025
1ff7c90
Add rudimentary documentation
IAmThe2ndHuman Dec 21, 2025
384d49b
Add stub organizer view
IAmThe2ndHuman Dec 22, 2025
81cabef
Add announcement functionality
IAmThe2ndHuman Dec 22, 2025
77c5676
Add listening for event config
IAmThe2ndHuman Dec 23, 2025
0dc03eb
Add stub announcements page
IAmThe2ndHuman Dec 23, 2025
eec70d3
Add dynamic media query hook
IAmThe2ndHuman Dec 23, 2025
dc6cab5
Add announcements view
IAmThe2ndHuman Dec 23, 2025
e069513
Add new event atoms
IAmThe2ndHuman Dec 24, 2025
64617ce
Add announcement deletion
IAmThe2ndHuman Dec 24, 2025
76542cc
Rename media query file
IAmThe2ndHuman Dec 24, 2025
0a00c45
Set up resource atoms
IAmThe2ndHuman Dec 24, 2025
4db7b34
Add resource manager UI
IAmThe2ndHuman Dec 24, 2025
fc53f31
Add resource viewing
IAmThe2ndHuman Dec 24, 2025
9b45c80
Add MD to sidebar
IAmThe2ndHuman Dec 25, 2025
b4106da
Add countdown atom
IAmThe2ndHuman Dec 25, 2025
3996392
Refactor event atoms
IAmThe2ndHuman Dec 25, 2025
f8a4260
Add countdown UI
IAmThe2ndHuman Dec 25, 2025
5d80434
Add dynamic countdown messages
IAmThe2ndHuman Dec 25, 2025
e3f012e
Add items to feed
IAmThe2ndHuman Dec 25, 2025
4354406
Add team data structure to backend
IAmThe2ndHuman Dec 29, 2025
346490c
Add track editing to frontend and hardcode view into resources
IAmThe2ndHuman Dec 29, 2025
d845598
Add UI for team registration
IAmThe2ndHuman Jan 2, 2026
f397e19
Add team registration autocomplete
IAmThe2ndHuman Jan 2, 2026
4b4bc2e
Add (untested) backend team creation func
IAmThe2ndHuman Jan 3, 2026
288202a
Add dbg func to create users
IAmThe2ndHuman Jan 3, 2026
9684dd4
Add team registration func to frontend
IAmThe2ndHuman Jan 3, 2026
8c0d32b
Add frontend team data sync
IAmThe2ndHuman Jan 3, 2026
6d68a50
Add listening auth user data system
IAmThe2ndHuman Jan 4, 2026
ae120e7
add frontend team verification view for organizers
IAmThe2ndHuman Jan 4, 2026
268eed0
Add cool approved team view
IAmThe2ndHuman Jan 4, 2026
d00bba8
Add minor UI tweaks
IAmThe2ndHuman Jan 4, 2026
2c88cc0
Add REST endpoints for RFID
IAmThe2ndHuman Jan 15, 2026
9f52ef4
Add backend for resume uploading
IAmThe2ndHuman Jan 16, 2026
bd1f5ca
Add resume upload
IAmThe2ndHuman Jan 17, 2026
c50de47
UI cleanup
IAmThe2ndHuman Jan 17, 2026
636454c
Add UI touchups
IAmThe2ndHuman Jan 17, 2026
148f619
Add live notifications
IAmThe2ndHuman Jan 17, 2026
94e647f
Add syncing of schedule
IAmThe2ndHuman Jan 17, 2026
922920b
Add UI tweaks
IAmThe2ndHuman Jan 17, 2026
838d580
Add setup guide
IAmThe2ndHuman Jan 19, 2026
1d01c3b
Fix tsc linter errors
IAmThe2ndHuman Jan 19, 2026
531286b
Add dev preview workflow
IAmThe2ndHuman Jan 19, 2026
f70df84
Merge pull request #3 from HackNCState/react-rewrite
IAmThe2ndHuman Jan 19, 2026
f38a0d6
Add prod .env
IAmThe2ndHuman Jan 19, 2026
8364879
Update path for Python package installation
IAmThe2ndHuman Jan 20, 2026
af686e9
Add participant manager view
IAmThe2ndHuman Jan 21, 2026
99fdf69
Add challenge infrastructure
IAmThe2ndHuman Jan 21, 2026
0109a67
Add full team editing by organizers
IAmThe2ndHuman Jan 21, 2026
716cf57
Add local notification system
IAmThe2ndHuman Jan 22, 2026
dfb0a39
Minor UI label tweaks
IAmThe2ndHuman Jan 22, 2026
1d23dde
Add setup fields for checklist backend
IAmThe2ndHuman Jan 26, 2026
8c1d04e
Move event initialization to backend
IAmThe2ndHuman Jan 26, 2026
4757d96
Add frontend UI for checklist
IAmThe2ndHuman Jan 26, 2026
34c0af9
Add frontend checking off items
IAmThe2ndHuman Jan 26, 2026
f0f9b09
Add UI tweaks
IAmThe2ndHuman Jan 26, 2026
22b1aa3
Add auto checkoff for certain checkboxes
IAmThe2ndHuman Jan 26, 2026
4b58573
Add RFID reader view
IAmThe2ndHuman Jan 26, 2026
1a92028
Add attendance recording for RFID
IAmThe2ndHuman Jan 27, 2026
e979555
Add UI tweaks
IAmThe2ndHuman Jan 27, 2026
9410f2f
Add custom scrollbar
IAmThe2ndHuman Jan 27, 2026
a4dd55f
Additional UI tweaks
IAmThe2ndHuman Jan 27, 2026
c203ffa
Add activity editor UI
IAmThe2ndHuman Jan 27, 2026
ba5b7c4
Add raffle animation UI
IAmThe2ndHuman Jan 30, 2026
31d885b
Improve slot animation
IAmThe2ndHuman Jan 30, 2026
4b0b2fb
Add Additional animation polish
IAmThe2ndHuman Jan 31, 2026
5e5d9e3
Remove possibility of being made fun of
IAmThe2ndHuman Jan 31, 2026
7d14183
Add err auth clarification
IAmThe2ndHuman Jan 31, 2026
0a9f11c
Added discord webhook infrastructure to front end
Feb 1, 2026
6d8f907
Remove API
IAmThe2ndHuman Feb 1, 2026
31f5dab
Add raffle calculation
IAmThe2ndHuman Feb 1, 2026
ef58441
Update firebase cfg defaults
IAmThe2ndHuman Feb 1, 2026
2d95580
Implemented discord webhook integration w/ error handling
Feb 1, 2026
2cd70c4
Change useAtom to useAtomValue
IAmThe2ndHuman Feb 2, 2026
0f743ea
Merge pull request #19 from HackNCState/cooper/discord-webhook
IAmThe2ndHuman Feb 2, 2026
4bad967
Add special check for friday check in
IAmThe2ndHuman Feb 2, 2026
3d8f869
Merge pull request #20 from HackNCState/kkozturk/add-remaining-core
IAmThe2ndHuman Feb 2, 2026
b31178f
Fix tsc import errors
IAmThe2ndHuman Feb 2, 2026
4c40277
Add favicon
IAmThe2ndHuman Feb 2, 2026
e9e88c3
UX fixes
IAmThe2ndHuman Feb 2, 2026
cb60649
Fix firebase cfg defaults
IAmThe2ndHuman Feb 3, 2026
f1c9afe
Bump version
IAmThe2ndHuman Feb 3, 2026
8fac5c1
Fix organizer ID check
IAmThe2ndHuman Feb 3, 2026
3a42f1f
Fix organizer ID check
IAmThe2ndHuman Feb 3, 2026
ac81c69
Add network error UI
IAmThe2ndHuman Feb 4, 2026
07d9966
Add MLH-specific challenges
IAmThe2ndHuman Feb 7, 2026
e789014
Add CSV and resume export
IAmThe2ndHuman Feb 7, 2026
51c2f13
Update about
IAmThe2ndHuman Feb 7, 2026
d54c03e
Add way too much
IAmThe2ndHuman Feb 11, 2026
cb4ac87
Show Discord username in RFID scan result
IAmThe2ndHuman Feb 13, 2026
e517273
Change default workshop checkbox to non-auto
IAmThe2ndHuman Feb 13, 2026
5a2f32a
Remove clearing data if not dev mode
IAmThe2ndHuman Feb 13, 2026
993e6f8
Make participant search case insensitive
IAmThe2ndHuman Feb 13, 2026
bee98dd
Add additional configs for participant control
IAmThe2ndHuman Feb 13, 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
File renamed without changes.
25 changes: 25 additions & 0 deletions .github/workflows/firebase-hosting-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Deploy to Firebase Hosting on dev
on:
push:
branches:
- dev
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 'lts/*'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build with Vite
run: npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: ${{ secrets.GITHUB_TOKEN }}
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_HACKNCSU_TODAY }}
channelId: dev
projectId: hackncsu-today
28 changes: 28 additions & 0 deletions .github/workflows/firebase-hosting-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools

name: Deploy to Firebase Hosting on merge
on:
push:
branches:
- master
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 'lts/*'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build with Vite
run: npm run build
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: ${{ secrets.GITHUB_TOKEN }}
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_HACKNCSU_TODAY }}
channelId: live
projectId: hackncsu-today
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

.firebase/*
.venv
service-account.json
89 changes: 88 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,90 @@
# hackncsu-today

Comprehensive software suite to manage Hack_NCState. Currently under development.
## Setup guide

i hope this all works if not let me know

### Prerequisites

- `service-account.json` file with access to the Google Sheets API (let me know if you need access)
- `CLIENT_SECRET` value for Discord OAuth2 (let me know if you need this)
- Your Discord username in the Registration Google Sheet (so you can log in)

### 1. Tooling

1. Install [Firebase CLI](https://firebase.google.com/docs/cli#install_the_firebase_cli)
2. Install Python 3.11 or higher
3. Install Node.js
4. Clone this repository

### 2. Configuration

1. Create a Python virtual environment:

```bash
python -m venv functions/venv
```

2. Activate the virtual environment:
- On Windows:

```powershell
functions\venv\Scripts\activate
```

- On macOS/Linux:

```bash
source functions/venv/bin/activate
```

3. Install the required Python packages:

```bash
pip install -r functions/requirements.txt
```

4. Install the required Node.js packages:

```bash
npm install
```

5. This isn't best practice but we're using a service account file to allow you to access the spreadsheet data locally. Let me know and I'll share the file with you. Place it in the root of the project as `service-account.json`.

6. You'll also need a file `functions/.env.local` with the following content:

```env
CLIENT_SECRET=<???>
```

Let me know and I'll share the client secret with you.

### 3. Running Locally

1. Run the backend emulator suite:

- On Windows:

```powershell
$env:GOOGLE_APPLICATION_CREDENTIALS="$PWD\service-account.json"
firebase emulators:start --project=hackncsu-today
```

- On macOS/Linux:

```bash
export GOOGLE_APPLICATION_CREDENTIALS="$PWD/service-account.json"
firebase emulators:start --project=hackncsu-today
```

The emulator will ask you to configure some parameters. I set defaults for these
so you can just hit enter to accept them.

2. Run the frontend:

```bash
npm run dev
```

3. Open your browser and navigate to `http://localhost:8080` to see the application running locally.
34 changes: 34 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.6/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": true,
"indentStyle": "tab"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
22 changes: 22 additions & 0 deletions components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "",
"css": "src/index.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"registries": {}
}
25 changes: 24 additions & 1 deletion firebase/firebase.json → firebase.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,35 @@
"ui": {
"enabled": true
},
"singleProjectMode": true
"singleProjectMode": true,
"hosting": {
"port": 5000
},
"storage": {
"port": 9199
}
},
"firestore": {
"database": "(default)",
"location": "nam5",
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"storage": {
"rules": "storage.rules"
}
}
72 changes: 0 additions & 72 deletions firebase/.gitignore

This file was deleted.

27 changes: 0 additions & 27 deletions firebase/.vscode.example/tasks.json

This file was deleted.

Loading