Progressive Web App for the Berlin Skylarks Baseball & Softball Club
https://app.berlinskylarks.de/
|
|
||
|---|---|---|
| .github_bck/workflows | ||
| .run | ||
| bsm | ||
| craft | ||
| docs | ||
| dp | ||
| helpers | ||
| internal/tib | ||
| migrations | ||
| templates/email | ||
| test_pb_data | ||
| ui | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.dist | ||
| .gitignore | ||
| build_production.sh | ||
| build_staging.sh | ||
| community_service_rules_test.go | ||
| create_hardlinks.sh | ||
| CREDIT.md | ||
| docker-compose-common.yml | ||
| docker-compose-staging.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| favorite_team_test.go | ||
| games_count_test.go | ||
| go.mod | ||
| go.sum | ||
| join_team_test.go | ||
| league_leaders_test.go | ||
| LICENSE | ||
| main.go | ||
| main_test.go | ||
| pb_schema.json | ||
| player_webhook_test.go | ||
| README.md | ||
| run_with_test_data.sh | ||
| security_test.go | ||
| test_utils.go | ||
| user_stats_test.go | ||
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.25or higher - Node.js
v24or higher - access to Berlin Skylarks environment secrets and API keys
Local Development
- Clone the repository
git clone git@github.com:tib-baseball-softball/skylarks-next.git
git submodule update --init
cd skylarks-next
- 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_URLcan either be set to a TYPO3 dev environment running locally or the production URL
- Get project dependencies
backend
go mod download
go run . serve
frontend
cd ui
pnpm install
# yarn/deno/bun could also work, untested
- 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
- Go Backend: http://127.0.0.1:8090/
- Vite Frontend: http://localhost:5173/
Production
- unified URL: https://app.berlinskylarks.de/
Deployment
- changed
FIXME
Backend-specific documentation
Pocketbase Schema
- the file
pb_schema.jsonis 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.