Progressive Web App for the Berlin Skylarks Baseball & Softball Club https://app.berlinskylarks.de/
  • Svelte 41%
  • Go 30.6%
  • CSS 15.7%
  • TypeScript 11.5%
  • JavaScript 0.6%
  • Other 0.4%
Find a file
2026-05-24 11:09:30 +02:00
.github_bck/workflows ci: comment GitHub stuff 2026-01-18 13:09:31 +01:00
.run fix: perform RecordQuery with custom structs directly 2026-01-24 11:18:18 +01:00
craft refactor: improve subscription fetching for teams and clubs 2026-01-24 10:56:24 +01:00
docs docs: update docs 2025-09-14 18:25:30 +02:00
dp refactor: use osutils.IsProbablyGoRun for automigration check 2026-05-22 12:08:40 +02:00
helpers fix: make mailpit script executable 2025-04-21 17:05:47 +02:00
internal/tib chore: remove unused Go code 2026-05-08 15:38:47 +02:00
migrations feat: add DB migrations for markdown fields 2026-05-23 10:47:08 +02:00
templates/email feat: notify all superusers via email when new users are created 2026-02-06 18:24:14 +01:00
test_pb_data chore: migrate test DB 2026-05-22 10:20:27 +02:00
ui fix: sort announcements by created date on account page 2026-05-24 11:09:30 +02:00
.dockerignore build: copy .env during build 2026-03-27 13:00:24 +01:00
.editorconfig dev: add .editorconfig file 2025-11-21 12:54:20 +01:00
.env.dist chore: remove global BSM API key from env and update usage 2026-05-14 15:06:44 +02:00
.gitignore i18n: update translations 2026-05-10 09:21:44 +02:00
build_production.sh build: adjust Dockerfile for new paths 2026-01-25 17:23:00 +01:00
build_staging.sh build: adjust Dockerfile for new paths 2026-01-25 17:23:00 +01:00
community_service_rules_test.go chore: move DP back to this repo 2026-01-18 17:09:54 +01:00
CREDIT.md feat: use Skeleton toasts for login notifications 2024-07-31 22:28:11 +02:00
docker-compose-staging.yml ci: use env file for compose, build with explicit go patch version 2026-05-10 10:26:14 +02:00
docker-compose.yml ci: use env file for compose, build with explicit go patch version 2026-05-10 10:26:14 +02:00
Dockerfile ci: use env file for compose, build with explicit go patch version 2026-05-10 10:26:14 +02:00
games_count_test.go test: fix game count test with new path 2026-02-08 09:27:17 +01:00
go.mod chore: upgrade Go deps 2026-05-22 10:20:27 +02:00
go.sum chore: upgrade Go deps 2026-05-22 10:20:27 +02:00
join_team_test.go test: add integration tests for JoinTeam route 2026-02-07 18:17:43 +01:00
LICENSE Create LICENSE 2024-03-13 22:48:32 +01:00
main.go chore: remove global BSM API key from env and update usage 2026-05-14 15:06:44 +02:00
main_test.go chore: reshuffle project structure 2026-01-18 16:45:49 +01:00
mise.toml dev: provide mise config 2026-05-14 12:55:09 +02:00
pb_schema.json chore: export new schema 2026-05-08 16:32:42 +02:00
player_webhook_test.go test: fix webhook test cases for request method 2026-01-25 16:44:18 +01:00
README.md docs: update README and schema 2026-03-15 22:51:07 +01:00
run_with_test_data.sh chore: reshuffle project structure 2026-01-18 16:45:49 +01:00
security_test.go chore: move DP back to this repo 2026-01-18 17:09:54 +01:00
test_utils.go chore: remove unused Go code 2026-05-08 15:38:47 +02:00
user_stats_test.go chore: move DP back to this repo 2026-01-18 17:09:54 +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.26 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 .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

go mod download
go run . serve

frontend

cd ui
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

cd ui
pnpm dev

URLs

Local/Development

Production

Deployment

  • as this project is hosted on a self-hosted Forgejo instance, there is no automatic CI/CD workflow implemented at the moment.
  • images are built on the local development machine with the provided bash scripts in the project root
  • there are scripts for staging and production environment with slightly different build arguments
  • the images are pulled on the target server according to the specification that is connected to this git repository.
  • environment variables are supplied directly to the containers

Backend-specific documentation

Pocketbase Schema

  • the file pb_schema.json is an export of the currently configured collections access rules.
  • it acts as a source of truth for the backend schema
  • in addition, pocketbase migrations are saved in the corresponding folder
  • for type-safe access to custom models, RecordProxy structs are used
  • TS types are generated on the frontend side

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.