Initial commit: Ham Radio Award Portal

Features implemented:
- User authentication (register/login) with JWT
- SQLite database with Drizzle ORM
- SvelteKit frontend with authentication flow
- ElysiaJS backend with CORS enabled
- Award definition JSON schemas (DXCC, WAS, VUCC, SAT)
- Responsive dashboard with user profile

Tech stack:
- Backend: ElysiaJS, Drizzle ORM, SQLite, JWT
- Frontend: SvelteKit, Svelte stores
- Runtime: Bun
- Language: JavaScript

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-15 11:01:10 +01:00
commit 8c26fc93e3
41 changed files with 3424 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
{
"id": "dxcc-cw",
"name": "DXCC CW",
"description": "Confirm 100 DXCC entities using CW mode",
"category": "dxcc",
"rules": {
"type": "filtered",
"baseRule": {
"type": "entity",
"entityType": "dxcc",
"target": 100
},
"filters": {
"operator": "AND",
"filters": [
{
"field": "mode",
"operator": "eq",
"value": "CW"
}
]
}
}
}

View File

@@ -0,0 +1,11 @@
{
"id": "dxcc-mixed",
"name": "DXCC Mixed Mode",
"description": "Confirm 100 DXCC entities on any band/mode",
"category": "dxcc",
"rules": {
"type": "entity",
"entityType": "dxcc",
"target": 100
}
}

View File

@@ -0,0 +1,21 @@
{
"id": "sat-rs44",
"name": "RS-44 Satellite",
"description": "Work 44 QSOs on satellite RS-44",
"category": "custom",
"rules": {
"type": "counter",
"target": 44,
"countBy": "qso",
"filters": {
"operator": "AND",
"filters": [
{
"field": "satName",
"operator": "eq",
"value": "RS-44"
}
]
}
}
}

View File

@@ -0,0 +1,21 @@
{
"id": "vucc-satellite",
"name": "VUCC Satellite",
"description": "Confirm 100 unique grid squares via satellite",
"category": "vucc",
"rules": {
"type": "entity",
"entityType": "grid",
"target": 100,
"filters": {
"operator": "AND",
"filters": [
{
"field": "satellite",
"operator": "eq",
"value": true
}
]
}
}
}

View File

@@ -0,0 +1,21 @@
{
"id": "was-mixed",
"name": "WAS Mixed Mode",
"description": "Confirm all 50 US states",
"category": "was",
"rules": {
"type": "entity",
"entityType": "state",
"target": 50,
"filters": {
"operator": "AND",
"filters": [
{
"field": "entity",
"operator": "eq",
"value": "United States"
}
]
}
}
}