├── .nvmrc ├── .npmrc ├── src ├── components │ ├── ProfileDrawer │ │ ├── types.ts │ │ └── ProfileDrawer.module.scss │ ├── ThemeProvider │ │ ├── ThemeProvider.module.scss │ │ ├── types.ts │ │ └── ThemeProvider.tsx │ ├── Layout │ │ ├── iphone.png │ │ ├── Layout.module.scss │ │ └── Layout.tsx │ ├── CheckIn │ │ ├── Panel │ │ │ ├── types.ts │ │ │ ├── Panel.tsx │ │ │ └── Panel.module.scss │ │ ├── CheckIn.module.scss │ │ ├── OriginStep │ │ │ ├── types.ts │ │ │ └── OriginStep.module.scss │ │ ├── DestinationStep │ │ │ └── types.ts │ │ ├── CheckIn.context.ts │ │ ├── Search │ │ │ ├── Search.module.scss │ │ │ └── Search.tsx │ │ ├── consts.ts │ │ ├── types.ts │ │ ├── NewCurrentStatus │ │ │ ├── NewCurrentStatus.module.scss │ │ │ └── NewCurrentStatus.tsx │ │ └── CurrentStatus │ │ │ ├── CurrentStatus.module.scss │ │ │ └── CurrentStatus.tsx │ ├── StatusCard │ │ └── types.ts │ ├── ProfileImage │ │ ├── ProfileImage.module.scss │ │ └── ProfileImage.tsx │ ├── LegacyTime │ │ ├── types.ts │ │ └── LegacyTime.tsx │ ├── NewLineIndicator │ │ ├── types.ts │ │ ├── NewLineIndicator.module.scss │ │ └── NewLineIndicator.tsx │ ├── Providers │ │ ├── types.ts │ │ └── Providers.tsx │ ├── IconSkew │ │ ├── types.ts │ │ ├── IconSkew.module.scss │ │ └── IconSkew.tsx │ ├── NativeSelect │ │ ├── types.ts │ │ ├── NativeSelect.module.scss │ │ └── NativeSelect.tsx │ ├── Shimmer │ │ ├── types.ts │ │ ├── Shimmer.tsx │ │ └── Shimmer.module.scss │ ├── FilterButton │ │ ├── types.ts │ │ ├── FilterButton.module.scss │ │ └── FilterButton.tsx │ ├── LineIndicator │ │ ├── types.ts │ │ ├── LineIndicator.module.scss │ │ └── LineIndicator.tsx │ ├── ProductIcon │ │ └── types.ts │ ├── Button │ │ ├── types.ts │ │ ├── Button.tsx │ │ └── Button.module.scss │ ├── ScrollArea │ │ ├── types.ts │ │ └── ScrollArea.module.scss │ ├── Time │ │ ├── types.ts │ │ ├── Time.module.scss │ │ └── Time.tsx │ ├── LockBodyScroll │ │ └── LockBodyScroll.tsx │ ├── StopoverSelector │ │ ├── types.ts │ │ └── StopoverSelector.tsx │ ├── TripSelector │ │ └── types.ts │ ├── Notifications │ │ ├── Notifications.module.scss │ │ └── Notifications.tsx │ ├── FullscreenLoading │ │ ├── FullscreenLoading.tsx │ │ └── FullscreenLoading.module.scss │ ├── Overlay │ │ ├── types.ts │ │ └── Overlay.module.scss │ ├── Statuses │ │ ├── Statuses.module.scss │ │ └── Statuses.tsx │ ├── StatusDetails │ │ └── types.ts │ ├── AuthGuard │ │ └── AuthGuard.tsx │ ├── Navbar │ │ ├── Username.tsx │ │ ├── Navbar.module.scss │ │ └── Navbar.tsx │ ├── Route │ │ ├── types.ts │ │ ├── Route.tsx │ │ └── Route.module.scss │ ├── Profile │ │ └── Statuses │ │ │ └── Statuses.tsx │ └── Login │ │ ├── Login.module.scss │ │ └── Login.tsx ├── app │ ├── status │ │ ├── [id] │ │ │ ├── types.ts │ │ │ └── page.tsx │ │ └── page.tsx │ ├── offline │ │ └── page.tsx │ ├── page.tsx │ ├── u │ │ ├── page.tsx │ │ └── [username] │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ ├── login │ │ └── page.tsx │ ├── dashboard │ │ ├── page.tsx │ │ └── layout.tsx │ ├── datenschutz │ │ └── page.tsx │ ├── loading.tsx │ ├── not-found.tsx │ ├── traewelling │ │ ├── statuses │ │ │ ├── dashboard │ │ │ │ └── me │ │ │ │ │ └── route.ts │ │ │ ├── route.ts │ │ │ ├── current │ │ │ │ └── route.ts │ │ │ └── [status] │ │ │ │ ├── route.ts │ │ │ │ └── like │ │ │ │ └── route.ts │ │ ├── dashboard │ │ │ ├── global │ │ │ │ └── route.ts │ │ │ ├── route.ts │ │ │ └── future │ │ │ │ └── route.ts │ │ ├── user │ │ │ └── [username] │ │ │ │ └── statuses │ │ │ │ └── route.ts │ │ ├── me │ │ │ └── route.ts │ │ ├── stations │ │ │ ├── history │ │ │ │ └── route.ts │ │ │ ├── autocomplete │ │ │ │ └── route.ts │ │ │ ├── nearby │ │ │ │ └── route.ts │ │ │ ├── checkin │ │ │ │ └── route.ts │ │ │ └── [station] │ │ │ │ └── route.ts │ │ ├── notifications │ │ │ └── unread │ │ │ │ └── route.ts │ │ └── trips │ │ │ └── route.ts │ ├── global-error.jsx │ ├── impressum │ │ └── page.tsx │ ├── api │ │ ├── revalidate │ │ │ └── route.ts │ │ ├── trips │ │ │ └── route.ts │ │ ├── dashboard │ │ │ └── route.ts │ │ ├── statuses │ │ │ └── current │ │ │ │ └── route.ts │ │ └── stations │ │ │ └── [station] │ │ │ └── route.ts │ └── layout.tsx ├── hooks │ ├── useOverlayScroll │ │ ├── types.ts │ │ └── useOverlayScroll.ts │ ├── useUmami │ │ ├── types.ts │ │ └── useUmami.ts │ ├── useDepartures │ │ ├── types.ts │ │ └── useDepartures.ts │ ├── useConsecutiveOverlays │ │ ├── types.ts │ │ └── useConsecutiveOverlays.ts │ ├── useCheckIn │ │ └── useCheckIn.ts │ ├── useAppTheme │ │ └── useAppTheme.ts │ ├── useDashboard │ │ └── useDashboard.ts │ ├── useNotifications │ │ └── useNotifications.ts │ ├── useLockBodyScroll │ │ └── useLockBodyScroll.ts │ ├── useIsDesktop │ │ └── useIsDesktop.ts │ ├── useCurrentStatus │ │ └── useCurrentStatus.ts │ ├── useRecentStations │ │ └── useRecentStations.ts │ ├── useStatus │ │ └── useStatus.ts │ ├── useUserStatuses │ │ └── useUserStatus.ts │ ├── useTrip │ │ └── useTrip.ts │ ├── useStops │ │ └── useStops.ts │ └── useStationSearch │ │ └── useStationSearch.ts ├── types │ ├── db-clean-station-name.d.ts │ ├── global.d.ts │ ├── next-auth.d.ts │ └── aboard.ts ├── utils │ ├── formatDate.ts │ ├── formatTime.ts │ ├── sortByLevenshtein.ts │ ├── debounce.ts │ ├── api │ │ ├── createResponse.ts │ │ ├── createErrorResponse.ts │ │ └── getSafeUrlParams.ts │ └── parseSchedule.ts ├── helpers │ ├── getContrastColor.ts │ ├── getStopsAfter.ts │ ├── lineAppearance │ │ ├── fetcher.ts │ │ ├── index.ts │ │ └── consts.ts │ ├── identifyLineByMagic │ │ └── index.ts │ └── getLineTheme │ │ ├── getLineTheme.ts │ │ └── consts.ts ├── overlays │ ├── SelectDestination │ │ ├── types.ts │ │ ├── SelectDestination.module.scss │ │ └── SelectDestination.overlay.tsx │ └── CompleteCheckIn │ │ └── types.ts ├── page-templates │ ├── dashboard.module.scss │ └── dashboard.tsx ├── traewelling-sdk │ ├── index.ts │ ├── functions │ │ ├── auth.ts │ │ ├── notifications.ts │ │ ├── station.ts │ │ ├── dashboard.ts │ │ ├── user.ts │ │ └── status.ts │ ├── hafasTypes.ts │ └── types.ts ├── scripts │ └── UmamiScript │ │ └── UmamiScript.tsx ├── styles │ ├── fonts.ts │ └── globals.css ├── pages │ ├── _error.jsx │ └── api │ │ └── auth │ │ └── [...nextauth].ts └── contexts │ └── CheckIn │ ├── reducer.ts │ ├── CheckIn.context.tsx │ └── types.ts ├── tools └── component-generator │ ├── templates │ ├── styles.hbs │ ├── types.hbs │ └── component.hbs │ └── plopfile.js ├── public ├── favicon.ico ├── freiburg.png ├── assets │ └── icons │ │ ├── icon-48x48.png │ │ ├── icon-72x72.png │ │ ├── icon-96x96.png │ │ ├── icon-128x128.png │ │ ├── icon-144x144.png │ │ ├── icon-152x152.png │ │ ├── icon-192x192.png │ │ ├── icon-384x384.png │ │ └── icon-512x512.png └── manifest.json ├── middleware.js ├── .prettierrc.json ├── .env.example ├── .eslintrc.json ├── .vscode ├── settings.json └── tasks.json ├── .gitignore ├── sentry.server.config.ts ├── sentry.edge.config.ts ├── tsconfig.json ├── sentry.client.config.ts ├── README.md ├── package.json └── next.config.js /.nvmrc: -------------------------------------------------------------------------------- 1 | 20 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | save-prefix="" 2 | -------------------------------------------------------------------------------- /src/components/ProfileDrawer/types.ts: -------------------------------------------------------------------------------- 1 | export type ProfileDrawerProps = {} 2 | -------------------------------------------------------------------------------- /tools/component-generator/templates/styles.hbs: -------------------------------------------------------------------------------- 1 | .base { 2 | margin: 0; 3 | } 4 | -------------------------------------------------------------------------------- /tools/component-generator/templates/types.hbs: -------------------------------------------------------------------------------- 1 | export type {{name}}Props = {} 2 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/freiburg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/freiburg.png -------------------------------------------------------------------------------- /src/components/ThemeProvider/ThemeProvider.module.scss: -------------------------------------------------------------------------------- 1 | .base { 2 | display: contents; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/status/[id]/types.ts: -------------------------------------------------------------------------------- 1 | export type StatusPageProps = { 2 | params: { 3 | id: string; 4 | }; 5 | }; 6 | -------------------------------------------------------------------------------- /src/components/Layout/iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/src/components/Layout/iphone.png -------------------------------------------------------------------------------- /src/hooks/useOverlayScroll/types.ts: -------------------------------------------------------------------------------- 1 | export type UseOverlayScrollProps = { 2 | disableScroll?: boolean; 3 | }; 4 | -------------------------------------------------------------------------------- /public/assets/icons/icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-48x48.png -------------------------------------------------------------------------------- /public/assets/icons/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-72x72.png -------------------------------------------------------------------------------- /public/assets/icons/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-96x96.png -------------------------------------------------------------------------------- /middleware.js: -------------------------------------------------------------------------------- 1 | export { default } from 'next-auth/middleware'; 2 | 3 | export const config = { matcher: ['/dashboard'] }; 4 | -------------------------------------------------------------------------------- /public/assets/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-128x128.png -------------------------------------------------------------------------------- /public/assets/icons/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-144x144.png -------------------------------------------------------------------------------- /public/assets/icons/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-152x152.png -------------------------------------------------------------------------------- /public/assets/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-192x192.png -------------------------------------------------------------------------------- /public/assets/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-384x384.png -------------------------------------------------------------------------------- /public/assets/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunrisesdev/aboard/HEAD/public/assets/icons/icon-512x512.png -------------------------------------------------------------------------------- /src/app/offline/page.tsx: -------------------------------------------------------------------------------- 1 | export default function Page() { 2 | return
Could not find requested resource
6 | > 7 | ); 8 | } 9 | -------------------------------------------------------------------------------- /src/components/NewLineIndicator/types.ts: -------------------------------------------------------------------------------- 1 | import { AboardLine } from '@/types/aboard'; 2 | 3 | export type NewLineIndicatorProps = { 4 | line: AboardLine; 5 | noOutline?: boolean; 6 | }; 7 | -------------------------------------------------------------------------------- /src/app/u/[username]/layout.tsx: -------------------------------------------------------------------------------- 1 | import { PropsWithChildren } from 'react'; 2 | 3 | export default async function Layout({ children }: PropsWithChildren) { 4 | return
5 | Mailboxde.com GmbH
6 |
nbank, ID 176434
7 |
Äussere Weberstr. 57
8 |
02763 Zittau, GERMANY
9 |
10 | aboard@sunrises.dev
11 |
{JSON.stringify(userData, null, 2)}
42 |