camply-web 2.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. camply_web-2.8.0/.gitignore +89 -0
  2. camply_web-2.8.0/.python-version +1 -0
  3. camply_web-2.8.0/LICENSE +133 -0
  4. camply_web-2.8.0/PKG-INFO +67 -0
  5. camply_web-2.8.0/README.md +30 -0
  6. camply_web-2.8.0/build/frontend-manifest.json +447 -0
  7. camply_web-2.8.0/docs/.vitepress/config.ts +156 -0
  8. camply_web-2.8.0/docs/.vitepress/theme/BackToApp.vue +60 -0
  9. camply_web-2.8.0/docs/.vitepress/theme/Layout.vue +20 -0
  10. camply_web-2.8.0/docs/.vitepress/theme/index.ts +8 -0
  11. camply_web-2.8.0/docs/.vitepress/theme/style.css +196 -0
  12. camply_web-2.8.0/docs/CHECKLIST.md +240 -0
  13. camply_web-2.8.0/docs/CONTRIBUTING.md +232 -0
  14. camply_web-2.8.0/docs/PLAN.md +132 -0
  15. camply_web-2.8.0/docs/architecture/ARCHITECTURE_DEEP_DIVE.md +89 -0
  16. camply_web-2.8.0/docs/architecture/DESIGN_API.md +226 -0
  17. camply_web-2.8.0/docs/architecture/DESIGN_DATA.md +148 -0
  18. camply_web-2.8.0/docs/architecture/DESIGN_FRONTEND.md +151 -0
  19. camply_web-2.8.0/docs/architecture/DESIGN_NOTIFICATIONS.md +115 -0
  20. camply_web-2.8.0/docs/architecture/DESIGN_PROVIDERS.md +166 -0
  21. camply_web-2.8.0/docs/configuration.md +43 -0
  22. camply_web-2.8.0/docs/development/AGENT_TROUBLESHOOTING.md +82 -0
  23. camply_web-2.8.0/docs/development/DESIGN_AGENTIC.md +124 -0
  24. camply_web-2.8.0/docs/development/DEVELOPER_GUIDE.md +208 -0
  25. camply_web-2.8.0/docs/development/STYLE_GUIDE.md +50 -0
  26. camply_web-2.8.0/docs/development.md +59 -0
  27. camply_web-2.8.0/docs/images/scan-form-checkin-calendar.png +0 -0
  28. camply_web-2.8.0/docs/images/scan-form-checkout-calendar.png +0 -0
  29. camply_web-2.8.0/docs/images/scan-form-dialog.png +0 -0
  30. camply_web-2.8.0/docs/index.md +22 -0
  31. camply_web-2.8.0/docs/operations/CONFIGURATION.md +271 -0
  32. camply_web-2.8.0/docs/operations/RELEASES.md +180 -0
  33. camply_web-2.8.0/docs/operations/RUNNING.md +141 -0
  34. camply_web-2.8.0/docs/public/assets/camply.svg +17 -0
  35. camply_web-2.8.0/docs/public/branding/camply-horizontal-dark.svg +16 -0
  36. camply_web-2.8.0/docs/public/branding/camply-horizontal.svg +16 -0
  37. camply_web-2.8.0/docs/public/branding/camply-icon-dark.svg +16 -0
  38. camply_web-2.8.0/docs/public/branding/camply-icon.svg +16 -0
  39. camply_web-2.8.0/docs/public/branding/camply-stacked-dark.svg +16 -0
  40. camply_web-2.8.0/docs/public/branding/camply-stacked.svg +16 -0
  41. camply_web-2.8.0/docs/public/camply.svg +17 -0
  42. camply_web-2.8.0/docs/public/favicon.ico +0 -0
  43. camply_web-2.8.0/docs/public/favicon.svg +17 -0
  44. camply_web-2.8.0/docs/reference.md +29 -0
  45. camply_web-2.8.0/docs/self-hosting/containers.md +34 -0
  46. camply_web-2.8.0/docs/self-hosting/standalone.md +49 -0
  47. camply_web-2.8.0/docs/specs/001-checklist-data-layer/checklists/requirements.md +34 -0
  48. camply_web-2.8.0/docs/specs/001-checklist-data-layer/data-model.md +58 -0
  49. camply_web-2.8.0/docs/specs/001-checklist-data-layer/plan.md +66 -0
  50. camply_web-2.8.0/docs/specs/001-checklist-data-layer/quickstart.md +38 -0
  51. camply_web-2.8.0/docs/specs/001-checklist-data-layer/research.md +28 -0
  52. camply_web-2.8.0/docs/specs/001-checklist-data-layer/spec.md +96 -0
  53. camply_web-2.8.0/docs/specs/001-checklist-data-layer/tasks.md +206 -0
  54. camply_web-2.8.0/docs/specs/002-admin-ui/plan.md +206 -0
  55. camply_web-2.8.0/docs/specs/002-admin-ui/spec.md +72 -0
  56. camply_web-2.8.0/docs/specs/002-admin-ui/tasks.md +70 -0
  57. camply_web-2.8.0/docs/specs/003-auth-invite-only/plan.md +17 -0
  58. camply_web-2.8.0/docs/specs/003-auth-invite-only/spec.md +16 -0
  59. camply_web-2.8.0/docs/specs/003-auth-invite-only/tasks.md +12 -0
  60. camply_web-2.8.0/docs/specs/004-frontend-performance/plan.md +13 -0
  61. camply_web-2.8.0/docs/specs/004-frontend-performance/spec.md +16 -0
  62. camply_web-2.8.0/docs/specs/004-frontend-performance/tasks.md +11 -0
  63. camply_web-2.8.0/docs/specs/004-frontend-performance/validation.md +39 -0
  64. camply_web-2.8.0/docs/specs/005-reserve-california/plan.md +21 -0
  65. camply_web-2.8.0/docs/specs/005-reserve-california/review.md +25 -0
  66. camply_web-2.8.0/docs/specs/005-reserve-california/spec.md +22 -0
  67. camply_web-2.8.0/docs/specs/005-reserve-california/tasks.md +11 -0
  68. camply_web-2.8.0/docs/specs/005-reserve-california/validation.md +26 -0
  69. camply_web-2.8.0/docs/specs/006-search-revamp/plan.md +53 -0
  70. camply_web-2.8.0/docs/specs/006-search-revamp/spec.md +38 -0
  71. camply_web-2.8.0/docs/specs/006-search-revamp/tasks.md +29 -0
  72. camply_web-2.8.0/docs/specs/007-usedirect-providers/TODO.md +21 -0
  73. camply_web-2.8.0/docs/specs/007-usedirect-providers/plan.md +14 -0
  74. camply_web-2.8.0/docs/specs/007-usedirect-providers/spec.md +25 -0
  75. camply_web-2.8.0/docs/specs/007-usedirect-providers/tasks.md +10 -0
  76. camply_web-2.8.0/docs/specs/007-usedirect-providers/validation.md +52 -0
  77. camply_web-2.8.0/docs/specs/008-scan-editing/plan.md +17 -0
  78. camply_web-2.8.0/docs/specs/008-scan-editing/spec.md +17 -0
  79. camply_web-2.8.0/docs/specs/008-scan-editing/tasks.md +19 -0
  80. camply_web-2.8.0/docs/specs/009-live-search/plan.md +11 -0
  81. camply_web-2.8.0/docs/specs/009-live-search/spec.md +19 -0
  82. camply_web-2.8.0/docs/specs/009-live-search/tasks.md +20 -0
  83. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/TODO.md +60 -0
  84. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/checklists/requirements.md +41 -0
  85. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/contracts/map-ui-and-configuration.md +55 -0
  86. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/contracts/search-map-api.md +119 -0
  87. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/data-model.md +66 -0
  88. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/plan.md +166 -0
  89. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/quickstart.md +107 -0
  90. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/research.md +67 -0
  91. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/spec.md +162 -0
  92. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/tasks.md +224 -0
  93. camply_web-2.8.0/docs/specs/010-open-source-explore-maps/validation.md +93 -0
  94. camply_web-2.8.0/docs/specs/011-standalone-runtime/checklists/requirements.md +36 -0
  95. camply_web-2.8.0/docs/specs/011-standalone-runtime/checklists/runtime.md +25 -0
  96. camply_web-2.8.0/docs/specs/011-standalone-runtime/contracts/admin-api.md +35 -0
  97. camply_web-2.8.0/docs/specs/011-standalone-runtime/contracts/runtime.md +44 -0
  98. camply_web-2.8.0/docs/specs/011-standalone-runtime/data-model.md +63 -0
  99. camply_web-2.8.0/docs/specs/011-standalone-runtime/plan.md +322 -0
  100. camply_web-2.8.0/docs/specs/011-standalone-runtime/quickstart.md +86 -0
  101. camply_web-2.8.0/docs/specs/011-standalone-runtime/research.md +55 -0
  102. camply_web-2.8.0/docs/specs/011-standalone-runtime/review.md +29 -0
  103. camply_web-2.8.0/docs/specs/011-standalone-runtime/spec.md +119 -0
  104. camply_web-2.8.0/docs/specs/011-standalone-runtime/tasks.md +116 -0
  105. camply_web-2.8.0/docs/specs/012-branding/plan.md +8 -0
  106. camply_web-2.8.0/docs/specs/012-branding/spec.md +14 -0
  107. camply_web-2.8.0/docs/specs/012-branding/tasks.md +10 -0
  108. camply_web-2.8.0/docs/specs/013-map-list-interaction/plan.md +11 -0
  109. camply_web-2.8.0/docs/specs/013-map-list-interaction/spec.md +15 -0
  110. camply_web-2.8.0/docs/specs/013-map-list-interaction/tasks.md +10 -0
  111. camply_web-2.8.0/docs/specs/013-map-list-interaction/validation.md +15 -0
  112. camply_web-2.8.0/docs/specs/014-campsite-alerts/plan.md +17 -0
  113. camply_web-2.8.0/docs/specs/014-campsite-alerts/spec.md +23 -0
  114. camply_web-2.8.0/docs/specs/014-campsite-alerts/tasks.md +19 -0
  115. camply_web-2.8.0/docs/specs/015-release-ci/plan.md +9 -0
  116. camply_web-2.8.0/docs/specs/015-release-ci/spec.md +28 -0
  117. camply_web-2.8.0/docs/specs/015-release-ci/tasks.md +21 -0
  118. camply_web-2.8.0/docs/specs/016-snapshot-gallery/evidence/desktop.png +0 -0
  119. camply_web-2.8.0/docs/specs/016-snapshot-gallery/evidence/mobile.png +0 -0
  120. camply_web-2.8.0/docs/specs/016-snapshot-gallery/evidence/search-navigation.png +0 -0
  121. camply_web-2.8.0/docs/specs/016-snapshot-gallery/evidence/slider.png +0 -0
  122. camply_web-2.8.0/docs/specs/016-snapshot-gallery/plan.md +11 -0
  123. camply_web-2.8.0/docs/specs/016-snapshot-gallery/spec.md +10 -0
  124. camply_web-2.8.0/docs/specs/016-snapshot-gallery/tasks.md +9 -0
  125. camply_web-2.8.0/docs/specs/017-compact-results/plan.md +8 -0
  126. camply_web-2.8.0/docs/specs/017-compact-results/spec.md +20 -0
  127. camply_web-2.8.0/docs/specs/017-compact-results/tasks.md +9 -0
  128. camply_web-2.8.0/docs/specs/018-python-package/checklists/requirements.md +40 -0
  129. camply_web-2.8.0/docs/specs/018-python-package/contracts/installation.md +53 -0
  130. camply_web-2.8.0/docs/specs/018-python-package/data-model.md +20 -0
  131. camply_web-2.8.0/docs/specs/018-python-package/plan.md +302 -0
  132. camply_web-2.8.0/docs/specs/018-python-package/quickstart.md +152 -0
  133. camply_web-2.8.0/docs/specs/018-python-package/research.md +146 -0
  134. camply_web-2.8.0/docs/specs/018-python-package/spec.md +128 -0
  135. camply_web-2.8.0/docs/specs/018-python-package/tasks.md +120 -0
  136. camply_web-2.8.0/docs/specs/019-root-project-layout/checklists/requirements.md +36 -0
  137. camply_web-2.8.0/docs/specs/019-root-project-layout/contracts/deployment.md +64 -0
  138. camply_web-2.8.0/docs/specs/019-root-project-layout/contracts/packaging.md +51 -0
  139. camply_web-2.8.0/docs/specs/019-root-project-layout/data-model.md +51 -0
  140. camply_web-2.8.0/docs/specs/019-root-project-layout/plan.md +243 -0
  141. camply_web-2.8.0/docs/specs/019-root-project-layout/quickstart.md +143 -0
  142. camply_web-2.8.0/docs/specs/019-root-project-layout/research.md +82 -0
  143. camply_web-2.8.0/docs/specs/019-root-project-layout/spec.md +145 -0
  144. camply_web-2.8.0/docs/specs/019-root-project-layout/tasks.md +72 -0
  145. camply_web-2.8.0/docs/specs/020-unified-container/plan.md +55 -0
  146. camply_web-2.8.0/docs/specs/020-unified-container/spec.md +32 -0
  147. camply_web-2.8.0/docs/specs/020-unified-container/tasks.md +44 -0
  148. camply_web-2.8.0/docs/specs/021-helm-chart/evidence/chart-publication-checks.png +0 -0
  149. camply_web-2.8.0/docs/specs/021-helm-chart/plan.md +80 -0
  150. camply_web-2.8.0/docs/specs/021-helm-chart/spec.md +47 -0
  151. camply_web-2.8.0/docs/specs/021-helm-chart/tasks.md +106 -0
  152. camply_web-2.8.0/docs/specs/022-documentation-site/evidence/app-docs.png +0 -0
  153. camply_web-2.8.0/docs/specs/022-documentation-site/evidence/app-footer-mobile.png +0 -0
  154. camply_web-2.8.0/docs/specs/022-documentation-site/evidence/app-footer.png +0 -0
  155. camply_web-2.8.0/docs/specs/022-documentation-site/evidence/desktop.png +0 -0
  156. camply_web-2.8.0/docs/specs/022-documentation-site/evidence/mobile.png +0 -0
  157. camply_web-2.8.0/docs/specs/022-documentation-site/plan.md +27 -0
  158. camply_web-2.8.0/docs/specs/022-documentation-site/spec.md +25 -0
  159. camply_web-2.8.0/docs/specs/022-documentation-site/tasks.md +39 -0
  160. camply_web-2.8.0/docs/specs/index.md +56 -0
  161. camply_web-2.8.0/docs/using-camply.md +25 -0
  162. camply_web-2.8.0/package.json +115 -0
  163. camply_web-2.8.0/pnpm-lock.yaml +8146 -0
  164. camply_web-2.8.0/pnpm-workspace.yaml +52 -0
  165. camply_web-2.8.0/pyproject.toml +261 -0
  166. camply_web-2.8.0/src/camply/__about__.py +18 -0
  167. camply_web-2.8.0/src/camply/__init__.py +1 -0
  168. camply_web-2.8.0/src/camply/cli/__init__.py +1 -0
  169. camply_web-2.8.0/src/camply/cli/__main__.py +6 -0
  170. camply_web-2.8.0/src/camply/cli/healthcheck.py +184 -0
  171. camply_web-2.8.0/src/camply/cli/main.py +235 -0
  172. camply_web-2.8.0/src/camply/cli/nginx/nginx.conf +25 -0
  173. camply_web-2.8.0/src/camply/cli/nginx/server.conf +64 -0
  174. camply_web-2.8.0/src/camply/cli/runtime.py +14 -0
  175. camply_web-2.8.0/src/camply/db/README.md +50 -0
  176. camply_web-2.8.0/src/camply/db/__init__.py +15 -0
  177. camply_web-2.8.0/src/camply/db/alembic.ini +47 -0
  178. camply_web-2.8.0/src/camply/db/availability.py +68 -0
  179. camply_web-2.8.0/src/camply/db/config.py +159 -0
  180. camply_web-2.8.0/src/camply/db/data/__init__.py +0 -0
  181. camply_web-2.8.0/src/camply/db/data/providers.py +112 -0
  182. camply_web-2.8.0/src/camply/db/eligibility.py +37 -0
  183. camply_web-2.8.0/src/camply/db/migration.py +40 -0
  184. camply_web-2.8.0/src/camply/db/migrations/__init__.py +1 -0
  185. camply_web-2.8.0/src/camply/db/migrations/env.py +75 -0
  186. camply_web-2.8.0/src/camply/db/migrations/script.py.mako +33 -0
  187. camply_web-2.8.0/src/camply/db/migrations/versions/067d9d721253_init.py +65 -0
  188. camply_web-2.8.0/src/camply/db/migrations/versions/09367969f1a4_preserve_campsite_details.py +43 -0
  189. camply_web-2.8.0/src/camply/db/migrations/versions/2ac874f9d2ad_indexed_native_campground_search.py +44 -0
  190. camply_web-2.8.0/src/camply/db/migrations/versions/36b6b307eef5_add_checklist_models.py +154 -0
  191. camply_web-2.8.0/src/camply/db/migrations/versions/36dbff1f679f_user_password_credentials.py +44 -0
  192. camply_web-2.8.0/src/camply/db/migrations/versions/4cedc8e5fa20_search.py +58 -0
  193. camply_web-2.8.0/src/camply/db/migrations/versions/4d64e0e4ae18_merge_standalone_delivery_with_current_.py +31 -0
  194. camply_web-2.8.0/src/camply/db/migrations/versions/624a4720b8c3_locations.py +107 -0
  195. camply_web-2.8.0/src/camply/db/migrations/versions/77984a1ae368_merge_checklist_and_access_request.py +29 -0
  196. camply_web-2.8.0/src/camply/db/migrations/versions/8a1b2c3d4e5f_admin_ui.py +99 -0
  197. camply_web-2.8.0/src/camply/db/migrations/versions/9b2c3d4e5f6a_enriched_search.py +134 -0
  198. camply_web-2.8.0/src/camply/db/migrations/versions/9b94e557767a_seed_reservecalifornia_provider.py +67 -0
  199. camply_web-2.8.0/src/camply/db/migrations/versions/__init__.py +1 -0
  200. camply_web-2.8.0/src/camply/db/migrations/versions/access_request.py +46 -0
  201. camply_web-2.8.0/src/camply/db/migrations/versions/d8923fc28e9e_city.py +40 -0
  202. camply_web-2.8.0/src/camply/db/migrations/versions/ea6111bf3bed_seed_verified_usedirect_providers.py +124 -0
  203. camply_web-2.8.0/src/camply/db/migrations/versions/ed55b53b0cda_merge_admin_ui_and_usedirect_providers.py +29 -0
  204. camply_web-2.8.0/src/camply/db/migrations/versions/ef2486672984_notification_outbox.py +79 -0
  205. camply_web-2.8.0/src/camply/db/models/__init__.py +31 -0
  206. camply_web-2.8.0/src/camply/db/models/access_request.py +40 -0
  207. camply_web-2.8.0/src/camply/db/models/admin_audit.py +53 -0
  208. camply_web-2.8.0/src/camply/db/models/base.py +11 -0
  209. camply_web-2.8.0/src/camply/db/models/campgrounds.py +74 -0
  210. camply_web-2.8.0/src/camply/db/models/notification_outbox.py +68 -0
  211. camply_web-2.8.0/src/camply/db/models/providers.py +46 -0
  212. camply_web-2.8.0/src/camply/db/models/recreation_area.py +58 -0
  213. camply_web-2.8.0/src/camply/db/models/scan_results.py +56 -0
  214. camply_web-2.8.0/src/camply/db/models/search.py +693 -0
  215. camply_web-2.8.0/src/camply/db/models/unique_targets.py +98 -0
  216. camply_web-2.8.0/src/camply/db/models/user_scans.py +60 -0
  217. camply_web-2.8.0/src/camply/db/models/users.py +72 -0
  218. camply_web-2.8.0/src/camply/db/search_bounds.py +49 -0
  219. camply_web-2.8.0/src/camply/db/search_maps.py +301 -0
  220. camply_web-2.8.0/src/camply/db/utils.py +31 -0
  221. camply_web-2.8.0/src/camply/providers/__init__.py +35 -0
  222. camply_web-2.8.0/src/camply/providers/base.py +752 -0
  223. camply_web-2.8.0/src/camply/providers/cli.py +58 -0
  224. camply_web-2.8.0/src/camply/providers/dto.py +35 -0
  225. camply_web-2.8.0/src/camply/providers/errors.py +28 -0
  226. camply_web-2.8.0/src/camply/providers/recreation_gov/__init__.py +0 -0
  227. camply_web-2.8.0/src/camply/providers/recreation_gov/config.py +74 -0
  228. camply_web-2.8.0/src/camply/providers/recreation_gov/models/__init__.py +0 -0
  229. camply_web-2.8.0/src/camply/providers/recreation_gov/models/address.py +46 -0
  230. camply_web-2.8.0/src/camply/providers/recreation_gov/models/api.py +110 -0
  231. camply_web-2.8.0/src/camply/providers/recreation_gov/models/campgrounds.py +93 -0
  232. camply_web-2.8.0/src/camply/providers/recreation_gov/models/enums.py +64 -0
  233. camply_web-2.8.0/src/camply/providers/recreation_gov/models/recreation_area.py +86 -0
  234. camply_web-2.8.0/src/camply/providers/recreation_gov/provider.py +505 -0
  235. camply_web-2.8.0/src/camply/providers/usedirect/__init__.py +5 -0
  236. camply_web-2.8.0/src/camply/providers/usedirect/models/__init__.py +1 -0
  237. camply_web-2.8.0/src/camply/providers/usedirect/models/api.py +210 -0
  238. camply_web-2.8.0/src/camply/providers/usedirect/models/metadata.py +27 -0
  239. camply_web-2.8.0/src/camply/providers/usedirect/provider.py +257 -0
  240. camply_web-2.8.0/src/camply/providers/usedirect/variations.py +158 -0
  241. camply_web-2.8.0/src/camply/providers/utils.py +60 -0
  242. camply_web-2.8.0/src/camply/py.typed +0 -0
  243. camply_web-2.8.0/src/camply/server/__about__.py +5 -0
  244. camply_web-2.8.0/src/camply/server/__init__.py +7 -0
  245. camply_web-2.8.0/src/camply/server/_prometheus.py +310 -0
  246. camply_web-2.8.0/src/camply/server/app.py +174 -0
  247. camply_web-2.8.0/src/camply/server/auth.py +414 -0
  248. camply_web-2.8.0/src/camply/server/config.py +132 -0
  249. camply_web-2.8.0/src/camply/server/dependencies.py +12 -0
  250. camply_web-2.8.0/src/camply/server/gunicorn.py +58 -0
  251. camply_web-2.8.0/src/camply/server/metrics.py +37 -0
  252. camply_web-2.8.0/src/camply/server/models/__init__.py +0 -0
  253. camply_web-2.8.0/src/camply/server/models/campgrounds.py +37 -0
  254. camply_web-2.8.0/src/camply/server/openapi.py +20 -0
  255. camply_web-2.8.0/src/camply/server/provision.py +64 -0
  256. camply_web-2.8.0/src/camply/server/py.typed +0 -0
  257. camply_web-2.8.0/src/camply/server/routers/__init__.py +0 -0
  258. camply_web-2.8.0/src/camply/server/routers/access.py +42 -0
  259. camply_web-2.8.0/src/camply/server/routers/admin.py +1123 -0
  260. camply_web-2.8.0/src/camply/server/routers/auth_config.py +41 -0
  261. camply_web-2.8.0/src/camply/server/routers/campgrounds.py +42 -0
  262. camply_web-2.8.0/src/camply/server/routers/health.py +59 -0
  263. camply_web-2.8.0/src/camply/server/routers/me.py +82 -0
  264. camply_web-2.8.0/src/camply/server/routers/providers.py +62 -0
  265. camply_web-2.8.0/src/camply/server/routers/recreation_areas.py +107 -0
  266. camply_web-2.8.0/src/camply/server/routers/scans.py +533 -0
  267. camply_web-2.8.0/src/camply/server/routers/search.py +330 -0
  268. camply_web-2.8.0/src/camply/server/routers/sessions.py +165 -0
  269. camply_web-2.8.0/src/camply/server/schemas.py +619 -0
  270. camply_web-2.8.0/src/camply/server/services/__init__.py +1 -0
  271. camply_web-2.8.0/src/camply/server/services/local_operations.py +143 -0
  272. camply_web-2.8.0/src/camply/server/services/operations.py +592 -0
  273. camply_web-2.8.0/src/camply/server/services/trends.py +871 -0
  274. camply_web-2.8.0/src/camply/server/standalone.py +77 -0
  275. camply_web-2.8.0/src/camply/server/static/_routes.json +5 -0
  276. camply_web-2.8.0/src/camply/server/static/assets/index-BIr8q8mk.css +1 -0
  277. camply_web-2.8.0/src/camply/server/static/assets/index-COizb2l4.js +997 -0
  278. camply_web-2.8.0/src/camply/server/static/assets/maplibre-gl-worker-Cc2ivl_Q.js +10 -0
  279. camply_web-2.8.0/src/camply/server/static/branding/camply-horizontal-dark.svg +16 -0
  280. camply_web-2.8.0/src/camply/server/static/branding/camply-horizontal.svg +16 -0
  281. camply_web-2.8.0/src/camply/server/static/branding/camply-icon-dark.svg +16 -0
  282. camply_web-2.8.0/src/camply/server/static/branding/camply-icon.svg +16 -0
  283. camply_web-2.8.0/src/camply/server/static/branding/camply-stacked-dark.svg +16 -0
  284. camply_web-2.8.0/src/camply/server/static/branding/camply-stacked.svg +16 -0
  285. camply_web-2.8.0/src/camply/server/static/branding/camply.png +0 -0
  286. camply_web-2.8.0/src/camply/server/static/branding/justin-flannery.png +0 -0
  287. camply_web-2.8.0/src/camply/server/static/branding/recreation-gov.png +0 -0
  288. camply_web-2.8.0/src/camply/server/static/docs/404.html +24 -0
  289. camply_web-2.8.0/src/camply/server/static/docs/CHECKLIST.html +27 -0
  290. camply_web-2.8.0/src/camply/server/static/docs/CONTRIBUTING.html +92 -0
  291. camply_web-2.8.0/src/camply/server/static/docs/PLAN.html +27 -0
  292. camply_web-2.8.0/src/camply/server/static/docs/architecture/ARCHITECTURE_DEEP_DIVE.html +43 -0
  293. camply_web-2.8.0/src/camply/server/static/docs/architecture/DESIGN_API.html +55 -0
  294. camply_web-2.8.0/src/camply/server/static/docs/architecture/DESIGN_DATA.html +27 -0
  295. camply_web-2.8.0/src/camply/server/static/docs/architecture/DESIGN_FRONTEND.html +27 -0
  296. camply_web-2.8.0/src/camply/server/static/docs/architecture/DESIGN_NOTIFICATIONS.html +39 -0
  297. camply_web-2.8.0/src/camply/server/static/docs/architecture/DESIGN_PROVIDERS.html +62 -0
  298. camply_web-2.8.0/src/camply/server/static/docs/assets/CHECKLIST.md.hWdSUfeD.js +1 -0
  299. camply_web-2.8.0/src/camply/server/static/docs/assets/CHECKLIST.md.hWdSUfeD.lean.js +1 -0
  300. camply_web-2.8.0/src/camply/server/static/docs/assets/CONTRIBUTING.md.C_0dYw2p.js +66 -0
  301. camply_web-2.8.0/src/camply/server/static/docs/assets/CONTRIBUTING.md.C_0dYw2p.lean.js +1 -0
  302. camply_web-2.8.0/src/camply/server/static/docs/assets/PLAN.md.BIejwBCQ.js +1 -0
  303. camply_web-2.8.0/src/camply/server/static/docs/assets/PLAN.md.BIejwBCQ.lean.js +1 -0
  304. camply_web-2.8.0/src/camply/server/static/docs/assets/app-docs.DXQE_AMG.png +0 -0
  305. camply_web-2.8.0/src/camply/server/static/docs/assets/app-footer-mobile.B_7q9zSX.png +0 -0
  306. camply_web-2.8.0/src/camply/server/static/docs/assets/app-footer.BKzirxoT.png +0 -0
  307. camply_web-2.8.0/src/camply/server/static/docs/assets/app.BIBn1_0C.js +1 -0
  308. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_ARCHITECTURE_DEEP_DIVE.md.qR2FYBxC.js +17 -0
  309. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_ARCHITECTURE_DEEP_DIVE.md.qR2FYBxC.lean.js +1 -0
  310. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_API.md.BiYvEFqk.js +29 -0
  311. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_API.md.BiYvEFqk.lean.js +1 -0
  312. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_DATA.md.Dv5xEwch.js +1 -0
  313. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_DATA.md.Dv5xEwch.lean.js +1 -0
  314. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_FRONTEND.md.CLw6-eHc.js +1 -0
  315. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_FRONTEND.md.CLw6-eHc.lean.js +1 -0
  316. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_NOTIFICATIONS.md.DTRN1Z6F.js +13 -0
  317. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_NOTIFICATIONS.md.DTRN1Z6F.lean.js +1 -0
  318. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_PROVIDERS.md.C2mgptbF.js +36 -0
  319. camply_web-2.8.0/src/camply/server/static/docs/assets/architecture_DESIGN_PROVIDERS.md.C2mgptbF.lean.js +1 -0
  320. camply_web-2.8.0/src/camply/server/static/docs/assets/camply.svg +17 -0
  321. camply_web-2.8.0/src/camply/server/static/docs/assets/chunks/@localSearchIndexroot.CxBSeztH.js +1 -0
  322. camply_web-2.8.0/src/camply/server/static/docs/assets/chunks/VPLocalSearchBox.CdPfQuEa.js +9 -0
  323. camply_web-2.8.0/src/camply/server/static/docs/assets/chunks/framework.BM5YPQmL.js +20 -0
  324. camply_web-2.8.0/src/camply/server/static/docs/assets/chunks/theme.DsmUp_5E.js +2 -0
  325. camply_web-2.8.0/src/camply/server/static/docs/assets/configuration.md.CTjuVFBs.js +4 -0
  326. camply_web-2.8.0/src/camply/server/static/docs/assets/configuration.md.CTjuVFBs.lean.js +1 -0
  327. camply_web-2.8.0/src/camply/server/static/docs/assets/desktop.7jWU1gTt.png +0 -0
  328. camply_web-2.8.0/src/camply/server/static/docs/assets/development.md.BvyDMyRv.js +7 -0
  329. camply_web-2.8.0/src/camply/server/static/docs/assets/development.md.BvyDMyRv.lean.js +1 -0
  330. camply_web-2.8.0/src/camply/server/static/docs/assets/development_AGENT_TROUBLESHOOTING.md.CJLWPYds.js +1 -0
  331. camply_web-2.8.0/src/camply/server/static/docs/assets/development_AGENT_TROUBLESHOOTING.md.CJLWPYds.lean.js +1 -0
  332. camply_web-2.8.0/src/camply/server/static/docs/assets/development_DESIGN_AGENTIC.md.CctuI_eG.js +1 -0
  333. camply_web-2.8.0/src/camply/server/static/docs/assets/development_DESIGN_AGENTIC.md.CctuI_eG.lean.js +1 -0
  334. camply_web-2.8.0/src/camply/server/static/docs/assets/development_DEVELOPER_GUIDE.md.GAkSFhfy.js +8 -0
  335. camply_web-2.8.0/src/camply/server/static/docs/assets/development_DEVELOPER_GUIDE.md.GAkSFhfy.lean.js +1 -0
  336. camply_web-2.8.0/src/camply/server/static/docs/assets/development_STYLE_GUIDE.md.5In2cXG3.js +1 -0
  337. camply_web-2.8.0/src/camply/server/static/docs/assets/development_STYLE_GUIDE.md.5In2cXG3.lean.js +1 -0
  338. camply_web-2.8.0/src/camply/server/static/docs/assets/index.md.mtfxlh4P.js +1 -0
  339. camply_web-2.8.0/src/camply/server/static/docs/assets/index.md.mtfxlh4P.lean.js +1 -0
  340. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  341. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  342. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  343. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  344. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  345. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  346. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  347. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  348. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  349. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  350. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  351. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  352. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  353. camply_web-2.8.0/src/camply/server/static/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  354. camply_web-2.8.0/src/camply/server/static/docs/assets/mobile.BHn3cOOl.png +0 -0
  355. camply_web-2.8.0/src/camply/server/static/docs/assets/operations_CONFIGURATION.md.D6oPLkcv.js +1 -0
  356. camply_web-2.8.0/src/camply/server/static/docs/assets/operations_CONFIGURATION.md.D6oPLkcv.lean.js +1 -0
  357. camply_web-2.8.0/src/camply/server/static/docs/assets/operations_RELEASES.md.DJpsWvJW.js +18 -0
  358. camply_web-2.8.0/src/camply/server/static/docs/assets/operations_RELEASES.md.DJpsWvJW.lean.js +1 -0
  359. camply_web-2.8.0/src/camply/server/static/docs/assets/operations_RUNNING.md.Be3YOJ6L.js +27 -0
  360. camply_web-2.8.0/src/camply/server/static/docs/assets/operations_RUNNING.md.Be3YOJ6L.lean.js +1 -0
  361. camply_web-2.8.0/src/camply/server/static/docs/assets/reference.md.t88yfbnH.js +1 -0
  362. camply_web-2.8.0/src/camply/server/static/docs/assets/reference.md.t88yfbnH.lean.js +1 -0
  363. camply_web-2.8.0/src/camply/server/static/docs/assets/self-hosting_containers.md.5a1rSEtB.js +6 -0
  364. camply_web-2.8.0/src/camply/server/static/docs/assets/self-hosting_containers.md.5a1rSEtB.lean.js +1 -0
  365. camply_web-2.8.0/src/camply/server/static/docs/assets/self-hosting_standalone.md.CQahK6_G.js +3 -0
  366. camply_web-2.8.0/src/camply/server/static/docs/assets/self-hosting_standalone.md.CQahK6_G.lean.js +1 -0
  367. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_checklists_requirements.md.DfhQsALb.js +1 -0
  368. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_checklists_requirements.md.DfhQsALb.lean.js +1 -0
  369. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_data-model.md.Bu3SJa6R.js +1 -0
  370. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_data-model.md.Bu3SJa6R.lean.js +1 -0
  371. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_plan.md.D3nzZvpG.js +16 -0
  372. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_plan.md.D3nzZvpG.lean.js +1 -0
  373. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_quickstart.md.brT3yMdZ.js +5 -0
  374. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_quickstart.md.brT3yMdZ.lean.js +1 -0
  375. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_research.md.DjcknknI.js +1 -0
  376. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_research.md.DjcknknI.lean.js +1 -0
  377. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_spec.md.CRhdCu3D.js +1 -0
  378. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_spec.md.CRhdCu3D.lean.js +1 -0
  379. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_tasks.md.tXQD9pHw.js +7 -0
  380. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_001-checklist-data-layer_tasks.md.tXQD9pHw.lean.js +1 -0
  381. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_002-admin-ui_plan.md.1i7mOqnZ.js +8 -0
  382. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_002-admin-ui_plan.md.1i7mOqnZ.lean.js +1 -0
  383. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_002-admin-ui_spec.md.Bcc8UXaw.js +1 -0
  384. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_002-admin-ui_spec.md.Bcc8UXaw.lean.js +1 -0
  385. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_002-admin-ui_tasks.md.D4m8JDK5.js +1 -0
  386. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_002-admin-ui_tasks.md.D4m8JDK5.lean.js +1 -0
  387. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_003-auth-invite-only_plan.md.DKaGDvZk.js +1 -0
  388. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_003-auth-invite-only_plan.md.DKaGDvZk.lean.js +1 -0
  389. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_003-auth-invite-only_spec.md.DNtUiuzb.js +1 -0
  390. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_003-auth-invite-only_spec.md.DNtUiuzb.lean.js +1 -0
  391. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_003-auth-invite-only_tasks.md.BWkFMpMk.js +1 -0
  392. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_003-auth-invite-only_tasks.md.BWkFMpMk.lean.js +1 -0
  393. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_plan.md.0egiciJu.js +1 -0
  394. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_plan.md.0egiciJu.lean.js +1 -0
  395. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_spec.md.D8F0bRTx.js +1 -0
  396. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_spec.md.D8F0bRTx.lean.js +1 -0
  397. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_tasks.md.BjrF_-ct.js +1 -0
  398. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_tasks.md.BjrF_-ct.lean.js +1 -0
  399. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_validation.md.4PK8p4L7.js +1 -0
  400. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_004-frontend-performance_validation.md.4PK8p4L7.lean.js +1 -0
  401. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_plan.md.C_4y1stq.js +1 -0
  402. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_plan.md.C_4y1stq.lean.js +1 -0
  403. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_review.md.vPfyZzT1.js +1 -0
  404. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_review.md.vPfyZzT1.lean.js +1 -0
  405. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_spec.md.rgMwjOCN.js +1 -0
  406. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_spec.md.rgMwjOCN.lean.js +1 -0
  407. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_tasks.md.Drrims_b.js +1 -0
  408. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_tasks.md.Drrims_b.lean.js +1 -0
  409. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_validation.md.4NbfQL-M.js +3 -0
  410. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_005-reserve-california_validation.md.4NbfQL-M.lean.js +1 -0
  411. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_006-search-revamp_plan.md.CgDr0o4d.js +1 -0
  412. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_006-search-revamp_plan.md.CgDr0o4d.lean.js +1 -0
  413. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_006-search-revamp_spec.md.BpswXgjY.js +1 -0
  414. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_006-search-revamp_spec.md.BpswXgjY.lean.js +1 -0
  415. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_006-search-revamp_tasks.md.BqfZvZ51.js +1 -0
  416. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_006-search-revamp_tasks.md.BqfZvZ51.lean.js +1 -0
  417. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_TODO.md.D-YlwIaX.js +1 -0
  418. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_TODO.md.D-YlwIaX.lean.js +1 -0
  419. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_plan.md.CAt16M-0.js +1 -0
  420. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_plan.md.CAt16M-0.lean.js +1 -0
  421. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_spec.md.DL5gRQoV.js +1 -0
  422. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_spec.md.DL5gRQoV.lean.js +1 -0
  423. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_tasks.md.x22tFDlq.js +1 -0
  424. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_tasks.md.x22tFDlq.lean.js +1 -0
  425. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_validation.md.Cq0jkjMQ.js +1 -0
  426. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_007-usedirect-providers_validation.md.Cq0jkjMQ.lean.js +1 -0
  427. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_008-scan-editing_plan.md.DLJmchfh.js +1 -0
  428. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_008-scan-editing_plan.md.DLJmchfh.lean.js +1 -0
  429. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_008-scan-editing_spec.md.CdwTtcx3.js +1 -0
  430. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_008-scan-editing_spec.md.CdwTtcx3.lean.js +1 -0
  431. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_008-scan-editing_tasks.md.BEgPa6-r.js +1 -0
  432. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_008-scan-editing_tasks.md.BEgPa6-r.lean.js +1 -0
  433. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_009-live-search_plan.md.BcoKTwHn.js +1 -0
  434. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_009-live-search_plan.md.BcoKTwHn.lean.js +1 -0
  435. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_009-live-search_spec.md.fUtsQI22.js +1 -0
  436. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_009-live-search_spec.md.fUtsQI22.lean.js +1 -0
  437. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_009-live-search_tasks.md.DarVWLUi.js +1 -0
  438. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_009-live-search_tasks.md.DarVWLUi.lean.js +1 -0
  439. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_TODO.md.gzEKqbSz.js +6 -0
  440. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_TODO.md.gzEKqbSz.lean.js +1 -0
  441. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_checklists_requirements.md.vru4OosJ.js +1 -0
  442. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_checklists_requirements.md.vru4OosJ.lean.js +1 -0
  443. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_contracts_map-ui-and-configuration.md.B10q5qL1.js +1 -0
  444. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_contracts_map-ui-and-configuration.md.B10q5qL1.lean.js +1 -0
  445. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_contracts_search-map-api.md.C_WjmPTY.js +6 -0
  446. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_contracts_search-map-api.md.C_WjmPTY.lean.js +1 -0
  447. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_data-model.md.5O-zMBeh.js +1 -0
  448. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_data-model.md.5O-zMBeh.lean.js +1 -0
  449. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_plan.md.jDZdRYcr.js +43 -0
  450. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_plan.md.jDZdRYcr.lean.js +1 -0
  451. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_quickstart.md.BE90M1AB.js +15 -0
  452. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_quickstart.md.BE90M1AB.lean.js +1 -0
  453. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_research.md.BlHNsukP.js +1 -0
  454. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_research.md.BlHNsukP.lean.js +1 -0
  455. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_spec.md.LYFig9_-.js +1 -0
  456. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_spec.md.LYFig9_-.lean.js +1 -0
  457. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_tasks.md.DIp1nm1_.js +10 -0
  458. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_tasks.md.DIp1nm1_.lean.js +1 -0
  459. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_validation.md.CD2LeHg0.js +1 -0
  460. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_010-open-source-explore-maps_validation.md.CD2LeHg0.lean.js +1 -0
  461. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_checklists_requirements.md.DWjHbv1i.js +1 -0
  462. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_checklists_requirements.md.DWjHbv1i.lean.js +1 -0
  463. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_checklists_runtime.md.BO6J8s0L.js +1 -0
  464. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_checklists_runtime.md.BO6J8s0L.lean.js +1 -0
  465. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_contracts_admin-api.md.thtXfhYe.js +1 -0
  466. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_contracts_admin-api.md.thtXfhYe.lean.js +1 -0
  467. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_contracts_runtime.md.BlZkAK7-.js +1 -0
  468. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_contracts_runtime.md.BlZkAK7-.lean.js +1 -0
  469. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_data-model.md.CFAVd4C5.js +11 -0
  470. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_data-model.md.CFAVd4C5.lean.js +1 -0
  471. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_plan.md.DPP4fdeb.js +31 -0
  472. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_plan.md.DPP4fdeb.lean.js +1 -0
  473. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_quickstart.md.Cn5n2TIW.js +11 -0
  474. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_quickstart.md.Cn5n2TIW.lean.js +1 -0
  475. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_research.md.CTOfB-iw.js +1 -0
  476. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_research.md.CTOfB-iw.lean.js +1 -0
  477. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_review.md.S7P6Ivy7.js +1 -0
  478. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_review.md.S7P6Ivy7.lean.js +1 -0
  479. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_spec.md.CNHFBW4a.js +1 -0
  480. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_spec.md.CNHFBW4a.lean.js +1 -0
  481. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_tasks.md.Ce8U3_-D.js +6 -0
  482. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_011-standalone-runtime_tasks.md.Ce8U3_-D.lean.js +1 -0
  483. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_012-branding_plan.md.A72jCO-_.js +1 -0
  484. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_012-branding_plan.md.A72jCO-_.lean.js +1 -0
  485. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_012-branding_spec.md.BueCHwuz.js +1 -0
  486. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_012-branding_spec.md.BueCHwuz.lean.js +1 -0
  487. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_012-branding_tasks.md.BTeyaLMD.js +1 -0
  488. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_012-branding_tasks.md.BTeyaLMD.lean.js +1 -0
  489. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_plan.md.DXgkLmDJ.js +1 -0
  490. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_plan.md.DXgkLmDJ.lean.js +1 -0
  491. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_spec.md.BVo8jhLm.js +1 -0
  492. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_spec.md.BVo8jhLm.lean.js +1 -0
  493. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_tasks.md.CFR8mkT3.js +1 -0
  494. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_tasks.md.CFR8mkT3.lean.js +1 -0
  495. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_validation.md.BNctsZBl.js +1 -0
  496. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_013-map-list-interaction_validation.md.BNctsZBl.lean.js +1 -0
  497. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_014-campsite-alerts_plan.md.Du4VPOlj.js +1 -0
  498. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_014-campsite-alerts_plan.md.Du4VPOlj.lean.js +1 -0
  499. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_014-campsite-alerts_spec.md.DPQGKMoN.js +1 -0
  500. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_014-campsite-alerts_spec.md.DPQGKMoN.lean.js +1 -0
  501. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_014-campsite-alerts_tasks.md.BqDrpSco.js +1 -0
  502. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_014-campsite-alerts_tasks.md.BqDrpSco.lean.js +1 -0
  503. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_015-release-ci_plan.md.s7IX1ar-.js +1 -0
  504. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_015-release-ci_plan.md.s7IX1ar-.lean.js +1 -0
  505. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_015-release-ci_spec.md.IA1oVhSE.js +1 -0
  506. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_015-release-ci_spec.md.IA1oVhSE.lean.js +1 -0
  507. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_015-release-ci_tasks.md.DCVUjCri.js +1 -0
  508. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_015-release-ci_tasks.md.DCVUjCri.lean.js +1 -0
  509. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_016-snapshot-gallery_plan.md.CS9nfykJ.js +1 -0
  510. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_016-snapshot-gallery_plan.md.CS9nfykJ.lean.js +1 -0
  511. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_016-snapshot-gallery_spec.md.Cha7R2Jr.js +1 -0
  512. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_016-snapshot-gallery_spec.md.Cha7R2Jr.lean.js +1 -0
  513. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_016-snapshot-gallery_tasks.md.DkrGHX9V.js +1 -0
  514. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_016-snapshot-gallery_tasks.md.DkrGHX9V.lean.js +1 -0
  515. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_017-compact-results_plan.md.BKHhDct3.js +1 -0
  516. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_017-compact-results_plan.md.BKHhDct3.lean.js +1 -0
  517. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_017-compact-results_spec.md.DzprVc_Y.js +1 -0
  518. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_017-compact-results_spec.md.DzprVc_Y.lean.js +1 -0
  519. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_017-compact-results_tasks.md.B7r7q6M6.js +1 -0
  520. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_017-compact-results_tasks.md.B7r7q6M6.lean.js +1 -0
  521. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_checklists_requirements.md.Ba9rZYIs.js +1 -0
  522. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_checklists_requirements.md.Ba9rZYIs.lean.js +1 -0
  523. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_contracts_installation.md.BpweOVRG.js +1 -0
  524. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_contracts_installation.md.BpweOVRG.lean.js +1 -0
  525. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_data-model.md.6Ln9iXUM.js +1 -0
  526. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_data-model.md.6Ln9iXUM.lean.js +1 -0
  527. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_plan.md.DCJTOtqH.js +23 -0
  528. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_plan.md.DCJTOtqH.lean.js +1 -0
  529. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_quickstart.md.KtQ5vkcd.js +18 -0
  530. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_quickstart.md.KtQ5vkcd.lean.js +1 -0
  531. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_research.md.VwZF0yyA.js +1 -0
  532. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_research.md.VwZF0yyA.lean.js +1 -0
  533. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_spec.md.Bkzw96f5.js +1 -0
  534. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_spec.md.Bkzw96f5.lean.js +1 -0
  535. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_tasks.md.68ZupRJE.js +9 -0
  536. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_018-python-package_tasks.md.68ZupRJE.lean.js +1 -0
  537. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_checklists_requirements.md.efbJQUab.js +1 -0
  538. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_checklists_requirements.md.efbJQUab.lean.js +1 -0
  539. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_contracts_deployment.md.pILeXHAO.js +7 -0
  540. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_contracts_deployment.md.pILeXHAO.lean.js +1 -0
  541. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_contracts_packaging.md.DiDP5HWd.js +1 -0
  542. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_contracts_packaging.md.DiDP5HWd.lean.js +1 -0
  543. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_data-model.md.ebEzfYla.js +7 -0
  544. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_data-model.md.ebEzfYla.lean.js +1 -0
  545. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_plan.md.DvXBnPtu.js +57 -0
  546. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_plan.md.DvXBnPtu.lean.js +1 -0
  547. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_quickstart.md.BBsMI7O5.js +18 -0
  548. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_quickstart.md.BBsMI7O5.lean.js +1 -0
  549. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_research.md.CA4sN3hx.js +1 -0
  550. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_research.md.CA4sN3hx.lean.js +1 -0
  551. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_spec.md.DuKS8ugt.js +1 -0
  552. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_spec.md.DuKS8ugt.lean.js +1 -0
  553. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_tasks.md.CP5Z2AFX.js +1 -0
  554. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_019-root-project-layout_tasks.md.CP5Z2AFX.lean.js +1 -0
  555. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_020-unified-container_plan.md.xEvrD739.js +1 -0
  556. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_020-unified-container_plan.md.xEvrD739.lean.js +1 -0
  557. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_020-unified-container_spec.md.CwYqgXIo.js +1 -0
  558. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_020-unified-container_spec.md.CwYqgXIo.lean.js +1 -0
  559. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_020-unified-container_tasks.md.DlZym8Lk.js +1 -0
  560. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_020-unified-container_tasks.md.DlZym8Lk.lean.js +1 -0
  561. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_021-helm-chart_plan.md.BLo5bjmE.js +1 -0
  562. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_021-helm-chart_plan.md.BLo5bjmE.lean.js +1 -0
  563. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_021-helm-chart_spec.md.Dz_zvjRU.js +1 -0
  564. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_021-helm-chart_spec.md.Dz_zvjRU.lean.js +1 -0
  565. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_021-helm-chart_tasks.md.Ba53wvbA.js +1 -0
  566. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_021-helm-chart_tasks.md.Ba53wvbA.lean.js +1 -0
  567. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_022-documentation-site_plan.md.Bd_nIc0B.js +1 -0
  568. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_022-documentation-site_plan.md.Bd_nIc0B.lean.js +1 -0
  569. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_022-documentation-site_spec.md.mVEUAL4_.js +1 -0
  570. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_022-documentation-site_spec.md.mVEUAL4_.lean.js +1 -0
  571. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_022-documentation-site_tasks.md.D4Yx3Coa.js +1 -0
  572. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_022-documentation-site_tasks.md.D4Yx3Coa.lean.js +1 -0
  573. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_index.md.WrZfYvz7.js +1 -0
  574. camply_web-2.8.0/src/camply/server/static/docs/assets/specs_index.md.WrZfYvz7.lean.js +1 -0
  575. camply_web-2.8.0/src/camply/server/static/docs/assets/style.BLufiWcT.css +1 -0
  576. camply_web-2.8.0/src/camply/server/static/docs/assets/using-camply.md.CdovgIax.js +1 -0
  577. camply_web-2.8.0/src/camply/server/static/docs/assets/using-camply.md.CdovgIax.lean.js +1 -0
  578. camply_web-2.8.0/src/camply/server/static/docs/branding/camply-horizontal-dark.svg +16 -0
  579. camply_web-2.8.0/src/camply/server/static/docs/branding/camply-horizontal.svg +16 -0
  580. camply_web-2.8.0/src/camply/server/static/docs/branding/camply-icon-dark.svg +16 -0
  581. camply_web-2.8.0/src/camply/server/static/docs/branding/camply-icon.svg +16 -0
  582. camply_web-2.8.0/src/camply/server/static/docs/branding/camply-stacked-dark.svg +16 -0
  583. camply_web-2.8.0/src/camply/server/static/docs/branding/camply-stacked.svg +16 -0
  584. camply_web-2.8.0/src/camply/server/static/docs/camply.svg +17 -0
  585. camply_web-2.8.0/src/camply/server/static/docs/configuration.html +30 -0
  586. camply_web-2.8.0/src/camply/server/static/docs/development/AGENT_TROUBLESHOOTING.html +27 -0
  587. camply_web-2.8.0/src/camply/server/static/docs/development/DESIGN_AGENTIC.html +27 -0
  588. camply_web-2.8.0/src/camply/server/static/docs/development/DEVELOPER_GUIDE.html +34 -0
  589. camply_web-2.8.0/src/camply/server/static/docs/development/STYLE_GUIDE.html +27 -0
  590. camply_web-2.8.0/src/camply/server/static/docs/development.html +33 -0
  591. camply_web-2.8.0/src/camply/server/static/docs/favicon.ico +0 -0
  592. camply_web-2.8.0/src/camply/server/static/docs/favicon.svg +17 -0
  593. camply_web-2.8.0/src/camply/server/static/docs/hashmap.json +1 -0
  594. camply_web-2.8.0/src/camply/server/static/docs/index.html +27 -0
  595. camply_web-2.8.0/src/camply/server/static/docs/operations/CONFIGURATION.html +27 -0
  596. camply_web-2.8.0/src/camply/server/static/docs/operations/RELEASES.html +44 -0
  597. camply_web-2.8.0/src/camply/server/static/docs/operations/RUNNING.html +53 -0
  598. camply_web-2.8.0/src/camply/server/static/docs/reference.html +27 -0
  599. camply_web-2.8.0/src/camply/server/static/docs/self-hosting/containers.html +32 -0
  600. camply_web-2.8.0/src/camply/server/static/docs/self-hosting/standalone.html +29 -0
  601. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/checklists/requirements.html +27 -0
  602. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/data-model.html +27 -0
  603. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/plan.html +42 -0
  604. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/quickstart.html +31 -0
  605. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/research.html +27 -0
  606. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/spec.html +27 -0
  607. camply_web-2.8.0/src/camply/server/static/docs/specs/001-checklist-data-layer/tasks.html +33 -0
  608. camply_web-2.8.0/src/camply/server/static/docs/specs/002-admin-ui/plan.html +34 -0
  609. camply_web-2.8.0/src/camply/server/static/docs/specs/002-admin-ui/spec.html +27 -0
  610. camply_web-2.8.0/src/camply/server/static/docs/specs/002-admin-ui/tasks.html +27 -0
  611. camply_web-2.8.0/src/camply/server/static/docs/specs/003-auth-invite-only/plan.html +27 -0
  612. camply_web-2.8.0/src/camply/server/static/docs/specs/003-auth-invite-only/spec.html +27 -0
  613. camply_web-2.8.0/src/camply/server/static/docs/specs/003-auth-invite-only/tasks.html +27 -0
  614. camply_web-2.8.0/src/camply/server/static/docs/specs/004-frontend-performance/plan.html +27 -0
  615. camply_web-2.8.0/src/camply/server/static/docs/specs/004-frontend-performance/spec.html +27 -0
  616. camply_web-2.8.0/src/camply/server/static/docs/specs/004-frontend-performance/tasks.html +27 -0
  617. camply_web-2.8.0/src/camply/server/static/docs/specs/004-frontend-performance/validation.html +27 -0
  618. camply_web-2.8.0/src/camply/server/static/docs/specs/005-reserve-california/plan.html +27 -0
  619. camply_web-2.8.0/src/camply/server/static/docs/specs/005-reserve-california/review.html +27 -0
  620. camply_web-2.8.0/src/camply/server/static/docs/specs/005-reserve-california/spec.html +27 -0
  621. camply_web-2.8.0/src/camply/server/static/docs/specs/005-reserve-california/tasks.html +27 -0
  622. camply_web-2.8.0/src/camply/server/static/docs/specs/005-reserve-california/validation.html +29 -0
  623. camply_web-2.8.0/src/camply/server/static/docs/specs/006-search-revamp/plan.html +27 -0
  624. camply_web-2.8.0/src/camply/server/static/docs/specs/006-search-revamp/spec.html +27 -0
  625. camply_web-2.8.0/src/camply/server/static/docs/specs/006-search-revamp/tasks.html +27 -0
  626. camply_web-2.8.0/src/camply/server/static/docs/specs/007-usedirect-providers/TODO.html +27 -0
  627. camply_web-2.8.0/src/camply/server/static/docs/specs/007-usedirect-providers/plan.html +27 -0
  628. camply_web-2.8.0/src/camply/server/static/docs/specs/007-usedirect-providers/spec.html +27 -0
  629. camply_web-2.8.0/src/camply/server/static/docs/specs/007-usedirect-providers/tasks.html +27 -0
  630. camply_web-2.8.0/src/camply/server/static/docs/specs/007-usedirect-providers/validation.html +27 -0
  631. camply_web-2.8.0/src/camply/server/static/docs/specs/008-scan-editing/plan.html +27 -0
  632. camply_web-2.8.0/src/camply/server/static/docs/specs/008-scan-editing/spec.html +27 -0
  633. camply_web-2.8.0/src/camply/server/static/docs/specs/008-scan-editing/tasks.html +27 -0
  634. camply_web-2.8.0/src/camply/server/static/docs/specs/009-live-search/plan.html +27 -0
  635. camply_web-2.8.0/src/camply/server/static/docs/specs/009-live-search/spec.html +27 -0
  636. camply_web-2.8.0/src/camply/server/static/docs/specs/009-live-search/tasks.html +27 -0
  637. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/TODO.html +32 -0
  638. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/checklists/requirements.html +27 -0
  639. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/contracts/map-ui-and-configuration.html +27 -0
  640. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/contracts/search-map-api.html +32 -0
  641. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/data-model.html +27 -0
  642. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/plan.html +69 -0
  643. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/quickstart.html +41 -0
  644. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/research.html +27 -0
  645. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/spec.html +27 -0
  646. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/tasks.html +36 -0
  647. camply_web-2.8.0/src/camply/server/static/docs/specs/010-open-source-explore-maps/validation.html +27 -0
  648. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/checklists/requirements.html +27 -0
  649. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/checklists/runtime.html +27 -0
  650. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/contracts/admin-api.html +27 -0
  651. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/contracts/runtime.html +27 -0
  652. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/data-model.html +37 -0
  653. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/plan.html +57 -0
  654. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/quickstart.html +37 -0
  655. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/research.html +27 -0
  656. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/review.html +27 -0
  657. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/spec.html +27 -0
  658. camply_web-2.8.0/src/camply/server/static/docs/specs/011-standalone-runtime/tasks.html +32 -0
  659. camply_web-2.8.0/src/camply/server/static/docs/specs/012-branding/plan.html +27 -0
  660. camply_web-2.8.0/src/camply/server/static/docs/specs/012-branding/spec.html +27 -0
  661. camply_web-2.8.0/src/camply/server/static/docs/specs/012-branding/tasks.html +27 -0
  662. camply_web-2.8.0/src/camply/server/static/docs/specs/013-map-list-interaction/plan.html +27 -0
  663. camply_web-2.8.0/src/camply/server/static/docs/specs/013-map-list-interaction/spec.html +27 -0
  664. camply_web-2.8.0/src/camply/server/static/docs/specs/013-map-list-interaction/tasks.html +27 -0
  665. camply_web-2.8.0/src/camply/server/static/docs/specs/013-map-list-interaction/validation.html +27 -0
  666. camply_web-2.8.0/src/camply/server/static/docs/specs/014-campsite-alerts/plan.html +27 -0
  667. camply_web-2.8.0/src/camply/server/static/docs/specs/014-campsite-alerts/spec.html +27 -0
  668. camply_web-2.8.0/src/camply/server/static/docs/specs/014-campsite-alerts/tasks.html +27 -0
  669. camply_web-2.8.0/src/camply/server/static/docs/specs/015-release-ci/plan.html +27 -0
  670. camply_web-2.8.0/src/camply/server/static/docs/specs/015-release-ci/spec.html +27 -0
  671. camply_web-2.8.0/src/camply/server/static/docs/specs/015-release-ci/tasks.html +27 -0
  672. camply_web-2.8.0/src/camply/server/static/docs/specs/016-snapshot-gallery/plan.html +27 -0
  673. camply_web-2.8.0/src/camply/server/static/docs/specs/016-snapshot-gallery/spec.html +27 -0
  674. camply_web-2.8.0/src/camply/server/static/docs/specs/016-snapshot-gallery/tasks.html +27 -0
  675. camply_web-2.8.0/src/camply/server/static/docs/specs/017-compact-results/plan.html +27 -0
  676. camply_web-2.8.0/src/camply/server/static/docs/specs/017-compact-results/spec.html +27 -0
  677. camply_web-2.8.0/src/camply/server/static/docs/specs/017-compact-results/tasks.html +27 -0
  678. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/checklists/requirements.html +27 -0
  679. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/contracts/installation.html +27 -0
  680. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/data-model.html +27 -0
  681. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/plan.html +49 -0
  682. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/quickstart.html +44 -0
  683. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/research.html +27 -0
  684. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/spec.html +27 -0
  685. camply_web-2.8.0/src/camply/server/static/docs/specs/018-python-package/tasks.html +35 -0
  686. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/checklists/requirements.html +27 -0
  687. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/contracts/deployment.html +33 -0
  688. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/contracts/packaging.html +27 -0
  689. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/data-model.html +33 -0
  690. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/plan.html +83 -0
  691. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/quickstart.html +44 -0
  692. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/research.html +27 -0
  693. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/spec.html +27 -0
  694. camply_web-2.8.0/src/camply/server/static/docs/specs/019-root-project-layout/tasks.html +27 -0
  695. camply_web-2.8.0/src/camply/server/static/docs/specs/020-unified-container/plan.html +27 -0
  696. camply_web-2.8.0/src/camply/server/static/docs/specs/020-unified-container/spec.html +27 -0
  697. camply_web-2.8.0/src/camply/server/static/docs/specs/020-unified-container/tasks.html +27 -0
  698. camply_web-2.8.0/src/camply/server/static/docs/specs/021-helm-chart/plan.html +27 -0
  699. camply_web-2.8.0/src/camply/server/static/docs/specs/021-helm-chart/spec.html +27 -0
  700. camply_web-2.8.0/src/camply/server/static/docs/specs/021-helm-chart/tasks.html +27 -0
  701. camply_web-2.8.0/src/camply/server/static/docs/specs/022-documentation-site/plan.html +27 -0
  702. camply_web-2.8.0/src/camply/server/static/docs/specs/022-documentation-site/spec.html +27 -0
  703. camply_web-2.8.0/src/camply/server/static/docs/specs/022-documentation-site/tasks.html +27 -0
  704. camply_web-2.8.0/src/camply/server/static/docs/specs/index.html +27 -0
  705. camply_web-2.8.0/src/camply/server/static/docs/using-camply.html +27 -0
  706. camply_web-2.8.0/src/camply/server/static/docs/vp-icons.css +1 -0
  707. camply_web-2.8.0/src/camply/server/static/favicon.ico +0 -0
  708. camply_web-2.8.0/src/camply/server/static/favicon.svg +17 -0
  709. camply_web-2.8.0/src/camply/server/static/index.html +15 -0
  710. camply_web-2.8.0/src/camply/server/static.py +55 -0
  711. camply_web-2.8.0/src/camply/worker/__init__.py +14 -0
  712. camply_web-2.8.0/src/camply/worker/celery_app.py +139 -0
  713. camply_web-2.8.0/src/camply/worker/config.py +68 -0
  714. camply_web-2.8.0/src/camply/worker/engine/__init__.py +1 -0
  715. camply_web-2.8.0/src/camply/worker/engine/alerts.py +68 -0
  716. camply_web-2.8.0/src/camply/worker/engine/catalog.py +46 -0
  717. camply_web-2.8.0/src/camply/worker/engine/discovery.py +60 -0
  718. camply_web-2.8.0/src/camply/worker/engine/notifications.py +103 -0
  719. camply_web-2.8.0/src/camply/worker/engine/scanner.py +318 -0
  720. camply_web-2.8.0/src/camply/worker/locks.py +101 -0
  721. camply_web-2.8.0/src/camply/worker/metrics.py +177 -0
  722. camply_web-2.8.0/src/camply/worker/notifications/__init__.py +3 -0
  723. camply_web-2.8.0/src/camply/worker/notifications/base.py +53 -0
  724. camply_web-2.8.0/src/camply/worker/notifications/pushover.py +104 -0
  725. camply_web-2.8.0/src/camply/worker/outbox.py +236 -0
  726. camply_web-2.8.0/src/camply/worker/runtime.py +313 -0
  727. camply_web-2.8.0/src/camply/worker/scheduler.py +38 -0
  728. camply_web-2.8.0/src/camply/worker/tasks/__init__.py +3 -0
  729. camply_web-2.8.0/src/camply/worker/tasks/heartbeat.py +81 -0
  730. camply_web-2.8.0/src/camply/worker/tasks/ingestion.py +106 -0
  731. camply_web-2.8.0/src/camply/worker/tasks/notifications.py +63 -0
  732. camply_web-2.8.0/src/camply/worker/tasks/scanner.py +135 -0
  733. camply_web-2.8.0/src/camply/worker/telemetry.py +343 -0
  734. camply_web-2.8.0/src/frontend/.oxfmtignore +10 -0
  735. camply_web-2.8.0/src/frontend/.oxfmtrc.json +5 -0
  736. camply_web-2.8.0/src/frontend/.oxlintrc.json +115 -0
  737. camply_web-2.8.0/src/frontend/App.css +28 -0
  738. camply_web-2.8.0/src/frontend/App.test.tsx +557 -0
  739. camply_web-2.8.0/src/frontend/App.tsx +280 -0
  740. camply_web-2.8.0/src/frontend/components/AdminNav.tsx +53 -0
  741. camply_web-2.8.0/src/frontend/components/AdminRoute.test.tsx +153 -0
  742. camply_web-2.8.0/src/frontend/components/AdminRoute.tsx +67 -0
  743. camply_web-2.8.0/src/frontend/components/CamplyLogo.test.tsx +70 -0
  744. camply_web-2.8.0/src/frontend/components/CamplyLogo.tsx +31 -0
  745. camply_web-2.8.0/src/frontend/components/ChangePasswordRequired.test.tsx +180 -0
  746. camply_web-2.8.0/src/frontend/components/ChangePasswordRequired.tsx +152 -0
  747. camply_web-2.8.0/src/frontend/components/CollapsibleDescription.tsx +123 -0
  748. camply_web-2.8.0/src/frontend/components/DismissibleBanner.tsx +65 -0
  749. camply_web-2.8.0/src/frontend/components/ExploreMap.test.tsx +363 -0
  750. camply_web-2.8.0/src/frontend/components/ExploreMap.tsx +356 -0
  751. camply_web-2.8.0/src/frontend/components/FoundCampsites.tsx +356 -0
  752. camply_web-2.8.0/src/frontend/components/Header.tsx +319 -0
  753. camply_web-2.8.0/src/frontend/components/Layout.test.tsx +24 -0
  754. camply_web-2.8.0/src/frontend/components/Layout.tsx +60 -0
  755. camply_web-2.8.0/src/frontend/components/MapComponent.test.tsx +465 -0
  756. camply_web-2.8.0/src/frontend/components/MapComponent.tsx +468 -0
  757. camply_web-2.8.0/src/frontend/components/ProtectedRoute.test.tsx +116 -0
  758. camply_web-2.8.0/src/frontend/components/ProtectedRoute.tsx +40 -0
  759. camply_web-2.8.0/src/frontend/components/ScanCard.test.tsx +247 -0
  760. camply_web-2.8.0/src/frontend/components/ScanCard.tsx +243 -0
  761. camply_web-2.8.0/src/frontend/components/ScanForm.dates.test.tsx +213 -0
  762. camply_web-2.8.0/src/frontend/components/ScanForm.test.tsx +351 -0
  763. camply_web-2.8.0/src/frontend/components/ScanForm.tsx +568 -0
  764. camply_web-2.8.0/src/frontend/components/SearchBar.tsx +174 -0
  765. camply_web-2.8.0/src/frontend/components/SearchDropdown.tsx +144 -0
  766. camply_web-2.8.0/src/frontend/components/admin/AdminFeedback.tsx +18 -0
  767. camply_web-2.8.0/src/frontend/components/admin/AdminPagination.tsx +42 -0
  768. camply_web-2.8.0/src/frontend/components/admin/AdminPasswordInput.test.tsx +128 -0
  769. camply_web-2.8.0/src/frontend/components/admin/AdminPasswordInput.tsx +121 -0
  770. camply_web-2.8.0/src/frontend/components/admin/AdminTrendsPanel.test.tsx +407 -0
  771. camply_web-2.8.0/src/frontend/components/admin/AdminTrendsPanel.tsx +506 -0
  772. camply_web-2.8.0/src/frontend/components/admin/labels.ts +14 -0
  773. camply_web-2.8.0/src/frontend/components/theme-provider.tsx +58 -0
  774. camply_web-2.8.0/src/frontend/components/theme-toggle.tsx +16 -0
  775. camply_web-2.8.0/src/frontend/components/ui/badge.tsx +41 -0
  776. camply_web-2.8.0/src/frontend/components/ui/button-variants.ts +30 -0
  777. camply_web-2.8.0/src/frontend/components/ui/button.tsx +29 -0
  778. camply_web-2.8.0/src/frontend/components/ui/card.tsx +86 -0
  779. camply_web-2.8.0/src/frontend/components/ui/date-picker.test.tsx +162 -0
  780. camply_web-2.8.0/src/frontend/components/ui/date-picker.tsx +536 -0
  781. camply_web-2.8.0/src/frontend/components/ui/dialog.tsx +116 -0
  782. camply_web-2.8.0/src/frontend/components/ui/dropdown-menu.tsx +198 -0
  783. camply_web-2.8.0/src/frontend/components/ui/input.tsx +23 -0
  784. camply_web-2.8.0/src/frontend/components/ui/label.tsx +23 -0
  785. camply_web-2.8.0/src/frontend/components/ui/switch.tsx +26 -0
  786. camply_web-2.8.0/src/frontend/functions/api/[[path]].ts +60 -0
  787. camply_web-2.8.0/src/frontend/functions/tsconfig.json +13 -0
  788. camply_web-2.8.0/src/frontend/hooks/use-theme.ts +30 -0
  789. camply_web-2.8.0/src/frontend/hooks/useAdmin.ts +217 -0
  790. camply_web-2.8.0/src/frontend/hooks/useAdminLocation.ts +32 -0
  791. camply_web-2.8.0/src/frontend/hooks/useAuth.tsx +328 -0
  792. camply_web-2.8.0/src/frontend/hooks/useScans.test.tsx +67 -0
  793. camply_web-2.8.0/src/frontend/hooks/useScans.ts +110 -0
  794. camply_web-2.8.0/src/frontend/hooks/useSearch.test.tsx +282 -0
  795. camply_web-2.8.0/src/frontend/hooks/useSearch.ts +100 -0
  796. camply_web-2.8.0/src/frontend/index.css +134 -0
  797. camply_web-2.8.0/src/frontend/index.html +14 -0
  798. camply_web-2.8.0/src/frontend/lib/api/generated/schema.ts +3353 -0
  799. camply_web-2.8.0/src/frontend/lib/api.test.ts +269 -0
  800. camply_web-2.8.0/src/frontend/lib/api.ts +551 -0
  801. camply_web-2.8.0/src/frontend/lib/authRedirect.test.ts +20 -0
  802. camply_web-2.8.0/src/frontend/lib/authRedirect.ts +12 -0
  803. camply_web-2.8.0/src/frontend/lib/features.ts +3 -0
  804. camply_web-2.8.0/src/frontend/lib/maps.test.ts +99 -0
  805. camply_web-2.8.0/src/frontend/lib/maps.ts +165 -0
  806. camply_web-2.8.0/src/frontend/lib/structs.test.ts +121 -0
  807. camply_web-2.8.0/src/frontend/lib/structs.ts +212 -0
  808. camply_web-2.8.0/src/frontend/lib/utils.test.ts +216 -0
  809. camply_web-2.8.0/src/frontend/lib/utils.ts +190 -0
  810. camply_web-2.8.0/src/frontend/main.tsx +25 -0
  811. camply_web-2.8.0/src/frontend/pages/Auth.tsx +248 -0
  812. camply_web-2.8.0/src/frontend/pages/Campground.test.tsx +101 -0
  813. camply_web-2.8.0/src/frontend/pages/Campground.tsx +324 -0
  814. camply_web-2.8.0/src/frontend/pages/Contact.tsx +290 -0
  815. camply_web-2.8.0/src/frontend/pages/Contribute.tsx +305 -0
  816. camply_web-2.8.0/src/frontend/pages/Dashboard.test.tsx +106 -0
  817. camply_web-2.8.0/src/frontend/pages/Dashboard.tsx +372 -0
  818. camply_web-2.8.0/src/frontend/pages/DevPreview.tsx +294 -0
  819. camply_web-2.8.0/src/frontend/pages/Ethos.tsx +259 -0
  820. camply_web-2.8.0/src/frontend/pages/FAQ.tsx +257 -0
  821. camply_web-2.8.0/src/frontend/pages/Home.tsx +220 -0
  822. camply_web-2.8.0/src/frontend/pages/HowItWorks.tsx +516 -0
  823. camply_web-2.8.0/src/frontend/pages/InviteOnly.tsx +137 -0
  824. camply_web-2.8.0/src/frontend/pages/PrivacyPolicy.tsx +177 -0
  825. camply_web-2.8.0/src/frontend/pages/Profile.test.tsx +131 -0
  826. camply_web-2.8.0/src/frontend/pages/Profile.tsx +161 -0
  827. camply_web-2.8.0/src/frontend/pages/Providers.tsx +434 -0
  828. camply_web-2.8.0/src/frontend/pages/RecreationArea.test.tsx +101 -0
  829. camply_web-2.8.0/src/frontend/pages/RecreationArea.tsx +251 -0
  830. camply_web-2.8.0/src/frontend/pages/ScanDetail.test.tsx +451 -0
  831. camply_web-2.8.0/src/frontend/pages/ScanDetail.tsx +242 -0
  832. camply_web-2.8.0/src/frontend/pages/SearchPage.test.tsx +463 -0
  833. camply_web-2.8.0/src/frontend/pages/SearchPage.tsx +692 -0
  834. camply_web-2.8.0/src/frontend/pages/TermsOfService.tsx +264 -0
  835. camply_web-2.8.0/src/frontend/pages/admin/AdminAudit.tsx +178 -0
  836. camply_web-2.8.0/src/frontend/pages/admin/AdminInteractions.test.tsx +184 -0
  837. camply_web-2.8.0/src/frontend/pages/admin/AdminOperations.test.tsx +457 -0
  838. camply_web-2.8.0/src/frontend/pages/admin/AdminOperations.tsx +944 -0
  839. camply_web-2.8.0/src/frontend/pages/admin/AdminOverview.tsx +286 -0
  840. camply_web-2.8.0/src/frontend/pages/admin/AdminPages.test.tsx +250 -0
  841. camply_web-2.8.0/src/frontend/pages/admin/AdminScanDetail.tsx +341 -0
  842. camply_web-2.8.0/src/frontend/pages/admin/AdminScans.tsx +372 -0
  843. camply_web-2.8.0/src/frontend/pages/admin/AdminTargetDetail.tsx +347 -0
  844. camply_web-2.8.0/src/frontend/pages/admin/AdminUserDetail.test.tsx +274 -0
  845. camply_web-2.8.0/src/frontend/pages/admin/AdminUserDetail.tsx +621 -0
  846. camply_web-2.8.0/src/frontend/pages/admin/AdminUsers.tsx +557 -0
  847. camply_web-2.8.0/src/frontend/pages/admin/AdminUsersCreate.test.tsx +391 -0
  848. camply_web-2.8.0/src/frontend/public/_routes.json +5 -0
  849. camply_web-2.8.0/src/frontend/public/branding/camply-horizontal-dark.svg +16 -0
  850. camply_web-2.8.0/src/frontend/public/branding/camply-horizontal.svg +16 -0
  851. camply_web-2.8.0/src/frontend/public/branding/camply-icon-dark.svg +16 -0
  852. camply_web-2.8.0/src/frontend/public/branding/camply-icon.svg +16 -0
  853. camply_web-2.8.0/src/frontend/public/branding/camply-stacked-dark.svg +16 -0
  854. camply_web-2.8.0/src/frontend/public/branding/camply-stacked.svg +16 -0
  855. camply_web-2.8.0/src/frontend/public/branding/camply.png +0 -0
  856. camply_web-2.8.0/src/frontend/public/branding/justin-flannery.png +0 -0
  857. camply_web-2.8.0/src/frontend/public/branding/recreation-gov.png +0 -0
  858. camply_web-2.8.0/src/frontend/public/favicon.ico +0 -0
  859. camply_web-2.8.0/src/frontend/public/favicon.svg +17 -0
  860. camply_web-2.8.0/src/frontend/tailwind.config.js +77 -0
  861. camply_web-2.8.0/src/frontend/test/__snapshots__/snapshots.test.tsx.snap +4142 -0
  862. camply_web-2.8.0/src/frontend/test/pages-proxy.test.ts +142 -0
  863. camply_web-2.8.0/src/frontend/test/setup.ts +49 -0
  864. camply_web-2.8.0/src/frontend/test/snapshots.test.tsx +547 -0
  865. camply_web-2.8.0/src/frontend/tooling/admin-live-smoke.ts +52 -0
  866. camply_web-2.8.0/src/frontend/tooling/admin-snapshot-mocks.ts +371 -0
  867. camply_web-2.8.0/src/frontend/tooling/codegen.ts +87 -0
  868. camply_web-2.8.0/src/frontend/tooling/pages.test.ts +20 -0
  869. camply_web-2.8.0/src/frontend/tooling/run-snapshots.ts +1631 -0
  870. camply_web-2.8.0/src/frontend/tooling/snapshot-gallery.html +452 -0
  871. camply_web-2.8.0/src/frontend/tooling/snapshot-navigation.ts +40 -0
  872. camply_web-2.8.0/src/frontend/tooling/snapshot-report.test.ts +148 -0
  873. camply_web-2.8.0/src/frontend/tooling/snapshot-report.ts +187 -0
  874. camply_web-2.8.0/src/frontend/tooling/standalone-live-smoke.ts +52 -0
  875. camply_web-2.8.0/src/frontend/tooling/verify-maps.ts +688 -0
  876. camply_web-2.8.0/src/frontend/tooling/verify-pages.ts +177 -0
  877. camply_web-2.8.0/src/frontend/tooling/verify-snapshot-gallery.ts +216 -0
  878. camply_web-2.8.0/src/frontend/tooling/verify-snapshot-navigation.ts +73 -0
  879. camply_web-2.8.0/src/frontend/tsconfig.json +26 -0
  880. camply_web-2.8.0/src/frontend/vite-env.d.ts +9 -0
  881. camply_web-2.8.0/src/frontend/vite.config.ts +97 -0
  882. camply_web-2.8.0/src/frontend/wrangler.jsonc +9 -0
  883. camply_web-2.8.0/src/hatchling/plugin.py +200 -0
