{"id":35882881,"url":"https://github.com/vsimakhin/web-logbook","last_synced_at":"2026-06-26T07:01:32.979Z","repository":{"id":39648126,"uuid":"448349021","full_name":"vsimakhin/web-logbook","owner":"vsimakhin","description":"EASA Web Pilot Logbook","archived":false,"fork":false,"pushed_at":"2026-06-25T14:08:33.000Z","size":30353,"stargazers_count":106,"open_issues_count":12,"forks_count":21,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-06-25T16:06:23.946Z","etag":null,"topics":["digital","easa","electronic","fcl050","free","go","golang","logbook","opensource","pdf","pilot"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vsimakhin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-15T17:44:01.000Z","updated_at":"2026-06-22T21:45:24.000Z","dependencies_parsed_at":"2024-01-27T14:25:42.840Z","dependency_job_id":"4b344d04-2c00-4b8f-9982-b11e90748a7c","html_url":"https://github.com/vsimakhin/web-logbook","commit_stats":{"total_commits":212,"total_committers":2,"mean_commits":106.0,"dds":"0.12735849056603776","last_synced_commit":"93aa4140a2eac27bb379e0cf323f9576c945518d"},"previous_names":[],"tags_count":150,"template":false,"template_full_name":null,"purl":"pkg:github/vsimakhin/web-logbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsimakhin%2Fweb-logbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsimakhin%2Fweb-logbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsimakhin%2Fweb-logbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsimakhin%2Fweb-logbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vsimakhin","download_url":"https://codeload.github.com/vsimakhin/web-logbook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsimakhin%2Fweb-logbook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34806448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digital","easa","electronic","fcl050","free","go","golang","logbook","opensource","pdf","pilot"],"created_at":"2026-01-08T19:18:17.109Z","updated_at":"2026-06-26T07:01:32.969Z","avatar_url":"https://github.com/vsimakhin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub Release](https://img.shields.io/github/v/release/vsimakhin/web-logbook)](https://github.com/vsimakhin/web-logbook/releases)\n[![GitHub Downloads](https://img.shields.io/github/downloads/vsimakhin/web-logbook/total?label=all%20downloads)](https://github.com/vsimakhin/web-logbook/releases)\n[![Docker Pulls](https://img.shields.io/docker/pulls/vsimakhin/web-logbook)](https://hub.docker.com/r/vsimakhin/web-logbook)\n[![Docker Image Size](https://img.shields.io/docker/image-size/vsimakhin/web-logbook)](https://hub.docker.com/r/vsimakhin/web-logbook)\n\n# Web-logbook\n\nWeb-logbook is a simple, free and open-source EASA-style logbook application written in Go and React.\n\nIt lets you record and manage flight records, track licenses and certifications, visualize flights on a map, attach documents, and export a fully formatted EASA-style PDF logbook you can print, sign, and use as a regular paper logbook.\n\nThe application is a single binary and stores data locally using SQLite by default.\n\n![EASA Logbook](./readme-assets/logbook.png)\n\nWhy this project? Web-logbook was created to provide a simple, self-hosted logbook that follows EASA-style formatting while keeping full control of your data. Web-logbook runs locally and does not require a subscription or external services. Built by pilots for pilots.\n\n---\n\n## Quick Start\n\n- Download the latest release and run the binary\n- Then open your browser and type `http://localhost:4000`\n- Voilà! You have your logbook ready to use!\n\nThe application will automatically create a local SQLite database on the first start.\n\n---\n\n# Table of Contents\n\n- [Features](#features)\n- [Changelog](#changelog)\n- [Usage](#usage)\n  - [Docker \u0026 Kubernetes](#docker--kubernetes)\n  - [CLI options](#cli-options)\n- [Supported Operating Systems and Requirements](#supported-operating-systems-and-requirements)\n- [Interface](#interface)\n- [Airports Databases](#airports-databases)\n- [Advanced Configuration](#advanced-configuration)\n- [API](#api)\n- [Contributing / New features / Issues](#contributing--new-features--issues)\n- [Contributors](#contributors)\n- [Tech stack](#tech-stack)\n- [License](#license)\n\n---\n\n# Features\n\n- EASA-style flight logbook\n- Export logbook to PDF (A4 and A5 formats)\n- Flight map with route visualization\n- Automatic night-time calculation\n- Aircraft, airports, and persons management\n- License and certification tracking\n- CSV import and export\n- Attachments for flight records\n- Custom user-defined fields\n- Dashboard statistics and currency tracking\n\n---\n\n# Changelog\n\n## [4.6.0] - 26.06.2026\n\n- Update: Golang and npm packages/security patches.\n- New: Added support for tracking previous flight experience on the Settings page. Entered flight experience is automatically included in Logbook totals, Dashboard statistics, and PDF exports.\n\n## [4.5.1] - 22.05.2026\n\n- Fix: Download map functionality didn't work for satellite and terrain maps.\n- Update: Golang (1.25.10) modules/security patches.\n\n## [4.5.0] - 20.05.2026\n\n- New: New map options and map sources (satellite, terrain).\n- Update: Golang and npm packages/security patches.\n\n## [4.4.0] - 12.05.2026\n\n- Fix: Remarks were not displayed in the licensing table.\n- New: Populate PIC Name field with names already used in logbook.\n- Update: Golang and npm packages/security patches.\n\n## [4.3.0] - 03.05.2026\n\n- Update: Golang and npm packages/security patches.\n- Update: Improved import log message, added how many records were imported and how many were failed/skipped.\n- Update: Custom PDF logbook headers containing newlines (\\n) are now split into multiple lines.\n\nThe full changelog is [here](https://github.com/vsimakhin/web-logbook/blob/main/CHANGELOG.md)\n\n## Old v3.x version\nIf you still would like to use v3.x version:\n* Latest v3 release https://github.com/vsimakhin/web-logbook/releases/tag/v3.23.0\n* Docker `docker pull vsimakhin/web-logbook:v3.23.0`\n\n---\n\n# Usage\n\n## Local installation\n\nYou can clone the repo and compile the binaries yourself, or just download the latest ones for your operating system from the [releases](https://github.com/vsimakhin/web-logbook/releases).\n\n1. Download the latest release from https://github.com/vsimakhin/web-logbook/releases\n2. Extract the archive to a directory of your choice\n3. Start the application\n  * Windows:\n    * Double-click on the `web-logbook.exe`.\n  * Linux/macOS:\n    * Open a terminal and navigate to the directory\n    * Run `./web-logbook` or double-click on the `web-logbook` file.\n4. Open your browser, type http://localhost:4000 and the application is ready to use\n5. To close the application, press `Ctrl+C` in the terminal window or just close it\n\n**Note**: Windows and macOS may display a security warning because the binary is not digitally signed. You can safely allow it to run.\n\n## Docker \u0026 Kubernetes\n\nFor a quick start using Docker:\n```sh\ndocker run -p 4000:4000 vsimakhin/web-logbook:latest\n```\nCheck the [readme](./docker/README.md) for more details and Kubernetes deployment.\n\n## CLI options\n```sh\n$ ./web-logbook -h\n  -cert string\n      certificate path (default \"certs/localhost.pem\")\n  -disable-authentication\n      Disable authentication (in case you forgot login credentials)\n  -dsn string\n      Data source name {sqlite: file path|mysql: user:password@protocol(address)/dbname?param=value} (default \"web-logbook.sql\")\n  -enable-https\n      Enable TLS/HTTPS\n  -engine string\n      Database engine {sqlite|mysql} (default \"sqlite\")\n  -env string\n      Environment {dev|prod} (default \"prod\")\n  -key string\n      private key path (default \"certs/localhost-key.pem\")\n  -port int\n      Server port (default 4000)\n  -url string\n      Server URL (default empty - the app will listen on all network interfaces)\n  -version\n      Prints current version\n```\n\n---\n\n# Supported Operating Systems\n\nSince the application is written in Go, it can run on any operating system after compiling the source code.\n\nPrebuilt [binaries](https://github.com/vsimakhin/web-logbook/releases/latest) are available for Linux, macOS and Windows for x86_64 and ARM architectures.\n\nYou can access the application using any modern browser with JavaScript enabled.\n\n---\n\n# Interface\n\n## Logbook\n- Flight records table with filter for all fields and global search through all data\n- Customizable columns\n- Quick export to CSV\n- Export to PDF (A4, A5) formats\n- Automatic totals and subtotals calculation\n\n![EASA Logbook](./readme-assets/logbook.png)\n\n- Dark mode and mobile friendly\n\n![EASA Logbook dark mode](./readme-assets/dark-mode.png)\n![EASA Logbook mobile](./readme-assets/mobile-friendly.png)\n\n\n## Flight Records\n- Flight record details\n- Attachments\n- Automatic night-time calculation\n- Custom/user defined fields\n- Flight map\n- KML and GPX track attachments support for SkyDemon and FlightRadar24 (check this tool [fr24-kml-splitter](https://github.com/morremeyer/fr24-kml-splitter) for flightradar24 tracks)\n- Persons tracking\n- Instructor/Examiner signature\n\n![Flight record](./readme-assets/flight-record.png)\n\n## Licensing \u0026 Certification\n- Licenses and certificates\n- Document attachments and preview\n- Expiration tracking\n\n![Licensing \u0026 Certification](./readme-assets/licensing-record.png)\n\n## Map\n- Flight map\n- Date filters\n- Routes and airports filters\n- Aircraft filters\n- Basic statistics\n\n![Map of the flights](./readme-assets/map-example.png)\n\n## Aircrafts\n- Aircraft list\n- Types\n- Custom categories\n\n![Aircraft](./readme-assets/aircrafts.png)\n\n## Airports\n- Airport database\n- Custom airports\n- Filters\n\n![Airports](./readme-assets/airports.png)\n\n## Persons\n- Persons list for the recorded flight records\n- Flight list for each person\n- Custom user defined roles (Captain, First officer, Crew etc)\n\n## Stats\n- Dashboard statistics\n- Statistics by year, type, and category\n- Custom field support\n\n![Dashboard](./readme-assets/dashboard.png)\n![Stats](./readme-assets/stats-by-category.png)\n\n## Currency\n- Tracking currency and flight experience\n- Different time frames: days, calendar months, calendar years, since date and all time\n\n![Currency](./readme-assets/currency.png)\n\n## Export\n- Export to EASA PDF format (A4 and A5)\n- PDF export formats with custom title pages (for example, include your CV automatically)\n- Adjustable settings for each export format\n- Instructor/Examiner signatures also included in the PDF export\n\n![Export](./readme-assets/export.png)\n\n### A4\n![Export to PDF](./readme-assets/export-a4.png)\n\n### A5\n![Export to PDF](./readme-assets/export-a5-a.png)\n![Export to PDF](./readme-assets/export-a5-b.png)\n\nSo in real life the logbook could look like\n![Pilot logbook](./readme-assets/logbook_irl.jpg)\n\n## Import\n- CSV support\n- Predefined formats\n  - WebLogbook\n  - Leon application (via export to CrewLounge link)\n- Custom formats\n\n## Settings\n- Owner name, license and address, signature for the PDF exports\n- Signature pad to automatically include signatures to the PDF exports\n- Enable/Disable authentication (in case you need to expose the app to the public internet)\n- Some interface settings\n- Custom names for the standard flight record fields\n- Custom fields for the Flight record\n\n![Settings](./readme-assets/settings.png)\n\n---\n\n# Airports Databases\n\nThe app supports 3 sources:\n- https://github.com/mwgg/Airports/raw/master/airports.json - main JSON database of 28k+ airports.\n- (default) https://github.com/vsimakhin/Airports/raw/master/airports.json - my local fork of the main JSON database,  to ensure that the app remains functional even if there are any breaking changes in the upstream.\n- https://davidmegginson.github.io/ourairports-data/airports.csv - an alternate set of airports from https://ourairports.com/, which contains over 78k records, including small airfields and heliports. \n\nIf you enable the `No ICAO codes filter` option, the app will ignore ICAO airport codes that contain numbers and dashes, which are not commonly used ICAO codes. By default, this option is unchecked, which makes the database slightly smaller and cleaner.\n\n---\n\n# Advanced Configuration\n\n## HTTPS enable\n\nYou can generate your own certificate and key and store it in the different directories in your operating system. For that use `--key` and `--cert` parameters to specify the exact location and run the app with `--enable-https` flag.\n\n## MySQL database\n\n**Disclaimer**: the main development is based on SQLite engine, so MySQL can potentially have some bugs. If you find one, please report in the issues.\n\nTo store all data, you can use MySQL database. To get started, create a database and a user with access to it. On the first run, the application will create all necessary tables and views. If you want to migrate your data from SQLite to MySQL, you can use the export to CSV function first and then import from CSV.\n\nThe DSN format for MySQL connections \n```\nuser:password@protocol(address)/dbname?param=value\n```\n\nFor example, \n```\n./web-logbook -engine mysql -dsn \"web-logbook-user:pwd@tcp(192.168.0.222)/web-logbook\"\n```\n\n## API\n\nThe backend exposes a REST (sort of) API for access to all logbook functionality. You can find the full list of the endpoints here https://github.com/vsimakhin/web-logbook/blob/main/app/routes.go#L26\n\n### Authentication\n\nIf authentication is enabled you need to use Bearer token\n\n```bash\n# get token\nTOKEN=$(curl -s -X POST http://127.0.0.1:4000/api/login -H \"Content-Type: application/json\" -d '{\"login\": \"login\", \"password\": \"password\"}' | jq -r '.token')\n\n# run request\ncurl http://127.0.0.1:4000/api/export/A4 -H \"Authorization: Bearer $TOKEN\" --output logbook.pdf\n```\n\nPowerShell for Windows (generated by ChatGPT)\n```powershell\n$response = Invoke-RestMethod -Uri \"http://127.0.0.1:4000/api/login\" `\n  -Method POST `\n  -Headers @{ \"Content-Type\" = \"application/json\" } `\n  -Body '{\"login\": \"login\", \"password\": \"password\"}'\n\n$token = $response.token\n\nInvoke-WebRequest -Uri \"http://127.0.0.1:4000/api/export/A4\" `\n  -Headers @{ \"Authorization\" = \"Bearer $token\" } `\n  -OutFile \"logbook.pdf\"\n```\n\n### API examples\n\nDownload PDF A4 logbook\n```bash\ncurl http://127.0.0.1:4000/api/export/A4 --output logbook.pdf\n```\n\nGet distance between LKPR and EDDM airports in nautical miles\n```bash\ncurl http://127.0.0.1:4000/api/distance/LKPR/EDDM\n```\n\nGet night time in minutes for the flight from LKPR departed at 1600 UTC to the EDDM with arrival at 2012 UTC on 27/09/2025\n```bash\ncurl -s -X POST http://localhost:4000/api/logbook/night \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"date\": \"27/09/2025\",\n    \"departure\": {\n      \"place\": \"LKPR\",\n      \"time\": \"1600\"\n    },\n    \"arrival\": {\n      \"place\": \"EDDM\",\n      \"time\": \"2012\"\n    }\n  }' | jq -r '.data'\n```\n\n---\n\n# Contributing / New features / Issues\n\nIn case you'd like to add some other features to the logbook or you found a bug, please open an \"issue\" here https://github.com/vsimakhin/web-logbook/issues with a description. I cannot promise I'll implement it or fix it at a reasonable time but at least I can take a look.\n\n---\n\n# Contributors\n\nThanks for bug reports, testing, improvements, and features suggestions:\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://github.com/Jacopx\" title=\"Jacopx\"\u003e\u003cimg src=\"https://github.com/Jacopx.png\" width=\"40\" height=\"40\" alt=\"Jacopx\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dimoniet\" title=\"dimoniet\"\u003e\u003cimg src=\"https://github.com/dimoniet.png\" width=\"40\" height=\"40\" alt=\"dimoniet\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ghost\" title=\"maesteve\"\u003e\u003cimg src=\"https://github.com/ghost.png\" width=\"40\" height=\"40\" alt=\"maesteve\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ken340\" title=\"ken340\"\u003e\u003cimg src=\"https://github.com/ken340.png\" width=\"40\" height=\"40\" alt=\"ken340\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/morremeyer\" title=\"morremeyer\"\u003e\u003cimg src=\"https://github.com/morremeyer.png\" width=\"40\" height=\"40\" alt=\"morremeyer\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/bbqman7089\" title=\"bbqman7089\"\u003e\u003cimg src=\"https://github.com/bbqman7089.png\" width=\"40\" height=\"40\" alt=\"bbqman7089\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/danielkappelle\" title=\"danielkappelle\"\u003e\u003cimg src=\"https://github.com/danielkappelle.png\" width=\"40\" height=\"40\" alt=\"danielkappelle\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jvandergeer\" title=\"jvandergeer\"\u003e\u003cimg src=\"https://github.com/jvandergeer.png\" width=\"40\" height=\"40\" alt=\"jvandergeer\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/eagleone84\" title=\"eagleone84\"\u003e\u003cimg src=\"https://github.com/eagleone84.png\" width=\"40\" height=\"40\" alt=\"eagleone84\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/daman2k\" title=\"daman2k\"\u003e\u003cimg src=\"https://github.com/daman2k.png\" width=\"40\" height=\"40\" alt=\"daman2k\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/fldroiddev\" title=\"fldroiddev\"\u003e\u003cimg src=\"https://github.com/fldroiddev.png\" width=\"40\" height=\"40\" alt=\"fldroiddev\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/benoitfl\" title=\"benoitfl\"\u003e\u003cimg src=\"https://github.com/benoitfl.png\" width=\"40\" height=\"40\" alt=\"benoitfl\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Gaudv\" title=\"Gaudv\"\u003e\u003cimg src=\"https://github.com/Gaudv.png\" width=\"40\" height=\"40\" alt=\"Gaudv\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/tumblebone\" title=\"tumblebone\"\u003e\u003cimg src=\"https://github.com/tumblebone.png\" width=\"40\" height=\"40\" alt=\"tumblebone\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/marostegui\" title=\"marostegui\"\u003e\u003cimg src=\"https://github.com/marostegui.png\" width=\"40\" height=\"40\" alt=\"marostegui\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/xtncl\" title=\"xtncl\"\u003e\u003cimg src=\"https://github.com/xtncl.png\" width=\"40\" height=\"40\" alt=\"xtncl\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/leapparence\" title=\"leapparence\"\u003e\u003cimg src=\"https://github.com/leapparence.png\" width=\"40\" height=\"40\" alt=\"leapparence\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/fuelflo\" title=\"fuelflo\"\u003e\u003cimg src=\"https://github.com/fuelflo.png\" width=\"40\" height=\"40\" alt=\"fuelflo\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/chrp90\" title=\"chrp90\"\u003e\u003cimg src=\"https://github.com/chrp90.png\" width=\"40\" height=\"40\" alt=\"chrp90\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/machullamanuel-cmyk\" title=\"machullamanuel-cmyk\"\u003e\u003cimg src=\"https://github.com/machullamanuel-cmyk.png\" width=\"40\" height=\"40\" alt=\"machullamanuel-cmyk\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/AngusBell97\" title=\"AngusBell97\"\u003e\u003cimg src=\"https://github.com/AngusBell97.png\" width=\"40\" height=\"40\" alt=\"AngusBell97\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/pedroponte\" title=\"pedroponte\"\u003e\u003cimg src=\"https://github.com/pedroponte.png\" width=\"40\" height=\"40\" alt=\"pedroponte\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/benbox69\" title=\"benbox69\"\u003e\u003cimg src=\"https://github.com/benbox69.png\" width=\"40\" height=\"40\" alt=\"benbox69\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/WildBlueUK\" title=\"WildBlueUK\"\u003e\u003cimg src=\"https://github.com/WildBlueUK.png\" width=\"40\" height=\"40\" alt=\"WildBlueUK\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Muchacho08\" title=\"Muchacho08\"\u003e\u003cimg src=\"https://github.com/Muchacho08.png\" width=\"40\" height=\"40\" alt=\"Muchacho08\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/mattswainston\" title=\"mattswainston\"\u003e\u003cimg src=\"https://github.com/mattswainston.png\" width=\"40\" height=\"40\" alt=\"mattswainston\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n--\n\n# Tech stack\n\nBackend:\n* go-pdf https://codeberg.org/go-pdf/fpdf\n* chi web-server https://github.com/go-chi/chi\n* go-solar https://github.com/mstephenholl/go-solar\n* sqlite https://modernc.org/sqlite\n* mysql https://github.com/go-sql-driver/mysql\n* golang-jwt https://github.com/golang-jwt/jwt/\n* testify https://github.com/stretchr/testify\n\nFrontend:\n* ViteJS https://vite.dev/\n* React https://react.dev/\n* Material UI https://mui.com/material-ui/\n* Openlayers https://openlayers.org/\n* dayjs https://github.com/iamkun/dayjs\n* TanStack Query https://tanstack.com/query/\n* export-to-csv https://github.com/alexcaza/export-to-csv\n* Signature Pad https://github.com/szimek/signature_pad\n* PapaParse https://github.com/mholt/PapaParse\n* compare-versions https://github.com/omichelsen/compare-versions\n* file-type https://github.com/sindresorhus/file-type\n* mapbox/togeojson https://github.com/mapbox/togeojson\n\nMap Sources:\n* OpenStreetMap https://www.openstreetmap.org/\n* Esri/ArcGIS Online https://www.arcgis.com/\n\n---\n\n# Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=vsimakhin/web-logbook\u0026type=Date)](https://www.star-history.com/#vsimakhin/web-logbook\u0026Date)\n\n---\n\n# License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvsimakhin%2Fweb-logbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvsimakhin%2Fweb-logbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvsimakhin%2Fweb-logbook/lists"}