Rename AdventureLog to Voyage and add fork attribution

- Replace all AdventureLog references with Voyage across ~102 files
  (7 case variants: AdventureLog, adventurelog, Adventurelog, ADVENTURELOG,
  AdventUrelog, AdventureLOG, adventure-log, adventure_log)
- Rename brand, static, and documentation assets to use voyage naming
- Rename install_adventurelog.sh → install_voyage.sh
- Update README.md and voyage_overview.md to credit AdventureLog as
  the upstream project and Sean Morley as its original creator
This commit is contained in:
2026-03-06 11:05:26 +00:00
parent 2b644d3afa
commit df8d1adf15
151 changed files with 653 additions and 658 deletions

View File

@@ -196,6 +196,6 @@ admin.site.register(Activity, ActivityAdmin)
admin.site.register(CollectionItineraryItem, CollectionItineraryItemAdmin)
admin.site.register(CollectionItineraryDay)
admin.site.site_header = 'AdventureLog Admin'
admin.site.site_title = 'AdventureLog Admin Site'
admin.site.index_title = 'Welcome to AdventureLog Admin Page'
admin.site.site_header = 'Voyage Admin'
admin.site.site_title = 'Voyage Admin Site'
admin.site.index_title = 'Welcome to Voyage Admin Page'

View File

@@ -129,7 +129,7 @@ def _infer_addresstype(type_):
def search_osm(query):
try:
url = f"https://nominatim.openstreetmap.org/search?q={query}&format=jsonv2"
headers = {'User-Agent': 'AdventureLog Server'}
headers = {'User-Agent': 'Voyage Server'}
response = requests.get(url, headers=headers, timeout=(2, 5))
response.raise_for_status()
data = response.json()
@@ -370,7 +370,7 @@ def reverse_geocode(lat, lon, user):
def reverse_geocode_osm(lat, lon, user):
url = f"https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat={lat}&lon={lon}"
headers = {'User-Agent': 'AdventureLog Server'}
headers = {'User-Agent': 'Voyage Server'}
connect_timeout = 1
read_timeout = 5

View File

