├── .nvmrc ├── .vercelignore ├── __mocks__ ├── @algolia │ └── autocomplete-theme-classic.js ├── @apollo │ └── client │ │ └── useQuery.ts ├── next-auth │ └── react.ts └── next │ └── router.ts ├── src ├── app │ ├── api │ │ ├── user │ │ │ ├── get-signed-url │ │ │ │ ├── getBucketPathFromRequest.ts │ │ │ │ └── route.ts │ │ │ ├── remove-media │ │ │ │ └── route.ts │ │ │ └── me │ │ │ │ └── route.ts │ │ ├── auth │ │ │ ├── [...nextauth] │ │ │ │ └── route.ts │ │ │ └── logout │ │ │ │ └── route.ts │ │ ├── invalidateHomePageCache │ │ │ └── route.ts │ │ ├── mobile │ │ │ ├── login │ │ │ │ └── errorHandler.ts │ │ │ └── refreshToken │ │ │ │ └── route.ts │ │ ├── invalidateClimbPageCache │ │ │ └── route.ts │ │ ├── invalidateAreaPageCache │ │ │ └── route.ts │ │ ├── revalidate │ │ │ └── route.ts │ │ └── basecamp │ │ │ └── users │ │ │ └── route.ts │ ├── (area) │ │ └── topo │ │ │ ├── layout.tsx │ │ │ └── [id] │ │ │ ├── loading.tsx │ │ │ └── page.tsx │ ├── (default) │ │ ├── gallery │ │ │ ├── [uuid] │ │ │ │ ├── @modal │ │ │ │ │ ├── default.tsx │ │ │ │ │ └── (.)modal │ │ │ │ │ │ └── [photoId] │ │ │ │ │ │ └── page.tsx │ │ │ │ └── layout.tsx │ │ │ ├── types.ts │ │ │ ├── components │ │ │ │ ├── GalleryModalOpener.tsx │ │ │ │ └── PhotoDisplay.tsx │ │ │ └── util │ │ │ │ └── downloadPhoto.ts │ │ ├── editArea │ │ │ └── [slug] │ │ │ │ ├── manageTopos │ │ │ │ └── components │ │ │ │ │ ├── topo.jpg │ │ │ │ │ ├── topo2.jpg │ │ │ │ │ └── topo3.jpg │ │ │ │ ├── page.tsx │ │ │ │ ├── loading.tsx │ │ │ │ └── manageClimbs │ │ │ │ └── components │ │ │ │ ├── sorting │ │ │ │ └── SortableClimbItem.tsx │ │ │ │ └── ClimbListMiniToolbar.tsx │ │ ├── area │ │ │ └── [[...slug]] │ │ │ │ ├── loading.tsx │ │ │ │ └── sections │ │ │ │ ├── SubAreasSection.tsx │ │ │ │ └── ClimbListSection.tsx │ │ ├── about │ │ │ └── page.tsx │ │ ├── account │ │ │ ├── edit-profile │ │ │ │ └── page.tsx │ │ │ └── change-username │ │ │ │ └── page.tsx │ │ ├── components │ │ │ ├── ShowEmailJS.tsx │ │ │ ├── ui │ │ │ │ ├── Summary.tsx │ │ │ │ ├── GlobalAlerts.tsx │ │ │ │ ├── SectionContainer.tsx │ │ │ │ └── StickyHeaderContainer.tsx │ │ │ ├── LandingCTA.tsx │ │ │ ├── AreaAndClimb │ │ │ │ └── EditAreaContainers.tsx │ │ │ ├── Topo │ │ │ │ └── Topo.tsx │ │ │ ├── MobileHeader.tsx │ │ │ ├── FinancialContributors.tsx │ │ │ ├── InternationalToC.tsx │ │ │ ├── SharePageURLButton.tsx │ │ │ └── international-data.ts │ │ ├── auth │ │ │ └── verify-request │ │ │ │ └── page.tsx │ │ ├── a │ │ │ └── [[...slug]] │ │ │ │ └── page.tsx │ │ ├── editClimb │ │ │ └── [slug] │ │ │ │ ├── loading.tsx │ │ │ │ └── validation.ts │ │ ├── edit │ │ │ └── page.tsx │ │ ├── login │ │ │ └── page.tsx │ │ ├── climb │ │ │ └── [[...slug]] │ │ │ │ └── components │ │ │ │ ├── ContentBlock.tsx │ │ │ │ └── SiblingClimbs.tsx │ │ ├── layout.tsx │ │ └── u │ │ │ └── [username] │ │ │ └── ticks │ │ │ └── page.tsx │ ├── basecamp │ │ ├── layout.tsx │ │ └── users │ │ │ └── page.tsx │ ├── (maps) │ │ ├── maps │ │ │ └── page.tsx │ │ ├── components │ │ │ └── ProfileMenu.tsx │ │ └── layout.tsx │ └── layout.tsx ├── js │ ├── graphql │ │ ├── __mocks__ │ │ │ ├── Client.ts │ │ │ └── api.ts │ │ ├── gql │ │ │ ├── pulse.ts │ │ │ ├── opencollective.ts │ │ │ ├── breadcrumbs.ts │ │ │ ├── serverApi.ts │ │ │ └── media.ts │ │ ├── pulse.ts │ │ ├── contribAPI.ts │ │ ├── getClimbRSC.ts │ │ ├── dynamicTagsLink.ts │ │ ├── getAreaRSC.ts │ │ ├── ServerClient.ts │ │ └── opencollective.ts │ ├── types │ │ ├── INext.ts │ │ ├── pages.ts │ │ └── next-auth.d.ts │ ├── hooks │ │ ├── index.ts │ │ ├── seo │ │ │ ├── index.ts │ │ │ └── useUserProfileSeo.ts │ │ ├── useCanary.ts │ │ ├── useReturnToProfile.ts │ │ ├── auth │ │ │ └── usePermissions.ts │ │ └── useBodyScrollLock.ts │ ├── setupTests.ts │ ├── configs │ │ └── clientConfig.ts │ ├── constants.ts │ ├── auth │ │ ├── mobile.ts │ │ ├── withMobileAuth.ts │ │ ├── withUserAuth.ts │ │ └── forOwnerOnly.ts │ ├── typesense │ │ └── __mocks__ │ │ │ └── TypesenseClient.ts │ ├── mapbox │ │ ├── __mocks__ │ │ │ └── MapboxClient.ts │ │ └── MapboxClient.ts │ ├── GeoHelpers.ts │ ├── grades │ │ └── bandUtil.ts │ ├── media │ │ └── storageClient.ts │ └── stores │ │ └── util.ts ├── tests │ └── e2e │ │ └── __tests__ │ │ └── Media.ts ├── components │ ├── __mocks__ │ │ ├── MobileAppBar.tsx │ │ └── DesktopAppBar.tsx │ ├── ui │ │ ├── MCard.tsx │ │ ├── BarPercent.d.ts │ │ ├── form │ │ │ ├── index.tsx │ │ │ ├── Checkbox.tsx │ │ │ └── __tests__ │ │ │ │ └── FormHelper.tsx │ │ ├── __tests__ │ │ │ ├── Chip.tsx │ │ │ ├── __snapshots__ │ │ │ │ └── CounterPie.tsx.snap │ │ │ ├── MobileNavBar.tsx │ │ │ ├── MiniBreadcrumbs.tsx │ │ │ ├── LeanPopover.tsx │ │ │ ├── Card.tsx │ │ │ ├── MobilePage.tsx │ │ │ └── MobileDialog.tsx │ │ ├── SingleStat.js │ │ ├── Statistics │ │ │ └── DensityBar.tsx │ │ ├── Sheet.tsx │ │ ├── Card.tsx │ │ ├── RouteTypeChips.tsx │ │ ├── YDSRangeSlider.tsx │ │ ├── BoulderRangeSlider.tsx │ │ ├── BackerCard.tsx │ │ ├── Counter.tsx │ │ ├── LinkToGithub.js │ │ ├── TableView.tsx │ │ ├── RangeSlider.tsx │ │ ├── MobileNavBar.tsx │ │ ├── DesktopNavBar.tsx │ │ ├── MediaCard.tsx │ │ ├── AreaCard.tsx │ │ ├── NavMenuButton.tsx │ │ ├── RouteGradeChip.tsx │ │ ├── BarPercent.js │ │ ├── MobileFilterPopover.tsx │ │ ├── Drawer.tsx │ │ ├── RouteCard.tsx │ │ ├── MobilePage.tsx │ │ ├── Button.tsx │ │ ├── Spinner.tsx │ │ └── Chip.tsx │ ├── search │ │ ├── sources │ │ │ ├── index.tsx │ │ │ └── AreaSource.tsx │ │ ├── Tabs.tsx │ │ └── CragFinderTemplates.tsx │ ├── editor │ │ ├── index.tsx │ │ ├── plugins │ │ │ ├── PlainTextEditModePlugin.ts │ │ │ ├── ReactHookFormFieldPlugin.tsx │ │ │ ├── ForceParagraphBreaks.ts │ │ │ ├── SingleLinePlugin.ts │ │ │ └── MarkdownPreviewPlugin.ts │ │ ├── themes │ │ │ ├── MDPreview.ts │ │ │ └── DefaultTheme.ts │ │ └── FormSaveAction.tsx │ ├── EntityIcons.tsx │ ├── CTAEmailSignup.tsx │ ├── auth │ │ └── NextAuthProvider.tsx │ ├── crag │ │ ├── nearbyCrags.tsx │ │ └── disciplineDist.tsx │ ├── __tests__ │ │ └── Header.tsx │ ├── users │ │ ├── EditProfileButton.tsx │ │ ├── account │ │ │ └── AccountLayout.tsx │ │ ├── APIKeyCopy.tsx │ │ └── __tests__ │ │ │ └── EditProfileButton.tsx │ ├── ClientOnly.tsx │ ├── Utils.tsx │ ├── colors.ts │ ├── cues │ │ └── Entities.tsx │ ├── broadcast │ │ ├── SuppressButton.tsx │ │ └── AppAlert.tsx │ ├── finder │ │ ├── filters │ │ │ ├── MobileFilterBar.tsx │ │ │ ├── DesktopFilterBar.tsx │ │ │ └── DisciplineFilter.tsx │ │ └── Download.tsx │ ├── basecamp │ │ ├── utils.tsx │ │ └── CreateUpdateModal.tsx │ ├── media │ │ ├── PhotoUploadButtons.tsx │ │ ├── PhotoUploadError.tsx │ │ ├── UploadCTA.tsx │ │ └── __tests__ │ │ │ └── Tag.tsx │ ├── GitHubStars.tsx │ ├── logbook │ │ └── ChartsSection.tsx │ ├── edit │ │ ├── SortableItem.tsx │ │ ├── form │ │ │ ├── TotalLengthInput.tsx │ │ │ └── LegacyFAInput.tsx │ │ ├── alerts │ │ │ └── Alerts.tsx │ │ └── __tests__ │ │ │ └── ArticleLastUpdate.tsx │ ├── toast │ │ └── ReactToastifyProvider.tsx │ ├── core │ │ ├── HoverCard.tsx │ │ └── Card.tsx │ ├── Icon.tsx │ ├── area │ │ └── areaList.tsx │ ├── maps │ │ ├── AreaActiveMarker.tsx │ │ └── MapSelector.tsx │ ├── TypeLabels.js │ ├── HomeHero.tsx │ ├── layout.tsx │ ├── AreaStatistics.js │ └── Header.tsx ├── images │ └── lukas-schulz-n6uOlqYPMXY-unsplash.jpg ├── styles │ └── global.css ├── assets │ └── icons │ │ ├── list.svg │ │ ├── plus-sm.svg │ │ ├── search.svg │ │ ├── xcircle.svg │ │ ├── upload.svg │ │ ├── twitter.inline.svg │ │ ├── pencil-sm.svg │ │ ├── hmore.svg │ │ ├── droppin.svg │ │ ├── grid.svg │ │ ├── link.svg │ │ ├── photo.svg │ │ ├── tree.svg │ │ ├── li.inline.svg │ │ └── network-square-icon.svg ├── image-loader.js ├── server.js └── openbeta-api-utils.js ├── ob-arch-v0.9.png ├── public ├── favicon.ico ├── hero-map.jpg ├── tortilla.png ├── liberty-bell-hero.jpeg ├── south-africa-og.jpeg ├── fonts │ ├── VCTRMono-Black.otf │ ├── VCTRMono-Bold.otf │ ├── VCTRMono-Light.otf │ ├── VCTRMono-Thin.otf │ ├── VCTRMono-Medium.otf │ ├── VCTRMono-Regular.otf │ ├── VCTRMono-BoldItalic.otf │ ├── VCTRMono-ThinItalic.otf │ ├── VCTRMono-BlackItalic.otf │ ├── VCTRMono-LightItalic.otf │ ├── VCTRMono-MediumItalic.otf │ └── VCTRMono-RegularItalic.otf ├── liberty-bell-hero2.jpeg ├── ray-phung-bouldering.jpg ├── openbeta-logo-192x192.png ├── images │ └── map-thumbnails │ │ ├── dark.webp │ │ ├── light.webp │ │ ├── outdoor.webp │ │ └── satellite.webp ├── Become-OpenBeta-Partner-Dec-2024.pdf ├── GetItOnGooglePlay_Badge_Web_color.png ├── robots.txt └── .well-known │ └── assetlinks.json ├── climb-history-chart.png ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── workflows │ ├── mirror.yml │ ├── discord-messages.yml │ ├── lighthouse-on-pr.yml │ └── nodejs.yml └── pull_request_template.md ├── .dockerignore ├── .husky └── pre-commit ├── openbeta-v0.7-screenshot.png ├── additional.d.ts ├── postcss.config.js ├── certificates └── readme.md ├── .travis.yml ├── nixpacks.toml ├── lighthouserc.json ├── .vscode ├── settings.json └── launch.json ├── railway.toml ├── jest.config.js ├── .gitlab-ci.yml └── tsconfig.json /.nvmrc: -------------------------------------------------------------------------------- 1 | 20 -------------------------------------------------------------------------------- /.vercelignore: -------------------------------------------------------------------------------- 1 | *.md 2 | .all-contributorsrc 3 | -------------------------------------------------------------------------------- /__mocks__/@algolia/autocomplete-theme-classic.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/api/user/get-signed-url/getBucketPathFromRequest.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /__mocks__/@apollo/client/useQuery.ts: -------------------------------------------------------------------------------- 1 | export const watchQuery = jest.fn() 2 | -------------------------------------------------------------------------------- /src/js/graphql/__mocks__/Client.ts: -------------------------------------------------------------------------------- 1 | export const graphqlClient = jest.fn() 2 | -------------------------------------------------------------------------------- /ob-arch-v0.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/ob-arch-v0.9.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/hero-map.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/hero-map.jpg -------------------------------------------------------------------------------- /public/tortilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/tortilla.png -------------------------------------------------------------------------------- /climb-history-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/climb-history-chart.png -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | open_collective: openbeta 4 | -------------------------------------------------------------------------------- /src/tests/e2e/__tests__/Media.ts: -------------------------------------------------------------------------------- 1 | import '' 2 | 3 | test.skip('End-to-end test', async () => { 4 | }) 5 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.png 3 | *.node_modules 4 | .next 5 | .husky 6 | .vscode 7 | .git 8 | .github 9 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | yarn lint 4 | yarn test 5 | yarn build 6 | -------------------------------------------------------------------------------- /openbeta-v0.7-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/openbeta-v0.7-screenshot.png -------------------------------------------------------------------------------- /public/liberty-bell-hero.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/liberty-bell-hero.jpeg -------------------------------------------------------------------------------- /public/south-africa-og.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/south-africa-og.jpeg -------------------------------------------------------------------------------- /src/app/(area)/topo/layout.tsx: -------------------------------------------------------------------------------- 1 | import Layout from '../../(default)/layout' 2 | 3 | export default Layout 4 | -------------------------------------------------------------------------------- /public/fonts/VCTRMono-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-Black.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-Bold.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-Light.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-Thin.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-Thin.otf -------------------------------------------------------------------------------- /public/liberty-bell-hero2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/liberty-bell-hero2.jpeg -------------------------------------------------------------------------------- /public/ray-phung-bouldering.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/ray-phung-bouldering.jpg -------------------------------------------------------------------------------- /public/fonts/VCTRMono-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-Medium.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-Regular.otf -------------------------------------------------------------------------------- /public/openbeta-logo-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/openbeta-logo-192x192.png -------------------------------------------------------------------------------- /public/fonts/VCTRMono-BoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-BoldItalic.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-ThinItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-ThinItalic.otf -------------------------------------------------------------------------------- /src/app/(area)/topo/[id]/loading.tsx: -------------------------------------------------------------------------------- 1 | export default function Loading (): JSX.Element { 2 | return

Loading...

3 | } 4 | -------------------------------------------------------------------------------- /src/app/(default)/gallery/[uuid]/@modal/default.tsx: -------------------------------------------------------------------------------- 1 | export default function ModalDefault (): null { 2 | return null 3 | } 4 | -------------------------------------------------------------------------------- /src/components/__mocks__/MobileAppBar.tsx: -------------------------------------------------------------------------------- 1 | export default function MobileAppBar (): any { 2 | return 'mobile app bar' 3 | } 4 | -------------------------------------------------------------------------------- /public/fonts/VCTRMono-BlackItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-BlackItalic.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-LightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-LightItalic.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-MediumItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-MediumItalic.otf -------------------------------------------------------------------------------- /public/fonts/VCTRMono-RegularItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/fonts/VCTRMono-RegularItalic.otf -------------------------------------------------------------------------------- /public/images/map-thumbnails/dark.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/images/map-thumbnails/dark.webp -------------------------------------------------------------------------------- /public/images/map-thumbnails/light.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/images/map-thumbnails/light.webp -------------------------------------------------------------------------------- /src/components/__mocks__/DesktopAppBar.tsx: -------------------------------------------------------------------------------- 1 | export default function DesktopAppBar (): any { 2 | return 'desktop app bar' 3 | } 4 | -------------------------------------------------------------------------------- /src/js/types/INext.ts: -------------------------------------------------------------------------------- 1 | import type { NextPage } from 'next' 2 | 3 | export type INextPageWithAuth = NextPage & { auth: boolean } 4 | -------------------------------------------------------------------------------- /public/images/map-thumbnails/outdoor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/images/map-thumbnails/outdoor.webp -------------------------------------------------------------------------------- /public/Become-OpenBeta-Partner-Dec-2024.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/Become-OpenBeta-Partner-Dec-2024.pdf -------------------------------------------------------------------------------- /public/GetItOnGooglePlay_Badge_Web_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/GetItOnGooglePlay_Badge_Web_color.png -------------------------------------------------------------------------------- /public/images/map-thumbnails/satellite.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/public/images/map-thumbnails/satellite.webp -------------------------------------------------------------------------------- /__mocks__/next-auth/react.ts: -------------------------------------------------------------------------------- 1 | export function useSession (): any { 2 | return { 3 | status: 'authenticated', 4 | data: {} 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /additional.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.png' 2 | declare module '*.jpg' 3 | declare module '*.jpeg' 4 | declare module '*.svg' 5 | declare module '*.gif' 6 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | 'postcss-import': {}, 4 | autoprefixer: {}, 5 | tailwindcss: {} 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/images/lukas-schulz-n6uOlqYPMXY-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/src/images/lukas-schulz-n6uOlqYPMXY-unsplash.jpg -------------------------------------------------------------------------------- /src/js/hooks/index.ts: -------------------------------------------------------------------------------- 1 | import useCanary from './useCanary' 2 | import useResponsive from './useResponsive' 3 | 4 | export { 5 | useCanary, 6 | useResponsive 7 | } 8 | -------------------------------------------------------------------------------- /src/js/types/pages.ts: -------------------------------------------------------------------------------- 1 | export interface PageSlugType { 2 | slug: string [] 3 | } 4 | 5 | export interface PageWithCatchAllUuidProps { 6 | params: PageSlugType 7 | } 8 | -------------------------------------------------------------------------------- /src/components/ui/MCard.tsx: -------------------------------------------------------------------------------- 1 | export default function MCard (): JSX.Element { 2 | return (
foo
) 3 | } 4 | -------------------------------------------------------------------------------- /src/app/(default)/editArea/[slug]/manageTopos/components/topo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/src/app/(default)/editArea/[slug]/manageTopos/components/topo.jpg -------------------------------------------------------------------------------- /src/app/(default)/editArea/[slug]/manageTopos/components/topo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/src/app/(default)/editArea/[slug]/manageTopos/components/topo2.jpg -------------------------------------------------------------------------------- /src/app/(default)/editArea/[slug]/manageTopos/components/topo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenBeta/open-tacos/HEAD/src/app/(default)/editArea/[slug]/manageTopos/components/topo3.jpg -------------------------------------------------------------------------------- /certificates/readme.md: -------------------------------------------------------------------------------- 1 | To run https: 2 | https://dev.to/nakib/using-https-on-next-js-local-development-server-bcd 3 | 1. install `mkcert` 4 | 2. Run `mkcert -install` 5 | 3. Run `mkcert localhost` -------------------------------------------------------------------------------- /src/components/search/sources/index.tsx: -------------------------------------------------------------------------------- 1 | import { xsearchTypesense } from './TypesenseXSearchSources' 2 | import { searchPoi } from './PoiSource' 3 | 4 | export { xsearchTypesense, searchPoi } 5 | -------------------------------------------------------------------------------- /src/js/setupTests.ts: -------------------------------------------------------------------------------- 1 | import * as ResizeObserverModule from 'resize-observer-polyfill' 2 | import '@testing-library/jest-dom' 3 | (global as any).ResizeObserver = ResizeObserverModule.default 4 | -------------------------------------------------------------------------------- /src/styles/global.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss/base"; 2 | @import "tailwindcss/components"; 3 | @import "tailwindcss/utilities"; 4 | 5 | @import './algolia.css'; 6 | @import './defaults.css'; 7 | -------------------------------------------------------------------------------- /src/app/api/auth/[...nextauth]/route.ts: -------------------------------------------------------------------------------- 1 | import NextAuth from 'next-auth' 2 | import { authOptions } from './authOptions' 3 | 4 | const handler = NextAuth(authOptions) 5 | export { handler as GET, handler as POST } 6 | -------------------------------------------------------------------------------- /src/js/configs/clientConfig.ts: -------------------------------------------------------------------------------- 1 | if (process.env.NEXT_PUBLIC_CDN_URL == null) throw new Error('NEXT_PUBLIC_CDN_URL not set') 2 | 3 | export const CLIENT_CONFIG = { 4 | CDN_BASE_URL: process.env.NEXT_PUBLIC_CDN_URL 5 | } 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '14' 4 | cache: yarn 5 | before_script: 6 | - "npm i -g gatsby" 7 | script: 8 | - export NODE_ENV=test 9 | - yarn analyze 10 | - ./prebuild.sh full && gatsby build 11 | -------------------------------------------------------------------------------- /src/components/editor/index.tsx: -------------------------------------------------------------------------------- 1 | import InplaceTextInput from './InplaceTextInput' 2 | import InplaceEditor from './InplaceEditor' 3 | import CsvEditor from './CsvEditor' 4 | 5 | export { InplaceEditor, InplaceTextInput, CsvEditor } 6 | -------------------------------------------------------------------------------- /src/js/graphql/__mocks__/api.ts: -------------------------------------------------------------------------------- 1 | export const getCragDetailsNear = jest.fn().mockImplementation(() => { 2 | console.log('## mock graphql') 3 | return { 4 | data: [], 5 | error: 'API error', 6 | placeId: undefined 7 | } 8 | }) 9 | -------------------------------------------------------------------------------- /src/assets/icons/list.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/assets/icons/plus-sm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/components/EntityIcons.tsx: -------------------------------------------------------------------------------- 1 | import NetworkSquareIcon from '../assets/icons/network-square-icon.svg' 2 | 3 | export const AreaEntityIcon = (): JSX.Element => 4 | 5 | -------------------------------------------------------------------------------- /src/assets/icons/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/components/ui/BarPercent.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | interface BarPercentProps { 4 | percents?: number[] 5 | colors?: string[] 6 | styles?: string 7 | } 8 | 9 | declare const BarPercent: React.FC 10 | export default BarPercent 11 | -------------------------------------------------------------------------------- /src/components/ui/form/index.tsx: -------------------------------------------------------------------------------- 1 | import Input from './Input' 2 | import RadioGroup from './RadioGroup' 3 | import TextArea from './TextArea' 4 | import Checkbox from './Checkbox' 5 | import Select from './Select' 6 | 7 | export { Input, RadioGroup, TextArea, Checkbox, Select } 8 | -------------------------------------------------------------------------------- /src/app/(default)/area/[[...slug]]/loading.tsx: -------------------------------------------------------------------------------- 1 | import { DefaultPageContainer } from '@/app/(default)/components/ui/DefaultPageContainer' 2 | 3 | /** 4 | * Loading skeleton for /area/ page. 5 | */ 6 | export default function Loading (): JSX.Element { 7 | return () 8 | } 9 | -------------------------------------------------------------------------------- /src/assets/icons/xcircle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/assets/icons/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /nixpacks.toml: -------------------------------------------------------------------------------- 1 | [phases.setup] 2 | nixPkgs = ["nodejs_20"] 3 | 4 | [phases.install] 5 | cmds = ["yarn install --no-progress --silence"] 6 | 7 | [phases.build] 8 | cmds = ["yarn build"] 9 | 10 | [start] 11 | cmd = "yarn start" 12 | 13 | [variables] 14 | NODE_ENV = 'production' 15 | DEPLOYMENT_ENV = 'railway' 16 | -------------------------------------------------------------------------------- /src/assets/icons/twitter.inline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/components/CTAEmailSignup.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const CTAEmailSignup = (props: any): JSX.Element => 4 |