2024-07-13 15:18:04 +02:00
< picture >
< source media = "(prefers-color-scheme: dark)" srcset = "website/static/logo-dark.svg" >
2024-07-16 14:16:05 +02:00
< img alt = "Logo of gpx.studio." src = "website/static/logo.svg" >
2024-07-13 15:18:04 +02:00
< / picture >
2024-09-02 13:50:27 +02:00
[**gpx.studio** ](https://gpx.studio ) is an online tool for creating and editing GPX files.
2024-07-13 15:18:04 +02:00

2024-09-02 13:50:27 +02:00
This repository contains the source code of the website.
2024-07-13 15:18:04 +02:00
## Contributing
Please create an issue if you find a bug or have a feature request.
Code contributions are also welcome, but except for obvious bug fixes, please open an issue first to discuss the changes you would like to make.
## Translation
The website is translated by volunteers on a collaborative translation platform.
You can help complete and improve the translations by joining the [Crowdin project ](https://crowdin.com/project/gpxstudio ).
If you would like to start the translation in a new language, please contact me or create an issue.
Any help is greatly appreciated!
## Development
The code is split into two parts:
- `gpx` : a Typescript library for parsing and manipulating GPX files,
- `website` : the website itself, which is a [SvelteKit ](https://kit.svelte.dev/ ) application.
2024-09-24 14:50:44 +02:00
You will need [Node.js ](https://nodejs.org/ ) to build and run these two parts.
2024-07-13 15:18:04 +02:00
2024-09-24 14:50:44 +02:00
### Building the `gpx` library
```bash
cd gpx
npm install
npm run build
```
### Running the website
2024-07-13 15:18:04 +02:00
To be able to load the map, you will need to create your own < a href = "https://account.mapbox.com/auth/signup" target = "_blank" > Mapbox access token</ a > and store it in a `.env` file in the `website` directory.
```bash
cd website
echo PUBLIC_MAPBOX_TOKEN={YOUR_MAPBOX_TOKEN} >> .env
npm install
npm run dev
```
## Credits
2024-07-19 23:22:29 +02:00
This project has been made possible thanks to the following open source projects:
2024-07-13 15:18:04 +02:00
- Development:
- [Svelte ](https://github.com/sveltejs/svelte ) and [SvelteKit ](https://github.com/sveltejs/kit ) — seamless development experience
- [MDsveX ](https://github.com/pngwn/MDsveX ) — allowing a Markdown-based documentation
- [svelte-i18n ](https://github.com/kaisermann/svelte-i18n ) — easy localization
- Design:
- [shadcn-svelte ](https://github.com/huntabyte/shadcn-svelte ) — beautiful components
- [lucide-svelte ](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-svelte ) — beautiful icons
- [tailwindcss ](https://github.com/tailwindlabs/tailwindcss ) — easy styling
2024-07-16 14:16:05 +02:00
- [Chart.js ](https://github.com/chartjs/Chart.js ) — beautiful and fast charts
2024-07-13 15:18:04 +02:00
- Logic:
- [immer ](https://github.com/immerjs/immer ) — complex state management
- [Dexie.js ](https://github.com/dexie/Dexie.js ) — IndexedDB wrapper
- [fast-xml-parser ](https://github.com/NaturalIntelligence/fast-xml-parser ) — fast GPX file parsing
- [SortableJS ](https://github.com/SortableJS/Sortable ) — creating a sortable file tree
- Mapping:
- [Mapbox GL JS ](https://github.com/mapbox/mapbox-gl-js ) — beautiful and fast interactive maps
- [brouter ](https://github.com/abrensch/brouter ) — routing engine
- [OpenStreetMap ](https://www.openstreetmap.org ) — map data used by Mapbox and brouter
2024-09-13 13:58:48 +02:00
- Search:
- [DocSearch ](https://github.com/algolia/docsearch ) — search engine for the documentation
2024-07-13 15:18:04 +02:00
## License
This project is licensed under the MIT License - see the [LICENSE ](LICENSE ) file for details.