@@ -481,7 +481,7 @@ class CollectionViewSet(viewsets.ModelViewSet):
collection = self.get_object()
export_data = {
'version': getattr(settings, 'ADVENTURELOG_RELEASE_VERSION', 'unknown'),
'version': getattr(settings, 'VOYAGE_RELEASE_VERSION', 'unknown'),
# Omit export_date to keep template-friendly exports (no dates)
'collection': {
'id': str(collection.id),

View File

@@ -17,7 +17,7 @@ class GenerateDescription(viewsets.ViewSet):
# User-Agent header required by Wikipedia API, Accept-Language patched in per request
BASE_HEADERS = {
'User-Agent': f'AdventureLog/{getattr(settings, "ADVENTURELOG_RELEASE_VERSION", "unknown")}'
'User-Agent': f'Voyage/{getattr(settings, "VOYAGE_RELEASE_VERSION", "unknown")}'
}
DEFAULT_LANGUAGE = "en"
LANGUAGE_PATTERN = re.compile(r"^[a-z0-9-]{2,12}$", re.IGNORECASE)

View File

@@ -41,7 +41,7 @@ class BackupViewSet(viewsets.ViewSet):
# Build export data structure
export_data = {
'version': settings.ADVENTURELOG_RELEASE_VERSION,
'version': settings.VOYAGE_RELEASE_VERSION,
'export_date': datetime.now().isoformat(),
'user_email': user.email,
'user_username': user.username,
@@ -390,7 +390,7 @@ class BackupViewSet(viewsets.ViewSet):
# Return ZIP file as response
with open(tmp_file.name, 'rb') as zip_file:
response = HttpResponse(zip_file.read(), content_type='application/zip')
filename = f"adventurelog_backup_{user.username}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.zip"
filename = f"voyage_backup_{user.username}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.zip"
response['Content-Disposition'] = f'attachment; filename="{filename}"'
# Clean up

View File

@@ -198,7 +198,7 @@ class ContentImageViewSet(viewsets.ModelViewSet):
return Response({"error": result}, status=status.HTTP_400_BAD_REQUEST)
try:
headers = {'User-Agent': 'AdventureLog/1.0 (Image Proxy)'}
headers = {'User-Agent': 'Voyage/1.0 (Image Proxy)'}
max_redirects = 3
current_url = image_url

View File

@@ -14,7 +14,7 @@ class RecommendationsViewSet(viewsets.ViewSet):
permission_classes = [IsAuthenticated]
OVERPASS_URL = "https://overpass-api.de/api/interpreter"
NOMINATIM_URL = "https://nominatim.openstreetmap.org/search"
HEADERS = {'User-Agent': 'AdventureLog Server'}
HEADERS = {'User-Agent': 'Voyage Server'}
# Quality thresholds
MIN_GOOGLE_RATING = 3.0 # Minimum rating to include

View File

@@ -1,5 +1,5 @@
"""
AdventureLog Server settings
Voyage Server settings
Reference:
- Django settings: https://docs.djangoproject.com/en/stable/ref/settings/
@@ -235,7 +235,7 @@ AUTH_USER_MODEL = 'users.CustomUser'
ACCOUNT_ADAPTER = 'users.adapters.CustomAccountAdapter'
INVITATIONS_ADAPTER = ACCOUNT_ADAPTER
INVITATIONS_ACCEPT_INVITE_AFTER_SIGNUP = True
INVITATIONS_EMAIL_SUBJECT_PREFIX = 'AdventureLog: '
INVITATIONS_EMAIL_SUBJECT_PREFIX = 'Voyage: '
SOCIALACCOUNT_ADAPTER = 'users.adapters.CustomSocialAccountAdapter'
ACCOUNT_SIGNUP_FORM_CLASS = 'users.form_overrides.CustomSignupForm'
@@ -365,10 +365,10 @@ LOGGING = {
# ---------------------------------------------------------------------------
PUBLIC_URL = getenv('PUBLIC_URL', 'http://localhost:8000')
# ADVENTURELOG_CDN_URL = getenv('ADVENTURELOG_CDN_URL', 'https://cdn.adventurelog.app')
# VOYAGE_CDN_URL = getenv('VOYAGE_CDN_URL', 'https://cdn.voyage.app')
# Major release version of AdventureLog, not including the patch version date.
ADVENTURELOG_RELEASE_VERSION = 'v0.12.0'
# Major release version of Voyage, not including the patch version date.
VOYAGE_RELEASE_VERSION = 'v0.12.0'
# https://github.com/dr5hn/countries-states-cities-database/tags
COUNTRY_REGION_JSON_VERSION = 'v3.0'

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
Periodic sync runner for AdventureLog.
Periodic sync runner for Voyage.
Runs sync_visited_regions management command every 60 seconds.
Managed by supervisord to ensure it inherits container environment variables.
"""

View File

@@ -3,10 +3,10 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="AdventureLog API Server" />
<meta name="description" content="Voyage API Server" />
<link rel="icon" href="/static/favicon.png" />
<meta name="author" content="Sean Morley" />
<title>AdventureLog API Server</title>
<title>Voyage API Server</title>
<!-- Bootstrap 5 CSS -->
<link
@@ -66,7 +66,7 @@
<!-- Navbar -->
<nav class="navbar navbar-expand-lg">
<div class="container">
<a class="navbar-brand" href="/">AdventureLog API</a>
<a class="navbar-brand" href="/">Voyage API</a>
<button
class="navbar-toggler"
type="button"
@@ -81,7 +81,7 @@
<li class="nav-item">
<a
class="nav-link"
href="http://adventurelog.app"
href="http://voyage.app"
target="_blank"
>
Documentation
@@ -90,7 +90,7 @@
<li class="nav-item">
<a
class="nav-link"
href="https://github.com/seanmorley15/AdventureLog"
href="https://github.com/seanmorley15/Voyage"
target="_blank"
>
Source Code
@@ -107,7 +107,7 @@
<!-- Hero Section -->
<div class="hero">
<div class="container">
<h1><i class="bi bi-map"></i> AdventureLog API</h1>
<h1><i class="bi bi-map"></i> Voyage API</h1>
<p>
The backend powering your travels — flexible, powerful, and open
source.
@@ -149,11 +149,11 @@
<footer class="text-center text-muted py-4">
Open source with ❤️ by
<a href="https://seanmorley.com" target="_blank">Sean Morley</a> • View on
<a href="https://github.com/seanmorley15/AdventureLog" target="_blank"
<a href="https://github.com/seanmorley15/Voyage" target="_blank"
>GitHub</a
>
<a href="https://adventurelog.app" target="_blank">adventurelog.app</a>
<a href="https://voyage.app" target="_blank">voyage.app</a>
</footer>
<!-- Bootstrap JS -->

View File

@@ -1,7 +1,7 @@
{% extends "base.html" %} {% block content %}
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron">
<h1>AdventureLog API Server</h1>
<h1>Voyage API Server</h1>
<p>
<a class="btn btn-primary btn-lg" href="/admin" role="button">Admin Site</a>
<a

View File

@@ -4,7 +4,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Youre Invited to AdventureLog</title>
<title>Youre Invited to Voyage</title>
<style>
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
@@ -65,29 +65,29 @@
<body>
<div class="container">
<img
src="https://adventurelog.app/adventurelog.png"
alt="AdventureLog"
src="https://voyage.app/voyage.png"
alt="Voyage"
class="logo"
/>
<h1>Youre Invited to AdventureLog</h1>
<h1>Youre Invited to Voyage</h1>
<p>Hello <strong>{{ email }}</strong>,</p>
<p>
Adventure awaits! You've been invited to join
<span class="highlight">AdventureLog</span>, the ultimate travel
<span class="highlight">Voyage</span>, the ultimate travel
companion to track, plan, and collaborate on your journeys.
</p>
<p>Hit the button below to accept your invitation and start exploring!</p>
<p><a href="{{ invite_url }}" class="button">Join AdventureLog</a></p>
<p><a href="{{ invite_url }}" class="button">Join Voyage</a></p>
<div class="footer">
Youre receiving this email because someone invited you to join
AdventureLog.<br />
Voyage.<br />
If you werent expecting this invitation, you can safely ignore this
email.<br /><br />
© 20232026 AdventureLog
© 20232026 Voyage
</div>
</div>
</body>