Progressive Web App for the Berlin Skylarks Baseball & Softball Club https://app.berlinskylarks.de/
Find a file
2026-01-03 15:17:25 +01:00
.github/workflows ci: adjust pipeline for submodule 2025-12-29 19:30:52 +01:00
.run chore: add Intellij run config 2025-05-02 11:25:02 +02:00
.vscode style: format whole project with biome 2025-11-07 16:24:41 +01:00
backend chore: update DP to v0.7.3 2026-01-03 15:11:05 +01:00
craft feat: strip unwanted keys from BSM responses 2025-12-06 10:49:36 +01:00
diamond-planner@e194f3790d chore: update DP to v0.7.3 2026-01-03 15:11:05 +01:00
docs docs: update docs 2025-09-14 18:25:30 +02:00
e2e style: format whole project with biome 2025-11-07 16:24:41 +01:00
helpers fix: make mailpit script executable 2025-04-21 17:05:47 +02:00
src build: use hardlinks instead of symlinks 2026-01-03 14:48:20 +01:00
static refactor: refer to Skylarks logo as DP logo 2025-12-18 15:13:51 +01:00
.dockerignore ci: ignore standalone ui config files for Docker build 2025-12-30 00:00:40 +01:00
.editorconfig dev: add .editorconfig file 2025-11-21 12:54:20 +01:00
.env.dist build: set up environment according to new architecture 2025-11-23 11:01:45 +01:00
.gitignore chore: upgrade Wuchale 2025-12-07 13:24:10 +01:00
.gitmodules feat: add DP submodule 2025-12-18 14:44:51 +01:00
.npmrc initial commit 2024-03-13 22:44:53 +01:00
biome.json fix: biome bogus lintings 2025-11-14 15:56:18 +01:00
create_hardlinks.sh build: use hardlinks instead of symlinks 2026-01-03 14:48:20 +01:00
CREDIT.md feat: use Skeleton toasts for login notifications 2024-07-31 22:28:11 +02:00
de-tailwind.js style: format whole project with biome 2025-11-07 16:24:41 +01:00
docker-compose-common.yml ci: re-add TYPO3 URL 2025-11-23 12:06:21 +01:00
docker-compose-staging.yml ci: adjust labels 2025-11-23 12:09:24 +01:00
docker-compose.yml ci: adjust labels 2025-11-23 12:09:24 +01:00
Dockerfile ci: remove unnecessary sv-check step 2025-12-30 16:05:47 +01:00
find_missing_translations.py i18n: add new strings 2025-12-29 19:22:24 +01:00
LICENSE Create LICENSE 2024-03-13 22:48:32 +01:00
package.json chore: update wuchale 2026-01-03 12:00:55 +01:00
playwright.config.ts style: format whole project with biome 2025-11-07 16:24:41 +01:00
pnpm-lock.yaml chore: update wuchale 2026-01-03 12:00:55 +01:00
pnpm-workspace.yaml build: add pnpm workspace 2025-12-29 19:12:35 +01:00
README.md docs: update README 2025-12-30 16:47:18 +01:00
svelte.config.js build: set output to pb_public, remove static placeholders 2025-11-22 11:32:55 +01:00
tsconfig.json style: format whole project with biome 2025-11-07 16:24:41 +01:00
vite.config.ts refactor: load CSS from submodule 2025-12-18 14:59:42 +01:00
vitest.config.ts style: format whole project with biome 2025-11-07 16:24:41 +01:00
wuchale.config.js chore: update wuchale 2026-01-03 12:00:55 +01:00

Skylarks Diamond Planner

Progressive Web App for the Berlin Skylarks Baseball & Softball Club. Built with Pocketbase and SvelteKit with the static adapter.

Concept / Background

Main rationale to create this project: At project start, different types of data were being processed in different web services:

  • The main administrative platform Baseball & Softball Manager / BSM of the German Baseball & Softball Federation (DBV).
    • Everything related to organised play is processed there (clubs, games, leagues, teams, player, stats)
    • Accessed via REST API
    • External: no club access to any internal logic
  • The current Skylarks website, served as a TYPO3 CMS website ( PHP-based).
    • Processes mostly typical CMS content (articles, info pages), but also additional team data that is distinct from BSM data: club teams, player profiles (with more data than what is available in BSM), training times, game reports
    • Mainly displayed in the TYPO3 frontend (server-side templating) directly, but is also partly accessible via REST API
    • Internal: custom-built, full club access

See also: Project History

Project goal

  • collect data from all relevant sources and displays it in a user-friendly way
  • Progressive Web App with mobile-first design
  • provide logic to carry out team organisation tasks (practice and game attendance, teams and members, stats)
  • → replace existing external tools for those tasks
  • become THE central hub for team activities

Design decisions

  • This tool will process administrative data for club and team events (events, announcements, comments, attendance data and statistics)
  • this data will be distinct from both CMS and BSM data:
    • BSM data relates to the club's organised play ⇒ main use case is external
    • CMS data is strictly presentational, the CMS does not care about administrative logic ⇒ main use case is external
    • ⇒ here, the main use case is internal

Project requirements

  • basic familiarity with the concepts of SvelteKit and Svelte there is an excellent official tutorial available
  • Go v1.25 or higher
  • Node.js v24 or higher
  • access to Berlin Skylarks environment secrets and API keys

Local Development

  1. Clone the repository
git clone git@github.com:tib-baseball-softball/skylarks-next.git
git submodule update --init
cd skylarks-next
  1. Set up environment
cp backend/.env.dist backend/.env
cp .env.dist .env
  • BSM API key (from BSM user account with at the club admin scope for Berlin Skylarks)
  • PUBLIC_TYPO3_URL can either be set to a TYPO3 dev environment running locally or the production URL
  1. Get project dependencies

backend

cd backend
go mod download`
go run . serve

frontend

pnpm install`
# yarn/deno/bun could also work, untested
  1. Start the dev server (frontend watches for file changes automatically, backend needs to be restarted manually) backend
go run . serve

frontend

pnpm dev

URLs

Local/Development

Production

Deployment

  • Fully automated via GitHub Actions, deploys on every push to branch main or stage, excluding documentation files and folders.
  • app is deployed via Docker-Compose in a Portainer stack on the team VPS
  • Traefik router (not deployed via this repository) acts as a reverse proxy and forwards requests
  • ⇒ Traefik labels need to be set in Compose files

Server Setup / Manual Deployment

What the GitHub Action does:

  1. Build the app according to the Dockerfile
  2. Pushes docker images to Docker Hub
  3. Triggers Portainer deployment via Webhook

Bugs and Problems

  • Please open an issue in this repository.

Terms of use

Licensed under AGPL-3.


Explore other templates from The Good Docs Project. Use our feedback form to give feedback on this template.