@@ -0,0 +1,89 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg-info/
7
+ .installed.cfg
8
+ *.egg
9
+
10
+ # Testing & Coverage
11
+ htmlcov/
12
+ .tox/
13
+ .nox/
14
+ .coverage
15
+ .coverage.*
16
+ .cache
17
+ nosetests.xml
18
+ coverage.xml
19
+ *.cover
20
+ *.py,cover
21
+ .hypothesis/
22
+ .pytest_cache/
23
+ cover/
24
+
25
+ # Environments
26
+ .env
27
+ .env.*
28
+ !.env.example
29
+ !docs/examples/.env.example
30
+ .venv
31
+ env/
32
+ venv/
33
+ ENV/
34
+
35
+ # Development Tools
36
+ .wrangler/
37
+ .mypy_cache/
38
+ .ruff_cache/
39
+ .import_linter_cache/
40
+ .dmypy.json
41
+ dmypy.json
42
+ .pyre/
43
+ .pytype/
44
+
45
+ # Node.js
46
+ node_modules/
47
+ npm-debug.log*
48
+ yarn-debug.log*
49
+ yarn-error.log*
50
+ pnpm-debug.log*
51
+
52
+ # Build outputs
53
+ build/
54
+ dist/
55
+ out/
56
+ *.tsbuildinfo
57
+ .vitepress/cache/
58
+ .vitepress/dist/
59
+
60
+ # IDE & Editors
61
+ .vscode/
62
+ .idea/
63
+ *.swp
64
+ *.swo
65
+ *~
66
+
67
+ # OS
68
+ .DS_Store
69
+ .DS_Store?
70
+ ._*
71
+ Thumbs.db
72
+ ehthumbs.db
73
+
74
+ # Logs
75
+ *.log
76
+ logs/
77
+
78
+ # Temporary
79
+ tmp/
80
+ temp/
81
+
82
+ # Data
83
+ .data/
84
+
85
+ # Git Worktrees
86
+ .worktrees/
87
+
88
+ # Bundled assets exist only inside release archives.
89
+ src/camply/server/static/
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1,133 @@
1
+ PolyForm Noncommercial License 1.0.0
2
+
3
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
4
+
5
+ Required Notice: Copyright 2025, Justin Flannery (https://github.com/juftin)
6
+
7
+ ---
8
+
9
+ ## Acceptance
10
+
11
+ In order to get any license under these terms, you must agree
12
+ to them as both strict obligations and conditions to all
13
+ your licenses.
14
+
15
+ ## Copyright License
16
+
17
+ The licensor grants you a copyright license for the
18
+ software to do everything you might do with the software
19
+ that would otherwise infringe the licensor's copyright
20
+ in it for any permitted purpose. However, you may
21
+ only distribute the software according to Distribution
22
+ License and make changes or new works
23
+ based on the software according to Changes and New Works
24
+ License.
25
+
26
+ ## Distribution License
27
+
28
+ The licensor grants you an additional copyright license
29
+ to distribute copies of the software. Your license
30
+ to distribute covers distributing the software with
31
+ changes and new works permitted by Changes and New Works
32
+ License.
33
+
34
+ ## Notices
35
+
36
+ You must ensure that anyone who gets a copy of any part of
37
+ the software from you also gets a copy of these terms or the
38
+ URL for them above, as well as copies of any plain-text lines
39
+ beginning with Required Notice: that the licensor provided
40
+ with the software.
41
+
42
+ ## Changes and New Works License
43
+
44
+ The licensor grants you an additional copyright license to
45
+ make changes and new works based on the software for any
46
+ permitted purpose.
47
+
48
+ ## Patent License
49
+
50
+ The licensor grants you a patent license for the software that
51
+ covers patent claims the licensor can license, or becomes able
52
+ to license, that you would infringe by using the software.
53
+
54
+ ## Noncommercial Purposes
55
+
56
+ Any noncommercial purpose is a permitted purpose.
57
+
58
+ ## Personal Uses
59
+
60
+ Personal use for research, experiment, and testing for
61
+ the benefit of public knowledge, personal study, private
62
+ entertainment, hobby projects, amateur pursuits, or religious
63
+ observance, without any anticipated commercial application,
64
+ is use for a permitted purpose.
65
+
66
+ ## Noncommercial Organizations
67
+
68
+ Use by any charitable organization, educational institution,
69
+ public research organization, public safety or health
70
+ organization, environmental protection organization,
71
+ or government institution is use for a permitted purpose
72
+ regardless of the source of funding or obligations resulting
73
+ from the funding.
74
+
75
+ ## Fair Use
76
+
77
+ You may have "fair use" rights for the software under the
78
+ law. These terms do not limit them.
79
+
80
+ ## No Other Rights
81
+
82
+ These terms do not allow you to sublicense or transfer any of
83
+ your licenses to anyone else, or prevent the licensor from
84
+ granting licenses to anyone else. These terms do not imply
85
+ any other licenses.
86
+
87
+ ## Patent Defense
88
+
89
+ If you make any written claim that the software infringes or
90
+ contributes to infringement of any patent, your patent license
91
+ for the software granted under these terms ends immediately. If
92
+ your company makes such a claim, your patent license ends
93
+ immediately for work on behalf of your company.
94
+
95
+ ## Violations
96
+
97
+ The first time you are notified in writing that you have
98
+ violated any of these terms, or done anything with the software
99
+ not covered by your licenses, your licenses can nonetheless
100
+ continue if you come into full compliance with these terms,
101
+ and take practical steps to correct past violations, within
102
+ 32 days of receiving notice. Otherwise, all your licenses
103
+ end immediately.
104
+
105
+ ## No Liability
106
+
107
+ As far as the law allows, the software comes as is, without
108
+ any warranty or condition, and the licensor will not be liable
109
+ to you for any damages arising out of these terms or the use
110
+ or nature of the software, under any kind of legal claim.
111
+
112
+ ## Definitions
113
+
114
+ The licensor is the individual or entity offering these
115
+ terms, and the software is the software the licensor makes
116
+ available under these terms.
117
+
118
+ You refers to the individual or entity agreeing to these
119
+ terms.
120
+
121
+ Your company is any legal entity, sole proprietorship,
122
+ or other kind of organization that you work for, plus all
123
+ organizations that have control over, are under the control of,
124
+ or are under common control with that organization. Control
125
+ means ownership of substantially all the assets of an entity,
126
+ or the power to direct its management and policies by vote,
127
+ contract, or otherwise. Control can be direct or indirect.
128
+
129
+ Your licenses are all the licenses granted to you for the
130
+ software under these terms.
131
+
132
+ Use means anything you do with the software requiring one
133
+ of your licenses.
@@ -0,0 +1,67 @@
1
+ Metadata-Version: 2.5
2
+ Name: camply-web
3
+ Version: 2.8.0
4
+ Summary: A full-stack application to help you find campsites at sold-out campgrounds
5
+ License-Expression: PolyForm-Noncommercial-1.0.0
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.11
8
+ Requires-Dist: aiosqlite<0.23.0,>=0.21.0
9
+ Requires-Dist: alembic<2,>=1
10
+ Requires-Dist: click<9,>=8
11
+ Requires-Dist: fake-useragent>=2.2.0
12
+ Requires-Dist: httpx<0.29.0,>=0.28.0
13
+ Requires-Dist: platformdirs<5,>=4
14
+ Requires-Dist: pydantic-settings<3,>=2
15
+ Requires-Dist: pydantic<3,>=2
16
+ Requires-Dist: rich<16,>=14
17
+ Requires-Dist: sqlalchemy[asyncio]<3,>=2
18
+ Requires-Dist: structlog<27,>=24
19
+ Provides-Extra: distributed
20
+ Requires-Dist: celery[redis]<6,>=5.4; extra == 'distributed'
21
+ Requires-Dist: prometheus-client<1,>=0.21; extra == 'distributed'
22
+ Requires-Dist: redis<9,>=5; extra == 'distributed'
23
+ Provides-Extra: postgres
24
+ Requires-Dist: psycopg[binary]<4,>=3; extra == 'postgres'
25
+ Provides-Extra: sentry
26
+ Requires-Dist: sentry-sdk<3,>=2; extra == 'sentry'
27
+ Provides-Extra: server
28
+ Requires-Dist: cryptography<51,>=42; extra == 'server'
29
+ Requires-Dist: fastapi>=0.115.12; extra == 'server'
30
+ Requires-Dist: gunicorn>=23.0.0; (sys_platform != 'win32') and extra == 'server'
31
+ Requires-Dist: orjson<4,>=3; extra == 'server'
32
+ Requires-Dist: prometheus-client<1,>=0.21; extra == 'server'
33
+ Requires-Dist: pyjwt<3,>=2; extra == 'server'
34
+ Requires-Dist: uvicorn-worker>=0.3.0; (sys_platform != 'win32') and extra == 'server'
35
+ Requires-Dist: uvicorn[standard]>=0.34.0; extra == 'server'
36
+ Description-Content-Type: text/markdown
37
+
38
+ <div align="center">
39
+ <a href="https://camply.juftin.dev">
40
+ <img src="src/frontend/public/branding/camply-horizontal.svg" width="400" alt="camply">
41
+ </a>
42
+ </div>
43
+
44
+ **camply**, the campsite finder ⛺️, watches for openings at sold-out campgrounds and alerts you when a stay matches your plans. Explore campgrounds, save your dates, and follow booking links when availability appears.
45
+
46
+ **[Open camply →](https://camply.juftin.dev)**
47
+
48
+ ## Run camply yourself
49
+
50
+ Install from GitHub with [uv](https://docs.astral.sh/uv/). The Git install builds the web app, so it also needs Git, Node.js 24, and pnpm (see [installation prerequisites](docs/self-hosting/standalone.md#install-from-github)).
51
+
52
+ ```bash
53
+ uv tool install git+https://github.com/juftin/camply-web --with 'camply[server]' --python 3.14
54
+ camply serve
55
+ ```
56
+
57
+ Open <http://127.0.0.1:8000> and use **Sync Providers** in Admin Operations to load the campground catalog. Set up Pushover to receive alerts. The default login uses a shared administrator account; [configure authentication](docs/configuration.md) before sharing your instance.
58
+
59
+ See the [standalone guide](docs/self-hosting/standalone.md) for installation and storage, or self-host with [Docker Compose](docs/self-hosting/containers.md) or [Kubernetes/Helm](deploy/helm/README.md).
60
+
61
+ ## Docs
62
+
63
+ Start with the [camply docs](https://camply.juftin.dev/docs/) for using the app, configuration, and self-hosting ([browse the source](docs/index.md)). Every installation includes docs at `/docs/`, linked from the app footer. Contributors can follow the [contributing guide](docs/CONTRIBUTING.md) and [developer guide](docs/development/DEVELOPER_GUIDE.md); detailed [runtime and packaging](docs/operations/RUNNING.md) and [architecture](docs/architecture/ARCHITECTURE_DEEP_DIVE.md) references are also available.
64
+
65
+ To edit or preview the docs, see [working on the docs](docs/development.md#working-on-the-docs).
66
+
67
+ Licensed under [PolyForm Noncommercial 1.0.0](LICENSE).
@@ -0,0 +1,30 @@
1
+ <div align="center">
2
+ <a href="https://camply.juftin.dev">
3
+ <img src="src/frontend/public/branding/camply-horizontal.svg" width="400" alt="camply">
4
+ </a>
5
+ </div>
6
+
7
+ **camply**, the campsite finder ⛺️, watches for openings at sold-out campgrounds and alerts you when a stay matches your plans. Explore campgrounds, save your dates, and follow booking links when availability appears.
8
+
9
+ **[Open camply →](https://camply.juftin.dev)**
10
+
11
+ ## Run camply yourself
12
+
13
+ Install from GitHub with [uv](https://docs.astral.sh/uv/). The Git install builds the web app, so it also needs Git, Node.js 24, and pnpm (see [installation prerequisites](docs/self-hosting/standalone.md#install-from-github)).
14
+
15
+ ```bash
16
+ uv tool install git+https://github.com/juftin/camply-web --with 'camply[server]' --python 3.14
17
+ camply serve
18
+ ```
19
+
20
+ Open <http://127.0.0.1:8000> and use **Sync Providers** in Admin Operations to load the campground catalog. Set up Pushover to receive alerts. The default login uses a shared administrator account; [configure authentication](docs/configuration.md) before sharing your instance.
21
+
22
+ See the [standalone guide](docs/self-hosting/standalone.md) for installation and storage, or self-host with [Docker Compose](docs/self-hosting/containers.md) or [Kubernetes/Helm](deploy/helm/README.md).
23
+
24
+ ## Docs
25
+
26
+ Start with the [camply docs](https://camply.juftin.dev/docs/) for using the app, configuration, and self-hosting ([browse the source](docs/index.md)). Every installation includes docs at `/docs/`, linked from the app footer. Contributors can follow the [contributing guide](docs/CONTRIBUTING.md) and [developer guide](docs/development/DEVELOPER_GUIDE.md); detailed [runtime and packaging](docs/operations/RUNNING.md) and [architecture](docs/architecture/ARCHITECTURE_DEEP_DIVE.md) references are also available.
27
+
28
+ To edit or preview the docs, see [working on the docs](docs/development.md#working-on-the-docs).
29
+
30
+ Licensed under [PolyForm Noncommercial 1.0.0](LICENSE).