An interactive web application visualizing a 2012 sailing journey through the Baltic Sea. Built with SvelteKit and OpenLayers, the application combines an interactive map with a blog-style logbook to tell the story of a memorable sailing adventure.
🌐 Live Site: www.ein-tierischer-segelsommer.de
- 🗺️ Interactive Map - Navigate the complete sailing route with OpenLayers
- 📍 Clustered Markers - Logbook entries displayed as intelligent clusters
- 🧭 Nautical Charts - OpenSeaMap overlay for authentic maritime visualization
- 📖 Timeline View - Chronological journey through all entries
- 🖼️ Image Galleries - Swiper-powered photo slideshows
- 📱 Responsive Design - Optimized for desktop and mobile devices
- ⚡ Static Generation - Pre-rendered for optimal performance
- Framework: SvelteKit 2.x with Svelte 5 (runes API)
- Mapping: OpenLayers 10.x
- Language: TypeScript
- Styling: SCSS with modern CSS
- Testing: Vitest + Testing Library
- Deployment: Netlify (static site)
src/
├── lib/
│ ├── components/ # Svelte UI components
│ ├── ol/ # OpenLayers configuration (layers, overlays, map)
│ ├── utils/ # Utility functions
│ ├── types.ts # TypeScript definitions
│ └── stores.ts # State management
├── routes/ # SvelteKit file-based routing
│ ├── +page.svelte # Map view (home)
│ ├── log/[id]/+page.svelte # Individual logbook entry
│ └── timeline/+page.svelte # Timeline view
└── tools/ # Build scripts
- Node.js 18+
- npm, pnpm, or yarn
# Clone the repository
git clone https://github.com/jansinger/tss2012.git
cd tss2012
# Install dependencies
npm installStart the development server:
npm run dev
# Or open in browser automatically
npm run dev -- --openThe app will be available at http://localhost:5173
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run test # Run tests in watch mode
npm run check # TypeScript + Svelte validation
npm run lint # Run ESLint + Prettier checks
npm run format # Auto-format code with Prettier
npm run build-ci # Full CI build (build + test)npm run buildThe static site will be generated in the build/ directory, ready for deployment.
Note: The preview command (
npm run preview) is for local testing only and should not be used in production.
The project uses Vitest with Testing Library for component and unit testing:
# Run tests in watch mode
npm run test
# Run tests once (CI mode)
npm run build-ciThe application is automatically deployed to Netlify on every push to the main branch:
- Code pushed to GitHub
- Netlify runs
npm run build-ci(includes tests) - Static files from
build/are deployed - CSP headers configured in netlify.toml
For detailed technical documentation, architecture guidelines, and development patterns, see CLAUDE.md.
Topics covered:
- Architecture & design patterns (DRY, KISS, SOLID)
- OpenLayers integration guide
- State management (Svelte 5 runes + stores)
- Component structure and conventions
- Data flow diagrams
- Troubleshooting guide
- Logbook Entries: GeoJSON format in
/static/data/logbook_geo.json - Sailing Track: KML format in
/static/data/segelsommer2012.kml - Images: Static files in
/static/images/
- OpenStreetMap - Base map tiles
- OpenSeaMap - Nautical chart overlay
- Track Layer - Sailing route (red line)
- Logbook Layer - Clustered entry markers
Modern browsers with ES2021 support:
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure:
- Tests pass (
npm run test) - Code is formatted (
npm run format) - TypeScript validation passes (
npm run check)
This project is personal/private. Please contact the repository owner for licensing information.
- OpenLayers - Powerful mapping library
- SvelteKit - Amazing framework
- OpenSeaMap - Nautical charts
- OpenStreetMap - Map data
Built with ❤️ using SvelteKit and OpenLayers