DashApps.app Migration#
Create one Obsidian vault and one Hugo website for all apps. Start with a new DashApps landing page and copies of the GenDash and GPSDash content. Keep both existing websites live throughout the transition.
This is a plan; unchecked tasks have not been completed or verified. Proposed names and paths below can be adjusted before implementation.
1. Confirm the destination and record the starting point#
- 1.1 Confirm the main domain: dashapps.app.
- 1.2 Confirm the existing GenDash domain: gendash.app.
- 1.3 Record the current GenDash and GPSDash setup from the actual systems; the September GPSDash scaffold note may no longer describe everything.
- 1.3.1 Record each local vault path, current branch, and working-tree status.
- 1.3.2 Record each vault’s GitHub repository, visibility, and default branch.
- 1.3.3 Record each HP1Docker site folder and whether it is a Git checkout; record its remote if present.
- 1.3.4 For each Cloudflare Pages project, record the project name, connected GitHub repository, production branch, build command, and output folder.
- 1.3.5 For each app, verify the custom domain attached to its Pages project and record the public URL. Record any additional hostname or redirect configuration that affects the site.
- 1.3.6 Record GenDash’s publishing scripts and schedules on the Mac and HP1Docker, including the times and host timezone.
- 1.3.7 Record GPSDash’s publishing scripts and schedules on the Mac and HP1Docker; explicitly record when no scheduled job exists.
1.3 Starting-point inventory (checked 2026-10-08)#
Verified from the current local checkouts, publishing scripts, GitHub repository search, and read-only checks on HP1Docker (10.1.2.202):
| Area | GenDash | GPSDash |
|---|---|---|
| Local Obsidian vault | /Users/marc/Obsidian/GenDash; main tracks origin/main; clean when checked |
/Users/marc/Obsidian/GPSDash; main tracks origin/main; clean when checked |
| Vault GitHub repository | Private marcoue/Obsidian-GenDash.app, default branch main |
Private marcoue/Obsidian-GPSDash.app, default branch main |
| HP1Docker folder | /home/marc/hugo/gendash; Git remote is marcoue/GenDash.app |
/home/marc/hugo/gpsdash; this folder currently has no Git repository |
| Website-source publishing | The former Mac pushgen workflow and local script were removed on 2026-10-09. The server-side publisher still pushes to marcoue/GenDash.app. |
The former Mac pushgps workflow and local script were removed on 2026-10-09. |
| Observed schedule | Mac Studio GenDash entries at 12:10 and 20:10 were removed on 2026-10-09; HP1Docker still runs publish-hugo-gendash.sh daily at 12:15 and 20:15 (host local time) |
No GPSDash job appeared in either the Mac Studio crontab or HP1Docker crontab; the local workflow was removed on 2026-10-09 |
| Public domain | https://gendash.app/ responded during the check; Pages attachment was confirmed by the user |
https://gpsdash.app/; Pages attachment was confirmed by the user |
The user confirmed the Cloudflare project and domain details are recorded and complete. The exact values were not provided in this note.
- 1.4 Back up both local vaults and both server projects, including unpublished work. Save the current deployment settings and a list of public page URLs.
- 1.5 Agree that the old vaults, repositories, Pages projects, domains, and publishing routines stay available during the transition.
2. Chosen structure and publishing routine#
Recommended arrangement:
| Area | Proposed destination |
|---|---|
| Obsidian vault (editable notes and images only) | /Users/marc/Obsidian/DashApps |
Server Hugo project and build workspace on HP1Docker (10.1.2.202) |
/home/marc/hugo/dashapps |
| Obsidian vault GitHub repository | marcoue/Obsidian-DashApps.app (private) |
| Hugo website source GitHub repository | Private marcoue/DashApps.app; empty repository, connected to the server project |
| Cloudflare Pages project | dashapps — confirm availability |
| Main landing page | https://dashapps.app/ |
| GenDash section | https://dashapps.app/gendash/ |
| GPSDash section | https://dashapps.app/gpsdash/ |
| Existing GenDash domain after transition | gendash.app → https://dashapps.app/gendash/ |
| Existing GPSDash domain after transition | gpsdash.app → https://dashapps.app/gpsdash/ |
| Future apps | https://dashapps.app/<app-name>/ |
Recommended routine: edit notes and images in the local Obsidian vault → sync them to the server → convert and build on the server → push the Hugo website source and generated content to GitHub → Cloudflare builds and publishes. The server owns the Hugo project, conversion, and build process; the local vault never contains Hugo files. Keep the vault backup repository separate from the website source repository.
- 2.1 Confirm this routine: the server owns the Hugo source and prepares each website repository update; Cloudflare owns the public deployment; the server also provides the LAN preview.
- 2.2 Keep English at
/gendash/and/gpsdash/; use/fr/gendash/,/es/gendash/, and equivalent GPSDash paths for translations. Add translated DashApps landing pages at/fr/and/es/. - 2.3 Use editable notes under
Notes/en/gendash/,Notes/en/gpsdash/, and matchingfrandesfolders. Keep each app’s images underImages/gendash/orImages/gpsdash/, with shared assets underImages/shared/. - 2.4 Keep Hugo configuration, layouts, theme, and conversion/build scripts only in the server-side DashApps project and its website source repository. Keep editable notes and images in the local Obsidian vault; generate the Hugo content and image input on the server rather than maintaining two editable copies.
3. Create the local vault and clone the content#
- 3.1 Create
/Users/marc/Obsidian/DashAppsand open it as an Obsidian vault.- 3.1.1 Create
/Users/marc/Obsidian/DashAppsby cloning the empty GitHub repository. - 3.1.2 Verify the local
originfetch and push URLs aregit@github.com:marcoue/Obsidian-DashApps.app.git. - 3.1.3 Open the folder as an Obsidian vault.
- 3.1.1 Create
- 3.2 Copy the public EN, FR, and ES GenDash notes into their new app folders. Copy the matching images.
- 3.3 Repeat for GPSDash. Copy from the editable
Notes/andImages/folders, rather than its generated Hugocontent/copy. - 3.4 Bring over only useful Obsidian preferences. Do not copy old Git history or remotes,
Private/, unrelated working notes, caches, Hugo files, or generated site output into the local DashApps vault. OnlyalwaysUpdateLinksanduseMarkdownLinkswere brought over; attachment location remains deferred to 3.8. - 3.5 Include the existing GenDash and GPSDash DEV sections in the DashApps site. These are app content sections, not temporary staging builds.
- 3.6 Compare the copied files with the originals and record the copy date. Until launch, continue editing the old vaults and deliberately copy any later changes into DashApps.
- 3.7 Copy the five DEV pages for each app in English, French, and Spanish from
Notes/<language>/dev/, including the DEV landing page, Quick Start Guide, User Manual, Contact, and Privacy Policy. - 3.8 Configure the vault’s default attachment location after the content and images have been copied into their app folders.
4. Establish and build the shared Hugo site on the server#
- 4.1 On HP1Docker, create
/home/marc/hugo/dashappsas a separate Hugo project, using the working GenDash project at/home/marc/hugo/gendashas the starting point. Reuse the needed Blowfish configuration, layouts, theme, and styling on the server; do not replace or modify either existing app project. Keep all Hugo files on the server and in the server-side website source repository, never in the local Obsidian vault. - 4.2 Set the site title to DashApps and the production base URL to
https://dashapps.app/. Configure English, French, and Spanish using Hugo’s multilingual setup.
5. Prepare the server-side GitHub repository and publishing process#
- 5.1 Create a separate DashApps website-source repository with a fresh history and connect it to
/home/marc/hugo/dashappson HP1Docker. The privatemarcoue/DashApps.apprepository was empty when created; the server project now has a freshmainbranch and this repository asorigin. Do not connect it to the local Obsidian vault. Leave the existing repositories available. - 5.2.1 The server-side Hugo scaffold and Blowfish theme are already in
/home/marc/hugo/dashappsfrom 4.1. - 5.2.2 Add the adapted conversion/build scripts and generated content inputs needed for Cloudflare builds. Exclude private notes, credentials, device-specific settings, logs, caches, and generated site output such as
public/. Raw synced inputs are ignored under the server project’sinput/; generated app content and images are committed;public/, logs, and Python caches are excluded. - 5.3 Adapt the server-side Markdown/image conversion process for the combined folder structure. Sync editable notes and images from the local vault to the server, and make links resolve within the correct app and language, including pages with identical names such as “Contact”. The server converter writes language/app-specific content and image paths; content-wide link review remains in 6.3.
- 5.4 Provide a reproducible Hugo build command for Cloudflare to run from a fresh website-source checkout. The server publishing process must generate and include the content and image inputs Cloudflare needs before pushing that source revision. The repository README documents
hugo --gc --cleanDestinationDir; Cloudflare is configured withhugoandpublicand completed a production build from GitHub. - 5.5 Create one publishing workflow initiated from the Mac that syncs notes and images to the server, converts them, builds or validates the site there, and pushes the website-source repository to GitHub. Make failures stop the process before it publishes incomplete content. Verified with a content change: the Mac script synced, HP1Docker converted and built, and the new commit pushed to
main. - 5.6 Add a
pushdashalias on the Mac for the publishing workflow and verify it from a fresh terminal. The Mac-side workflow must not require or contain Hugo files. - 5.7 Keep
pushgenandpushgpsavailable during the transition; their publishing scripts and schedules are recorded in 1.3. - 5.8 Verify a fresh website-source checkout builds from the documented command without depending on Mac temporary folders or untracked server-only files. Record the server publishing and build instructions in the website-source repository. Cloudflare successfully built the pushed repository revision using the documented Hugo source and generated content.
6. Migrate app content into the shared site#
- 6.1 Turn each copied app homepage into its section landing page. Keep its manual, Quick Start Guide, privacy policy, contact information, and App Store links within that app’s section.
- 6.2 Add basic working navigation between the app sections and languages, plus clear navigation within each app. Add a Home link after creating the DashApps landing page in section 11; defer visual refinement until after launch.
- 6.3 Update copied links, explicit page URLs, aliases, and language links for the new paths. Check raw HTML links as well as Obsidian wikilinks.
- 6.4 Separate image paths by app, such as
/images/gendash/and/images/gpsdash/, and update references. Check for matching filenames, CSS rules, or scripts that could conflict. - 6.5 Replace GPSDash placeholder text where needed. Review copied contact forms, support details, privacy statements, and external services for accuracy under the shared site.
- 6.6 Preserve and adapt the GPSDash
layouts/dev/list.htmllayout so DEV pages render correctly within the GPSDash section and shared DashApps navigation. - 6.7 Keep each app’s DEV section under its app path:
/gendash/dev/and/gpsdash/dev/, with corresponding French and Spanish paths, such as/fr/gendash/dev/and/es/gpsdash/dev/.
7. Verify the server build and preview setup#
- 7.1 Verify the existing server-side
/home/marc/hugo/dashappsproject is connected to the new website-source repository and that the local Obsidian vault remains separate. - 7.2 Build DashApps on HP1Docker into its own output directory and start a LAN preview on an unused port. Record the preview address.
- 7.3 Verify HP1Docker has everything required by the server publishing workflow. If changes to installed software are needed, handle those separately. The workflow ran with the installed Hugo Extended version and Python conversion script.
- 7.4 Finish the safe preview/publishing setup. The server routine syncs from the vault, converts, validates a Hugo build, commits, and pushes to GitHub; its successful run printed the pushed revision. Still set up the separate LAN preview and ensure its previous output remains available during updates (see 7.2).
- 7.5 Use one server update schedule if desired. Avoid a second routine that independently commits or publishes the same DashApps site.
- 7.6 Confirm the existing GenDash, GPSDash, and other Hugo sites still work.
8. Create the Cloudflare Pages project#
- 8.1 Create a new Pages project connected to the DashApps website-source repository, with
mainas the production branch. Follow Cloudflare’s Hugo guide. Thedashapps-appPages project is connected tomarcoue/DashApps.apponmain. - 8.2 At Cloudflare setup time, record and match the tested Hugo and Blowfish versions. HP1Docker currently verifies Hugo
v0.166.0Extended and the DashApps copy of Blowfishv3.8.0(commit51a361e068b9975c7f1df8e2bb223db03fe49c2b). PinHUGO_VERSION=0.166.0for production and preview builds, confirm the Extended build is available, and verify a Cloudflare build with this pair. Do not change version settings for existing sites.HUGO_VERSION=0.166.0was added, and Cloudflare’s production build succeeded. - 8.3 Set the Hugo build command and output directory (
public) for the website-source repository. Note conversion happens on the server before the repository revision is pushed. Cloudflare is configured with build commandhugoand output directorypublic. - 8.4 Configure production builds for
https://dashapps.app/and preview builds for their preview address. Check that links and images work in both. Production is active atdashapps.app; thepages.devdeployment succeeded. Preview behavior and links/images still need review. - 8.5 Use a development branch and Pages preview deployments for review. Keep unfinished content out of production and verify previews are not indexed.
- 8.6 Prepare
dashapps.appin the correct Cloudflare account and zone. Preserve any existing DNS/email records; confirm Cloudflare nameservers where needed for the apex domain. Cloudflare activated the apex domain for Pages; verify the existing DNS/email records as part of review. - 8.7 After the review passes, attach
dashapps.appthrough Pages custom domains. Confirm HTTPS works; addwwwonly if wanted, with one preferred hostname.dashapps.appis active on the Pages project and SSL is enabled. - 8.8 Keep the old domains attached to their existing sites during the transition. No old Pages projects or custom domains were changed.
9. Review before launch#
- 9.1 Compare every public page and asset with the original sites; confirm nothing was missed in any language.
- 9.2 Test both app sections, manuals, Quick Start Guides, privacy/contact pages, downloads, forms, and App Store links.
- 9.3 Test language switching from inside an app page, search, mobile navigation, light/dark mode, and the 404 page. Ensure search results clearly identify the app.
- 9.4 Check for broken links, missing images, placeholder text, unwanted DEV/private content, and build warnings.
- 9.5 Check page titles, descriptions, canonical URLs, language equivalents, sitemap, and robots settings. Decide how duplicate pages on the old and new sites will identify the preferred URL once DashApps launches.
- 9.6 Create an old-to-new URL list for every page and language. For example, an old French GenDash manual should lead to its matching
/fr/gendash/…page, not the English homepage. - 9.7 Record a rollback procedure: restore the previous DashApps deployment or Git revision, and continue using the unchanged old sites if a launch issue appears.
- 9.8 Build and review the GenDash and GPSDash DEV landing pages and all translated DEV pages at their new paths. Confirm they are included in the site and remain separate from the regular app pages.
10. Launch while keeping the old sites live#
- 10.1 Copy any content changes made since the first clone, then run the final review again.
- 10.2 Publish the reviewed version to DashApps and confirm the domain, HTTPS, canonical URLs, sitemap, and all app/language paths.
- 10.3 Declare the DashApps vault the primary editing source from this point. Keep the old sites live, but avoid independent content edits; deliberately mirror essential updates until redirects are enabled.
- 10.4 Add a simple “Our apps now live at DashApps” link on the old sites while their content remains accessible.
- 10.5 Update App Store website, support, and privacy URLs for each app when ready. Update links inside the apps, support materials, and other public profiles as appropriate.
- 10.6 Add the new site and sitemap to the search tools already used, and review broken links, contact delivery, and deployment failures during the transition.
- 10.7 Save a working launch revision and update the related Hugo notes with the final paths, repositories, domains, and publishing routine.
11. After launch: refine the DashApps presentation#
Start these design tasks after the content migration is complete and DashApps is live. Launch the migrated app sections first; create the DashApps landing page and visual identity in this phase.
- 11.1 Create the DashApps landing page with an introduction and one designed card per app, including its icon, description, and link. Translate it into French and Spanish.
- 11.2 Create a DashApps logo and favicon while retaining each app’s identity within its section.
- 11.3 Refine shared navigation and the visual presentation of each app section.
12. Later: finish the transition#
Only start this phase after DashApps is stable. The intended end state is to keep the old domains and their redirects, while removing the old vaults, repositories, Pages projects, and server site files.
- 12.1 Choose the redirect date after checking that important links and app releases point to the new site.
- 12.2 Configure permanent redirects so
gendash.apppoints tohttps://dashapps.app/gendash/andgpsdash.apppoints tohttps://dashapps.app/gpsdash/. Preserve matching deep paths where possible, using the reviewed URL list. - 12.3 Test homepages, deep links, language paths, images, and query strings. Avoid redirect loops and sending every old page to the main landing page.
- 12.4 Move each redirect to a Cloudflare rule that continues working without the old Pages project. Verify both domains redirect correctly over HTTPS, including deep links.
- 12.5 Save final backups of the old vaults, repositories, server folders, and Cloudflare settings. Confirm the backups can be opened and identify where they are stored.
- 12.6 Disable the old content-publishing schedules and confirm they no longer run.
- 12.7 Remove the
pushgen,pullgen,pushgps, andpullgpsaliases and their local scripts. The Mac Studio GenDash cron entries were removed on 2026-10-09; no backup was retained. - 12.8 Turn off auto-renew for the two old GenDash and GPSDash Cloudflare Pages projects, if enabled. Keep the domains registered and the redirect rules active.
- 12.9 Delete the local
/Users/marc/Obsidian/GenDashand/Users/marc/Obsidian/GPSDashvault folders after the new DashApps vault contains the content and the final backups are verified. - 12.10 Delete the old GenDash and GPSDash GitHub repositories after confirming the DashApps repository contains the published source and the final backups are verified.
- 12.11 Remove the old GenDash and GPSDash custom domains from their Pages projects, then delete those two Pages projects. Keep the domains registered, their DNS zones, and the working redirect rules.
- 12.12 Delete only the old GenDash and GPSDash Hugo project folders and generated site files on HP1Docker (
10.1.2.202). Verify the exact paths first; keep/home/marc/hugo/dashappsand every unrelated site intact. - 12.13 Confirm both old domains still redirect and the DashApps site still builds after cleanup. Retain the final backups for rollback or reference.
- 12.14 Document how to add the next app: create its language folders and images, add its landing-page card, review, and publish through the same routine.