* Update copyright year in email invitation template to 2026 * Squashed commit of the following: commit 9da60a634cc7064c052c9560070d7e7a6fe33d6d Author: fantastron27 <fantastron27@gmail.com> Date: Thu Jan 15 12:52:06 2026 +0100 Translated using Weblate (Slovak) Currently translated at 100.0% (1062 of 1062 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ commit 82c1c00e8fe8c650e24b3b5bfdc328322147a04f Author: bittin1ddc447d824349b2 <bittin@reimu.nl> Date: Wed Jan 14 06:46:29 2026 +0100 Translated using Weblate (Swedish) Currently translated at 100.0% (1062 of 1062 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/ commit fcffb89576423a186a5e85fdb6db83c97c85b039 Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 13 17:28:04 2026 -0500 Refactor code structure and remove redundant code blocks for improved readability and maintainability commit da02d73eb510e71fd14c50d961e2135306466b96 Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 13 17:18:27 2026 -0500 Squashed commit of the following: commit a993a15b93ebb7521ae2e5cc31596b98b29fcd6c Author: Alex <div@alexe.at> Date: Mon Jan 12 20:44:47 2026 +0100 Translated using Weblate (German) Currently translated at 100.0% (1048 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit fdc455d9424fbb0f6b72179d9eb1340411700773 Author: Ettore Atalan <atalanttore@googlemail.com> Date: Sat Jan 10 23:24:23 2026 +0100 Translated using Weblate (German) Currently translated at 100.0% (1048 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit 5942129c55e89dd999a13d4df9c40e6e3189355c Author: Orhun <orhunavcu@gmail.com> Date: Sun Jan 11 13:05:31 2026 +0100 Translated using Weblate (Turkish) Currently translated at 100.0% (1048 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/tr/ commit 8712e43d8ba4a7e7fe163fb454d6577187f9a375 Author: Henrique Fonseca Veloso <henriquefv@tutamail.com> Date: Fri Jan 9 22:53:11 2026 +0100 Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/pt_BR/ commit 18ee56653470413afe8d71ecd2b5028f6e4cf118 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:57 2026 +0100 Translated using Weblate (Dutch) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nl/ commit 57783c544e583c035c8b57b5c10ca320f25f399e Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:14 2026 +0100 Translated using Weblate (Arabic) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/ar/ commit fb09edfd85bc85234b1c1ba7dd499f2915093fff Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:26 2026 +0100 Translated using Weblate (Spanish) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit 554a207d8e454a1f7ae826e2a40d389b94be5512 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:21 2026 +0100 Translated using Weblate (German) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit b70b9db27fb8607beefeb288185601c8f5eae28d Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:53:02 2026 +0100 Translated using Weblate (Norwegian Bokmål) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/ commit 3b467caa9007c553e4ae7de97f53b6e462161ea3 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:53:07 2026 +0100 Translated using Weblate (Polish) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/pl/ commit 30fbbfba3572c8f78ec7c7e1a231e363aca1ef10 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:53:17 2026 +0100 Translated using Weblate (Russian) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/ru/ commit 8cecb492cfcac0a1f93ee8919f7b41d978d331ee Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:42 2026 +0100 Translated using Weblate (Italian) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/it/ commit f0d3d41029c89bfa83d5891ee7af70241f27b7be Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:38 2026 +0100 Translated using Weblate (Hungarian) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/hu/ commit 102e0f1912d010d38755a1713abb2a7f7564aafb Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:53:21 2026 +0100 Translated using Weblate (Slovak) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ commit 428b8f18cf6195a96b55109e0221413d82415a2f Author: Максим Горпиніч <gorpinicmaksim0@gmail.com> Date: Sat Jan 10 08:55:28 2026 +0100 Translated using Weblate (Ukrainian) Currently translated at 100.0% (1048 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/uk/ commit 1a71aaf279ecab26c0c1fede05025732e6dcfa5e Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:53:27 2026 +0100 Translated using Weblate (Swedish) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/ commit 36ec3701f3a1a904e7c42ac4ffbe6a050dc6d1ed Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:53:43 2026 +0100 Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/zh_Hans/ commit 65d8b74b340c877cad2028b7142c783a1b568d49 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:48 2026 +0100 Translated using Weblate (Japanese) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/ja/ commit 4d11d1d31022583657e93aee70301a8ffcde1340 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:52 2026 +0100 Translated using Weblate (Korean) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/ko/ commit bd1135bcb965ad73cf493771b15081cc97cf513a Author: Orhun <orhunavcu@gmail.com> Date: Fri Jan 9 22:53:33 2026 +0100 Translated using Weblate (Turkish) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/tr/ commit 2c3d814119f4cf2dabd20933699f5b991f20f3e6 Author: Anonymous <noreply@weblate.org> Date: Fri Jan 9 22:52:32 2026 +0100 Translated using Weblate (French) Currently translated at 99.9% (1047 of 1048 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/fr/ commit 5846e28c6f33230e2787fe727464f399907f67c8 Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 13 17:14:59 2026 -0500 feat: Add export/import messages and user email verification prompts in multiple languages commit 365e7412f9193b04ab4bcbd8512ad5ff6096a070 Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 13 15:18:46 2026 -0500 fix: Remove trailing backslash from installation note in Unraid documentation commit d1aca9659603513f6fa8c0681e68d98dba4ed693 Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 12 20:35:44 2026 -0500 feat: Update email invitation template for improved styling and clarity commit ce9406a7edf387bd85b4dec0459eda99ffa2b4b5 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 21:09:48 2026 -0500 docs: Update "Invite a User" guide to include email configuration tip commit 47d6ea4aa5a8f7094138b2a143fafc797b762034 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 21:08:46 2026 -0500 feat: Add "Invite a User" guide and update navigation links commit c2bbfdd40899b9d4300b6887b2e5fdeb668709c4 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 20:57:13 2026 -0500 feat: Add Tailwind CSS and DaisyUI plugin for styling commit c9c0739f2104fe2dba5034e45cb492194068a234 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 20:54:58 2026 -0500 feat: Add Tailwind CSS and DaisyUI plugin for styling commit 997a45581c0f273efa58557bbf95579ff820b0f8 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 20:49:36 2026 -0500 feat: Integrate django-invitations for user invitation management and update settings commit fda1d039fddb5770c8020a37cda1d71ec8a46fc5 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 13:01:00 2026 -0500 fix: Refactor update method to handle is_public cascading for related items commit bc8bc4b487d198e72fcbb74bbd644f12e180c06c Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 11 12:51:02 2026 -0500 fix: Update Trivy security scan configuration and add .trivyignore for known false positives commit ceb52efd9fdd61a08a0a6c8c1f6212e46b281b87 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 20:21:02 2026 -0500 fix: Disable proxy settings in Google Maps API request to prevent connection issues commit 58fc8069704dfadcb37be1102a7d95ec5e5d999d Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 20:12:14 2026 -0500 fix: Update User-Agent header in Google Maps API requests for improved compatibility commit 1a09e694d70ee3dbf1fa6373fe57d513a8a23559 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 20:05:26 2026 -0500 feat: Add User-Agent header to Google Maps API requests and refine error messaging for access forbidden response commit 513df78a5008393ffca96ed60626cbb139e9cb7f Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 20:00:07 2026 -0500 fix: Enhance error messaging for Google Maps access forbidden response commit c5f144e6018e2f6488e97c73b49dbef872cf6b7b Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 19:22:43 2026 -0500 feat: Enhance error handling and messaging for Google Maps and OpenStreetMap geocoding functions commit 90b0d564d538c4fc3ff2b1079c3e6e3df321107a Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 17:25:31 2026 -0500 fix: Adjust styles to prevent horizontal scroll and enhance floating action button visibility commit 5bd4c2cb5dad61f3469b92f151db4043c83dc1bd Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 16:07:06 2026 -0500 feat: Add modals for creating locations and lodging from recommendations, enhance image import functionality commit 2877a18d2789897d9f0a47e5551e8fb5995ad5a1 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 14:01:28 2026 -0500 feat: Implement data restoration functionality with file import - Added a new action `restoreData` in `+page.server.ts` to handle file uploads for restoring collections. - Enhanced the UI in `+page.svelte` to include an import button and a modal for import progress. - Integrated file input handling to trigger form submission upon file selection. - Removed unused GSAP animations from the login, profile, and signup pages for cleaner code. commit b920f17389433e9483e88fb35e700e929bfdf05b Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 11:54:53 2026 -0500 Add new screenshots and update email verification message in locale file commit 2c78586dc6033b11bdbeaf04aae274a57ed3c9da Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 10:58:06 2026 -0500 Add "worldtravel" translations to multiple locale files - Added "worldtravel" key with translations for Spanish, French, Hungarian, Italian, Japanese, Korean, Dutch, Norwegian, Polish, Brazilian Portuguese, Russian, Slovak, Swedish, Turkish, Ukrainian, and Chinese. - Updated the navigation section in each locale file to include the new "worldtravel" entry. commit facbaa40eff2783f13f2e0add803d36d10cd6ccf Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 10:50:17 2026 -0500 fix: update package dependencies to resolve compatibility issues commit fa5a279b09ff3fb325c893a02b1d562a255b4ab8 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 10:38:00 2026 -0500 Refactor code structure for improved readability and maintainability commit 984e7569a9502ce63ec7f61d6e3edbc8187c5c57 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 10:22:24 2026 -0500 Refactor code structure for improved readability and maintainability commit f8e8f9685427541cbf2528703a4dccc8ade940a7 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 10:20:23 2026 -0500 chore: update dependencies in pnpm-lock.yaml to latest versions commit b47f446d457b1e7d5ddd05aa8cb763e8c6b4452b Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 10 10:14:04 2026 -0500 chore: update dependencies in frontend package.json and pnpm-lock.yaml - Updated @sveltejs/adapter-node from ^5.2.12 to ^5.4.0 - Updated @sveltejs/adapter-vercel from ^5.7.0 to ^6.3.0 - Updated tailwindcss from ^3.4.17 to ^3.4.19 - Updated typescript from ^5.8.3 to ^5.9.3 - Updated vite from ^5.4.19 to ^5.4.21 commit 6b8971cbcf65d16d19a2306d1215a7f34298f67c Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 16:53:47 2026 -0500 fix: improve error messages for Overpass API responses commit 5dfe22609e34a3732252608afbc1541157d90094 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 16:50:39 2026 -0500 Localization: update localization files with new keys and values commit 1718bea3164ff10f24bceed701778865b3ae21c3 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 16:30:51 2026 -0500 feat: enhance localization for itinerary linking and transportation components commit c229163c3f46a639e7f06c88d0ea1d76779d03e0 Author: Nick Petrushin <n.a.petrushin@gmail.com> Date: Fri Jan 9 21:55:56 2026 +0100 Add dev compose for hot reload and update WSL dev container docs (#958) commit 4b0001d249a662a6e65eb8bc54f57686d05dfd10 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 15:48:23 2026 -0500 feat: enhance unscheduled items display with improved card interactions and accessibility commit 49cf7f8f60cd910d459e94116c48735bb7530d02 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 14:32:14 2026 -0500 feat: enhance periodic sync logging and improve airport mode handling in LocationSearchMap commit f37d54652519f7b48908f0a39b4ecad447ab3786 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 13:15:30 2026 -0500 feat: add airport and location search mode labels to localization file commit f4bf0a38bd0349bae4cbf648ef24c10fcc2d33cc Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 13:10:27 2026 -0500 feat: enhance LocationSearchMap and TransportationDetails components with initialization handling and airport mode logic commit 12ff50ba1c968193ef340f586843fd4d85e2bc69 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 11:59:25 2026 -0500 feat: refactor Dockerfile and supervisord configuration to remove cron and add periodic sync script commit 50b5a95c49f62e561225fa0037ba2c5cadff3d44 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 9 10:31:50 2026 -0500 feat: implement action menus and close event handling in card components commit 1b1d801151d4350211a45d3ea7da787cfa026419 Author: Sean Morley <mail@seanmorley.com> Date: Thu Jan 8 20:00:43 2026 -0500 Refactor itinerary management and UI components - Updated ItineraryViewSet to handle visit updates and creations more efficiently, preserving visit IDs when moving between days. - Enhanced ChecklistCard, LodgingCard, TransportationCard, and NoteCard to include a new "Change Day" option in the actions menu. - Improved user experience in CollectionItineraryPlanner by tracking specific itinerary items being moved and ensuring only the relevant entries are deleted. - Added new location sharing options in LodgingCard and TransportationCard for Apple Maps, Google Maps, and OpenStreetMap. - Updated translations in en.json for consistency and clarity. - Minor UI adjustments for better accessibility and usability across various components. commit f315f85c58cda9dc0879fcf76254133081a71bdc Author: Sean Morley <mail@seanmorley.com> Date: Wed Jan 7 15:24:06 2026 -0500 feat: enhance internationalization support in CollectionMap and CollectionStats components - Added translation support for various labels and messages in CollectionMap.svelte and CollectionStats.svelte using svelte-i18n. - Updated English and Chinese locale files to include new translation keys for improved user experience. - Simplified the rendering of recommendation views in the collections page. commit c53eb6b2fe5f0c3e2ff86631d5f859435cb828bb Author: Nick Petrushin <n.a.petrushin@gmail.com> Date: Wed Jan 7 19:15:38 2026 +0100 Add Dev Container + WSL install docs and link in install guide (#944) (#951) commit 0c6a99744cae31904e8e571aa2f13667d202be4b Author: Sean Morley <mail@seanmorley.com> Date: Wed Jan 7 13:14:20 2026 -0500 feat: enhance CollectionItineraryPlanner and CollectionStats with dynamic links and transport type normalization commit c2229e9672199a944196852f357d0bfc44481a58 Author: Sean Morley <mail@seanmorley.com> Date: Wed Jan 7 11:45:55 2026 -0500 fix: update appVersion to v0.12.0-pre-dev-010726 commit 074729e14c4b7058025502d0337e3accafde28c1 Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 6 19:02:31 2026 -0500 fix: specify full path for python3 in cron job and add shell and path variables commit 2f9a3f20ca4f634612ce1f9d487ab664a7d91bfa Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 6 16:24:56 2026 -0500 feat: add functionality to change day and move items to trip-wide itinerary - Implemented changeDay function in ChecklistCard, LocationCard, LodgingCard, NoteCard, and TransportationCard components to allow users to change the scheduled day of items. - Added a button to move items to the global (trip-wide) itinerary in the aforementioned components, with appropriate dispatch events. - Enhanced CollectionItineraryPlanner to handle moving items to the global itinerary and added UI elements for unscheduled items. - Updated ItineraryDayPickModal to support the deletion of source visits when moving locations. - Added new translations for "Change Day" and "Move Trip Wide" in the English locale. commit a46e42c54579353cc47321448b3d2e208505f480 Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 6 12:55:15 2026 -0500 feat: enhance itinerary management by removing old items on date change for notes and checklists; normalize date handling in CollectionMap commit e602639877e109c8c6105e98f58d410ada321fae Author: Sean Morley <mail@seanmorley.com> Date: Tue Jan 6 12:06:50 2026 -0500 feat: add CollectionStats component for detailed trip statistics - Implemented CollectionStats.svelte to display various statistics related to the collection, including distances, activities, and locations visited. - Enhanced CollectionMap.svelte to filter activities based on date range using new getActivityDate function. - Updated LocationSearchMap.svelte to handle airport mode for start and end locations. - Modified types.ts to include is_global property in CollectionItineraryItem for trip-wide items. - Updated +page.svelte to integrate the new stats view and manage view state accordingly. commit 75b32d7c1de92bd4c5e69cc04a181fe5d78945d7 Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 5 16:58:05 2026 -0500 feat: add dynamic lodging icons based on type in CollectionMap component commit 5d59eec26162afe1024e5fd29c84c552c06f05dd Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 5 16:39:18 2026 -0500 feat: add collaborator serialization and display in collections - Implemented `_build_profile_pic_url` and `_serialize_collaborator` functions for user profile picture URLs and serialization. - Updated `CollectionSerializer` and `UltraSlimCollectionSerializer` to include collaborators in the serialized output. - Enhanced `CollectionViewSet` to prefetch shared_with users for optimized queries. - Modified frontend components to display collaborators in collection details, including profile pictures and initials. - Added new localization strings for collaborators. - Refactored map and location components to improve usability and functionality. - Updated app version to reflect new changes. commit 24e27ae3b1798e5912bccf567c802eb9c9e5acfb Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 5 14:34:00 2026 -0500 Refactor collection page for improved localization and code clarity - Removed unused imports and consolidated cost category labels to be reactive. - Updated cost summary function to accept localized labels. - Enhanced localization for various UI elements, including buttons, headings, and statistics. - Improved user feedback messages for better clarity and consistency. - Ensured all relevant text is translatable using the i18n library. commit a72d3002098c7605cc914f2a22600e073408cd43 Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 5 13:05:08 2026 -0500 feat: implement cleanup of out-of-range itinerary items and notify users of potential impacts on itinerary when dates change commit c47ffdfc381f46943dddbf3236612337de93f7c9 Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 5 12:36:54 2026 -0500 feat: add CollectionItineraryDay model and related functionality for itinerary day metadata management commit 398dc06571bd051362f07cc42b72360a4080ae09 Author: Sean Morley <mail@seanmorley.com> Date: Mon Jan 5 11:46:19 2026 -0500 feat: add cron job for syncing visited regions and cities, enhance Docker and supervisord configurations commit 1651e7dfa7ffb63332567d3eefcfab3f3bd98863 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 4 16:21:59 2026 -0500 feat: enhance extractIsoCode function to handle cases without city information and update CollectionMap to bind user data commit db89c4e2b7163ebe01f05e74983a373dafbf0058 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 4 15:32:29 2026 -0500 feat: update extractIsoCode function to include additional ISO3166 levels for improved region matching commit 8cff83262108736f2ec4f0c5f8e6b9b1d9526902 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 4 13:29:38 2026 -0500 feat: enhance extractIsoCode function with normalization for locality matching commit d30eb55ea4f6dcc4e5d076bc7c0ad8e3fdd8f268 Author: Sean Morley <mail@seanmorley.com> Date: Sun Jan 4 13:12:55 2026 -0500 feat: enhance ISO code extraction and region matching logic in extractIsoCode function commit 4de2b7ba2d59c91e269bf28d4cedcdb9d1c4d687 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 3 23:20:33 2026 -0500 feat: enhance map functionality with search and zoom features - Updated availableViews in collection page to include map view based on lodging and transportation locations. - Added search functionality to the map page, allowing users to filter pins by name and category. - Implemented auto-zoom feature to adjust the map view based on filtered search results. - Introduced a search bar with a clear button for better user experience. commit 0bf29b72b5634d5c5072ba5ea6c89f4ba7a5ad2f Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 3 22:22:09 2026 -0500 feat: add Development Timeline link to overview and create timeline documentation commit 2a9a205c97a17f627330d47b466d97119e36d5f0 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 3 16:22:48 2026 -0500 feat: add price and currency fields to locations, lodging, and transportation components - Introduced price and price_currency fields in LocationModal, LodgingDetails, LodgingModal, TransportationDetails, and TransportationModal components. - Implemented MoneyInput and CurrencyDropdown components for handling monetary values and currency selection. - Updated data structures and types to accommodate new price and currency fields across various models. - Enhanced cost summary calculations in collections and routes to display total costs by currency. - Added user preference for default currency in settings, affecting new item forms. - Updated UI to display price information in relevant components, ensuring consistent formatting and user experience. commit 84d176c028851ce1be4fe5b29372c2ce773e49e5 Author: Sean Morley <mail@seanmorley.com> Date: Sat Jan 3 14:48:53 2026 -0500 feat: enhance LodgingCard and TransportationCard components with expandable details and improved layout commit 6a4b965391b9045a0eb17c84a1383ab2cdbea857 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 17:44:29 2026 -0500 chore: update .env.example to include account email verification configuration commit 210973245fb9ac9331b2f6037f2583a12738308d Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 17:18:12 2026 -0500 feat: enhance hero image handling in collection view by prioritizing primary image commit fe1ed1d9a681b4847139ee782a717a560a993f15 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 16:39:53 2026 -0500 Refactor calendar components and enhance event detail handling - Replaced direct calendar implementation with a reusable CalendarComponent in the calendar route. - Introduced EventDetailsModal for displaying event details, improving modularity and readability. - Added functionality to fetch event details asynchronously when an event is clicked. - Implemented ICS calendar download functionality with loading state management. - Enhanced collections page to support calendar view, integrating event handling and timezone management. - Improved lodging and transportation pages to display local time for stays and trips, including timezone badges. - Cleaned up unused code and comments for better maintainability. commit 1b64f8db573d7bdd201c1c4c4e59c6675ab8bb83 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 13:21:46 2026 -0500 feat: add primary image support to Collection model, serializers, and UI components commit 00914f529665132ec2f8d2c28ea7df7195bdd378 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 12:55:20 2026 -0500 feat: add travel duration and GPX distance calculation to Transportation model and UI commit 0e65929599ab337104b320de7b7cfa773d49c0c6 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 12:00:46 2026 -0500 feat: add details view for checklist and note cards with edit functionality commit 8cc8c6677032d33962eb5e8b1ed6ee162af82157 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 11:49:20 2026 -0500 feat: add initial visit date support in ChecklistModal and NoteModal, with UI suggestions for prefilled dates commit d456a48f29657b6073d829cfb3651fd63e3751bd Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 11:32:42 2026 -0500 fix: remove unnecessary cache decorator from globespin function commit 9bef2a074ed8499d94d57538fb9dcc459b00fbed Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 11:30:46 2026 -0500 fix: improve dropdown close behavior by handling multiple event types commit 736f95213e2ed06a40d5efbc522e11dbc17b2676 Author: Sean Morley <mail@seanmorley.com> Date: Fri Jan 2 11:05:28 2026 -0500 feat: enhance backup export functionality with itinerary items and export IDs commit 121d55c3d732f3e0f7ebf56ba72512de3f983eda Author: Sean Morley <mail@seanmorley.com> Date: Wed Dec 31 10:22:06 2025 -0500 chore: update copyright year to 2026 in various files commit 1b917db9979450b3883576eabc240fe416930149 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 30 14:17:20 2025 -0500 feat: integrate CollectionMap component in collections page and update map titles in lodging and transportation pages - Replaced inline map implementation with CollectionMap component in collections/[id]/+page.svelte for better modularity. - Updated the map title in lodging/[id]/+page.svelte to reflect lodging context. - Updated the map title in transportations/[id]/+page.svelte to reflect transportation context. - Added functionality to collect and render GeoJSON data from transportation attachments in transportations/[id]/+page.svelte. commit 0e51b37a89edd5266c7bc6d270741aca8f474a08 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 30 11:57:48 2025 -0500 Enhance collection management with modal updates and item handling commit 52712bfbbfa262778e3886e06af3a35e99813c0b Author: Sean Morley <mail@seanmorley.com> Date: Sun Dec 28 17:25:59 2025 -0500 Refactor code structure for improved readability and maintainability commit 8a9d78715e85d87ddb020bde9805462f5c125381 Merge: 59bec174 a92029f3 Author: Sean Morley <mail@seanmorley.com> Date: Sun Dec 28 16:55:08 2025 -0500 Merge branch 'development' of github.com:seanmorley15/AdventureLog into development commit a92029f310f368abb8bc25666d3cee43c4d567cc Author: Lars Lehmann <33843261+larsl-net@users.noreply.github.com> Date: Sun Dec 28 22:54:54 2025 +0100 Make sure reverse geocoding uses correct key for cities (#938) * Reorder town and county checks in geocoding.py Fix detection if only town exists for a location but county is no city name * Use address keys only if city is found commit 59bec1748318c0d7f422fb5ebb22da7d5fdababf Author: Lars Lehmann <lars@lmail.eu> Date: Sun Dec 28 20:29:08 2025 +0100 Use address keys only if city is found commit f4faa4c336bb28f6c6609c459d99b7774efd2d04 Author: Lars Lehmann <33843261+larsl-net@users.noreply.github.com> Date: Sun Dec 28 18:57:15 2025 +0100 Reorder town and county checks in geocoding.py Fix detection if only town exists for a location but county is no city name commit 6f923f0181edd3d7698ea98bdecc7e8508b334d9 Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 27 16:21:44 2025 -0500 feat: implement date validation for itinerary items and add day picker modal for scheduling commit 65fcd94898db02eaffa3a0317f90fe225c8ffb03 Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 27 15:26:50 2025 -0500 feat: add start_code and end_code fields to Transportation model and update related components commit fd463b428b56cbee47bfb4921c4c9d42a0f944ad Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 26 19:03:33 2025 -0500 feat: add Transportation modal component and related routes - Implemented TransportationModal component for creating and editing transportation entries. - Added server-side loading for transportation details in the new route [id]/+page.server.ts. - Created a new Svelte page for displaying transportation details with image and attachment handling. - Integrated modal for editing transportation in the transportation details page. - Updated lodging routes to include a modal for editing lodging entries. - Removed unused delete action from lodging server-side logic. commit b660f4f0429e657af28fc2e2135ae9068445e4b4 Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 26 13:21:03 2025 -0500 feat: implement lodging detail page with server-side loading and image modal functionality - Added a new server-side load function to fetch lodging details by ID. - Created a new Svelte component for the lodging detail page, including image carousel and map integration. - Implemented a modal for displaying images with navigation. - Enhanced URL handling in the locations page to only read parameters. commit c8cedcd9dbbbf7dfbdcc9715864832da244abc5c Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 26 11:01:25 2025 -0500 feat: enhance lodging management with date validation and update messages commit e3e05b5ba3a01df4caa1df344d7640df2f038b10 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 23 16:57:33 2025 -0500 fix: update contentType in ImageManagement component to 'lodging' for correct media handling commit b521e54d9eae32a944899a5c70d6a6110de38db3 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 23 16:54:22 2025 -0500 feat: add LodgingMedia and LodgingModal components for managing lodging details and media attachments feat: implement LocationSearchMap component for interactive location searching and mapping functionality commit 9919f0c15f7716da222d5522a984f43fb5a9b97a Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 23 10:22:58 2025 -0500 Component folder structure changes commit 2db1f7de0e8b350e358905e25579219707b81a15 Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 21:40:23 2025 -0500 feat: add status and days until start fields to collections with filtering options commit d5ca8f9c8e6556398987c8bd32076d0a63deb388 Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 21:12:03 2025 -0500 feat: add map center and zoom state management with URL synchronization commit 4198b9e39f0e675779b4ef701558be95a1104abb Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 21:03:49 2025 -0500 feat: add progress tracker for folder views to display visited and planned locations commit c970615294969f22ca5f2c50de94fad9fda53712 Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 18:22:18 2025 -0500 feat: enhance map interaction for touch devices with custom popup handling commit e95f738638a0aa564886937365f9c36d42c29f80 Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 15:17:20 2025 -0500 feat: add FullMap component for enhanced map functionality with clustering support - Introduced FullMap.svelte to handle map rendering, clustering, and marker management. - Updated map page to utilize FullMap component, replacing direct MapLibre usage. - Implemented clustering options and marker properties handling in FullMap. - Added utility functions for resolving theme colors and managing marker states. - Enhanced user experience with hover popups and improved loading states for location details. - Updated app version to v0.12.0-pre-dev-122225. commit 6753c840f8dfbb2a698a741ebdb4fbe64fc986f4 Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 13:56:39 2025 -0500 feat: enhance itinerary management with deduplication and initial visit date handling commit 09f8cd4a8c13db5ae486a50860aa7fbd6e6fe9e4 Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 22 11:54:34 2025 -0500 feat: add itinerary removal functionality to various cards and update UI components - Implemented `removeFromItinerary` function in `LodgingCard`, `NoteCard`, and `TransportationCard` to allow users to remove items from their itinerary. - Replaced the trash icon with a calendar remove icon in `LocationCard`, `LodgingCard`, `NoteCard`, and `TransportationCard` for better visual representation. - Updated the dropdown menus in `LodgingCard`, `NoteCard`, and `TransportationCard` to include the new remove from itinerary option. - Enhanced `CollectionItineraryPlanner` to pass itinerary items to the respective cards. - Removed `PointSelectionModal.svelte` as it is no longer needed. - Refactored `LocationMedia.svelte` to integrate `ImageManagement` component and clean up unused code related to image handling. commit ace2a45cc924fff0594f92497539f876073e16eb Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 20 18:02:24 2025 -0500 feat: add canModify prop to collection components for user permission handling commit b721b240db2e062f7c5c380dba75a948bcfc6684 Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 20 12:10:52 2025 -0500 fix: update appVersion and improve button accessibility in collection views commit cda9bc619732ad9223920b31fb10f3c475de77ee Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 20 12:01:52 2025 -0500 feat: add CollectionRecommendationView component for displaying location recommendations - Implemented CollectionRecommendationView.svelte to handle location recommendations based on user input and selected categories. - Added Recommendation and RecommendationResponse types to types.ts for better type safety and structure. - Updated collections/[id]/+page.svelte to include a new view for recommendations, allowing users to switch between different views seamlessly. commit 7ee503cea3e185dd30b12561a49fd541b18adc3e Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 20 10:43:00 2025 -0500 Refactor code structure for improved readability and maintainability commit 3ecdbb6462d9b48cc6c4f85b9dc1b55133bda5cd Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 19 15:12:40 2025 -0500 feat(wikipedia): implement image selection from Wikipedia with enhanced results display commit c446f8957216e87f6b7a38525b5f8c97d0989541 Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 19 14:54:46 2025 -0500 fix: update appVersion to correct pre-dev version commit efff6cbd97e6fe894c991821069116d013ff42e6 Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 19 13:14:11 2025 -0500 feat(collection): enhance collection sharing logic and improve data handling on invite acceptance commit 01950598b20c85bcc8e57203d3aece745947df9e Author: Sean Morley <mail@seanmorley.com> Date: Fri Dec 19 12:43:50 2025 -0500 feat(itinerary): implement auto-generate functionality for itinerary items based on dated records commit b3e4799b74446113cc919e7455f167b3ed59e960 Author: Sean Morley <mail@seanmorley.com> Date: Wed Dec 17 13:39:41 2025 -0500 feat(itinerary): add itinerary management features and link modal - Introduced ItineraryViewSet for managing itinerary items with create and reorder functionalities. - Added itinerary linking capabilities in CollectionModal and CollectionItineraryPlanner components. - Implemented new ItineraryLinkModal for linking existing items to specific dates. - Enhanced the frontend with new modals for creating locations, lodging, transportation, notes, and checklists. - Updated the backend to handle itinerary item creation and reordering with appropriate permissions. - Improved data handling for unscheduled items and their association with the itinerary. - Added new dependencies to the frontend for enhanced functionality. commit 8890dd70b85efa90964410ebffc4c007bd4b3842 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 16 17:30:00 2025 -0500 feat: add compact display option to LocationCard and enhance lodging filtering in CollectionItineraryPlanner commit 71ab14da5284dab9f9d713ced8856c38284e02f6 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 16 16:50:59 2025 -0500 feat: add overnight lodging indicator and functionality to CollectionItineraryPlanner commit 8ea98795a9a442346bc2016223c9035c98278871 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 16 12:32:51 2025 -0500 feat: implement itinerary planning feature with CollectionItineraryPlanner component and related updates commit c6f728a47b9a904448c3f0992b4fa5208358b477 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 16 11:19:39 2025 -0500 fix: update appVersion to v0.12.0-pre-dev-121625 commit 682dc1abe8b084012ef62ecd297de826c3cbf958 Author: Sean Morley <mail@seanmorley.com> Date: Tue Dec 16 11:19:05 2025 -0500 fix: update LocationCard props and enhance restore data functionality - Changed the user prop to null in LocationCard component on the dashboard page. - Added isRestoring state to manage loading state during data restoration in settings. - Updated the restore button to show a loading spinner when a restore operation is in progress. commit eaac14a6f575324cc774624ab78a1096ed11992b Author: Sean Morley <mail@seanmorley.com> Date: Mon Dec 15 10:01:06 2025 -0500 feat: implement social signup controls and update documentation for new environment variables commit 0a9a6b8b3284d7f07eb654cb083453da4b4b0134 Author: Sean Morley <mail@seanmorley.com> Date: Sun Dec 14 17:01:41 2025 -0500 fix: update appVersion to v0.11.0-main-121425 and enhance socialProviders handling in settings page commit 2fbdc9ccea90879f6a4d5df66f09fde42d5d97e1 Author: Sean Morley <mail@seanmorley.com> Date: Sun Dec 14 16:51:19 2025 -0500 Fixes #511 commit 1eff5fd82bd05e418942380f8ce6fd5457aa96a3 Author: Sean Morley <mail@seanmorley.com> Date: Sun Dec 14 16:32:33 2025 -0500 feat: add Advanced Configuration documentation with optional environment variables commit c176beeada19925756d291a90a2b7edce507cc7d Author: Sean Morley <mail@seanmorley.com> Date: Sun Dec 14 16:28:12 2025 -0500 fix: handle email verification required case during signup Updated the signup action to return a specific message when the backend responds with a 401 status, indicating that the signup succeeded but email verification is required. This allows the frontend to display the appropriate message using an i18n key. commit bdb2d5418832c6d6dde2715689913067e9ed3e05 Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 13 11:04:04 2025 -0500 Update COUNTRY_REGION_JSON_VERSION to v3.0 and modify state ID generation to use ISO2 code commit c96b13ea8d5c3b8cb56ff9090c98a030fcaaa4f1 Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 13 10:59:55 2025 -0500 Add ClusterMap integration for regions and cities with fit-to-bounds functionality commit 725fec30ebff028a3c81447ad53c9a5ec67bfe9a Author: Sean Morley <mail@seanmorley.com> Date: Sat Dec 13 10:41:37 2025 -0500 Fixes [REQUEST] Email-based auto-linking for OIDC Fixes #921 * Add new itinerary feature and highlight community milestone of 1 million Docker image downloads * Add to the list of contributors in README.md
14 KiB
AdventureLog: Development Timeline & Origin Story
By: Sean Morley, Founder & Lead Developer
This is the timeline of how AdventureLog came to be, how it kept surviving my terrible early design choices, and how it slowly learned to be useful. I wrote this as a detailed, phase-by-phase story so contributors, users, and future-me can see what decisions were made, why, and what problems we hit (and fixed) along the way.
TL;DR: started as NextVenture, learned web dev the hard way, resurrected as AdventureLog, switched stacks twice, survived an chaotic Reddit launch, grew through community requests, and today the project is very much alive.
Quick roadmap
- Phase 0 — Ideation & Prototyping: March 2023 → July 2023
The seed. Lots of learning, lots of scrapped prototypes. - Phase 1 — AdventureLog, SvelteKit roots: March 2024 → July 2024
Frontend-first, local-storage MVP, severe Docker struggles, file storage chaos, MinIO pain. - Phase 2 — Django saves the day: July 2024 → August 2024
Backend matured quickly; REST API, Django admin, file storage sanity. - Phase 3 — Definition, Community Growth, and Integrations: Sept 2024 → June 2025
Feature solidification, sharing, world data, Immich integration, big UX decisions. - Phase 4 — Solidification & Expansion: June 2025 → Present
UI rebuild, rename of core concepts, activities/trails, heavy QoL and performance work.
Phase 0 — Initial Ideation and Prototyping
Dates: March 2023 — July 2023
This phase was basically me being excited, naive, and wildly optimistic.
What I planned
- Start as NextVenture: a curated list of national parks, cities, landmarks — places people check off. Simple premise, obvious joy.
- A focus on letting users mark where they've been, build a list of places to visit, and keep a little travel log.
What actually happened
- I was learning the React / Node / Express (MERN) stack on the fly. Every problem felt like a mountain and every mountain required rewriting whole parts of the codebase once I learned better practices (it was not that enjoyable to be honest).
- I produced multiple small prototypes, each progressively less terrible than the last. Progress! But also lots of “why did I do that” moments.
- Burnout + humility set in: I needed a break to learn fundamentals rather than pile band-aids on a shaky codebase (yeah I didn't really learn a lot during that break either, but at least I wasn't actively writing bad code).
Small but important pivots
- While on break I renamed the project to AdventureLog — it felt better, cleaner, and more fitting than the working title.
- I played with tiny experiments, tested UI ideas, and tried different stacks mentally so the next attempt wouldn’t be purely guesswork. I was very intrested in the project just lacking the right technical foundation.
Takeaway
Phase 0 was less about shipping and more about surviving the learning curve. The project’s DNA (places, visits, memories) was clear; I just needed the right tools and patience to implement it.
Phase 1 — Initial Development of AdventureLog (SvelteKit era)
Dates: March 2024 — July 2024
Versions: v0.1.0-alpha → v0.3.1
This was the “frontend-first, learn-by-doing” era. SvelteKit won me because it’s delightful to write and let me prototype fast. I still use SvelteKit for the frontend today and love it.
Core progress
- Built a single-page app MVP where adventures were stored in localStorage. Simple, demoable, and enough to prove the concept.
- Learned SvelteKit app structure, routing, and how to think in reactive UI.
Auth and backend beginnings
- Implemented authentication with Lucia so users could create accounts and persist data beyond local storage. That transition felt like leveling up.
- Switched from local-only to a backend API using SvelteKit’s API routes to centralize storage and multi-device access.
Deployment & DevOps pain
- Began containerizing everything: Dockerfiles (frontend & backend),
docker-compose, and env variables. Took days of hair-pulling but I got a reliably deployable container. Victory was greatly needed at this point. - File uploads became a major sticking point: SvelteKit had no baked-in file handling story. I experimented with a self-hosted S3-compatible solution — MinIO. It worked, but felt hacky: extra moving parts, weird integration edges, and a general “this isn’t elegant” feeling. I pretty much knew at this point I was walking down a dead-end path...
Major decision to pivot
- The MinIO + SvelteKit upload situation (and the need for a more robust API/admin story) made me decide to rewrite the backend in Django. I started the backend from scratch with a fresh project layout and a clearer architecture plan. This felt like ripping off a bandage: painful but necessary.
Lessons learned
- Rapid frontend iteration is fantastic for shaping UX, but for persistent data and file handling, I needed a backend that provided batteries-included features (auth, file storage, admin) — enter Django.
Phase 2 — Django Backend & Early Stability
Dates: July 2024 — August 2024
Versions: v0.4.0 → v0.6.0
After the SvelteKit experiment I rewired the backend into Django + Django REST Framework. This phase is where the project matured technically in a big way.
Why Django?
- Django’s admin, built-in auth, and mature file handling made life dramatically easier. I could iterate on the API fast and manage the DB through a UI when debugging or testing. Django REST Framework allowed a clean separation between API and frontend.
What changed (notably)
- Reused frontend SvelteKit components where possible, but the API endpoints were completely reworked to talk to Django.
- Switched file uploads from MinIO to Django’s file storage on the server filesystem — simpler and, honestly, a relief.
- Introduced collections, lodgings, notes, checklists — broadening the scope beyond “just places” into trip planning and trip context. (Restaurants were later pruned and replaced with transportation models for better clarity.)
Stability and schema work
- One big database change (v0.5.1): I switched primary keys to UUIDs instead of auto-incrementing integers. That was scary but intentional: UUIDs make merging and scaling safer later on. Happily, it was done early — before many users existed — which avoided painful migrations later.
Community & launch
- I drafted a release post for r/selfhosted and decided to ship before college started. On August 15, 2024 I posted it, and it blew up more than I dared hope: ~400 upvotes, 180+ comments, and a surge of installs and conversations. The repo got a large influx of attention and traffic, the kind of validation that keeps a project alive through times of doubt.
Immediate aftermath
- I spent the next week triaging issues, helping users deploy, and shipping fixes. It was a stressful but extremely educational crunch while simultaneously moving to college. That crunch was intense, but it was also the moment I learned how real user feedback shapes a project’s priorities.
Takeaway
Switching to Django was the right move, it reduced friction, sped up backend feature development, and made the application more maintainable.
Phase 3 — Defining AdventureLog & Community-Guided Growth
Dates: September 2024 — June 2025
Versions: v0.7.0 → v0.10.0
This phase is about defining the product: what is AdventureLog, what is it not, and how do we make it useful for other people?
Core feature evolution
- Multiple visits per location: Users wanted to track repeat trips to the same place. Adding visit history became central to the data model.
- Collection sharing & permissions: Collections could be shared with other accounts for collaborative trip planning, implementing the permission logic here was fiddly and involved a lot of debugging. But once it worked, collaboration felt genuinely useful.
- World travel data: Initially we were manually entering countries and regions. A generous contributor pointed to a JSON dataset with countries/regions/cities - integrating that made world travel features robust and maintainable. (City support came later.)
- Categories & tags: After debating categories vs tags, we leaned into categories as the primary organizational mechanism (with tags available as flexible metadata). Later, custom categories were added so users could create their own classification schemes.
UX polish & identity
- Logo: I swapped out the placeholder Windows map emoji for a proper logo designed by a friend (thanks, Jacob!). It made the app look more “real” and brandable.
- Localization: Frontend got translations to make AdventureLog accessible to more users.
- Calendar view: added a calendar to visualize trips over time, another highly requested feature.
Integrations & polish
- Immich integration (huge win): Sync photos from Immich to AdventureLog adventures. This solved the “where do my travel photos live?” problem for many self-hosters and reduced friction for users who already had an Immich instance.
- Backend optimizations: performance tweaks, PWA support, OIDC support for enterprise-friendly auth, and other server configurability options.
Community milestones
- Docker image downloads crossed 100K — a concrete, surreal milestone. GitHub stars crossed 1K shortly after. These numbers matter because they mean people are using and relying on AdventureLog.
- Collections received “smart recommendations” — algorithmic suggestions for new locations to add to a collection based on existing entries. This added a bit of discovery and delight.
Ops & deployment improvements
- Simplified deployment by removing an extra Nginx container. Instead the backend serves media via an internal Nginx proxy. Fewer containers made deployment easier for hobbyist hosts.
Takeaway
Phase 3 is where AdventureLog stopped being “my little project” and started becoming a community-shaped tool. The roadmap was heavily guided by user requests, and that made the app both more useful and more fun to build.
Phase 4 — Solidification & Expansion of the Core Platform
Dates: June 2025 — Present
Versions: v0.11.0 → Present
Now the project focuses on polish, robustness, and expanding the core platform rather than constantly changing directions.
Primary themes
- Solidifying core UX: a major UI rebuild to improve accessibility, usability, and cohesion. The goal was not only to look nicer but to make features easier to discover and use.
- Expanding travel tracking & trip planning: deeper integrations, better activity support, and more ways to view and interact with your travel history.
Notable changes & features
- Rename: “adventures” → “locations”: This semantic pivot helped clarify the data model. A location is a place that can have multiple visits; collections are groups of locations for trip planning. The rename reduced user confusion and aligned the product to real-world mental models.
- Activities & Trails:
- Activities: connect visits to activity providers (e.g., Strava imports) so users can show what they did at a location — not just that they were there.
- Trails: link trail data either via a URL or by integrating with self-hosted platforms (like Wanderer). This enriches the outdoor-adventure use case.
- File attachments & broader media options: allow PDFs and other travel documents to be attached to locations/visits.
- Server configurability & geocoding: more options for self-hosted operators, plus an optional Google Maps integration for geocoding.
- New Itineraries: a reimagined trip planning experience that focuses on day-by-day plans rather than just collections of locations. Uses a drag-and-drop interface for easy itinerary building.
Ongoing priorities
- Performance tuning and bug fixes continue to be the top priority — the fewer regressions, the more people trust the app.
- Accessibility improvements, better testing, and expanding integrations in a way that doesn’t bloat the core experience.
Major community milestones
- Docker image downloads crossed 1 Million — a huge milestone that reflects sustained interest and usage.
Takeaway
This phase is about turning AdventureLog from “a promising tool” into “a dependable tool.” It’s less about big rewrites and more about incremental, meaningful improvements.
Lessons, patterns, and a few thoughts
-
Pick the right tool for the job
- The SvelteKit prototype phase taught me how fast UI iteration can progress. The Django rewrite taught me you can’t ignore backend primitives (auth, file handling, admin) if you want to ship a stable self-hosted app. Each stack had strengths, use them where they matter.
-
Community feedback is gold
- The Reddit launch pushed the project into real usage. Responding to issues and user requests shaped core features more than any design doc ever could.
-
Keep breaking changes reasonable
- UUIDs as primary keys were scary, but doing it early saved headaches. Plan big breaking changes early; avoid them once people rely on your software.
-
Simplicity wins in deployment
- Removing extra containers and simplifying deployment options made AdventureLog more approachable for hobbyist hosts — which is the core audience.
-
Iterate visibly
- Small, visible wins (better login flow, calendar, Immich sync) build momentum and community trust.
Current state & what’s next
AdventureLog is alive, maintained, and focused on being the best self-hosted travel app it can be: accessible, performant, and useful for trip planning and personal travel history.
Writing this made me realize how much of AdventureLog’s identity came from mistakes, feedback, and stubbornness. It’s the result of learning, throwing away things that didn’t work, embracing tools that did, and listening to people who actually used it. I’m proud of how it’s evolved and excited for the next phase.
If you made it this far: thanks. If you want to help — issues, PRs, ideas, or design feedback are always welcome. The project is alive because of an amazing community of users and contributors!
— Sean