├── public ├── robots.txt ├── favicon.ico ├── img │ └── user.png ├── favicons │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── apple-touch-icon.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── mask-icon.svg │ ├── README.md │ └── favicon.svg ├── fonts │ └── nunito-sans │ │ ├── nunito-sans-v12-latin_latin-ext-200.woff │ │ ├── nunito-sans-v12-latin_latin-ext-300.woff │ │ ├── nunito-sans-v12-latin_latin-ext-600.woff │ │ ├── nunito-sans-v12-latin_latin-ext-700.woff │ │ ├── nunito-sans-v12-latin_latin-ext-800.woff │ │ ├── nunito-sans-v12-latin_latin-ext-900.woff │ │ ├── nunito-sans-v12-latin_latin-ext-200.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-300.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-600.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-700.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-800.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-900.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-italic.woff │ │ ├── nunito-sans-v12-latin_latin-ext-italic.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-regular.woff │ │ ├── nunito-sans-v12-latin_latin-ext-regular.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-200italic.woff │ │ ├── nunito-sans-v12-latin_latin-ext-200italic.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-300italic.woff │ │ ├── nunito-sans-v12-latin_latin-ext-300italic.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-600italic.woff │ │ ├── nunito-sans-v12-latin_latin-ext-600italic.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-700italic.woff │ │ ├── nunito-sans-v12-latin_latin-ext-700italic.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-800italic.woff │ │ ├── nunito-sans-v12-latin_latin-ext-800italic.woff2 │ │ ├── nunito-sans-v12-latin_latin-ext-900italic.woff │ │ └── nunito-sans-v12-latin_latin-ext-900italic.woff2 └── site.webmanifest ├── .npmrc ├── app ├── routes │ ├── resources+ │ │ ├── healthcheck.tsx │ │ ├── note-images.$imageId.tsx │ │ ├── user-images.$imageId.tsx │ │ └── download-user-data.tsx │ ├── _marketing+ │ │ ├── about.tsx │ │ ├── privacy.tsx │ │ ├── support.tsx │ │ ├── tos.tsx │ │ ├── logos │ │ │ ├── remix.png │ │ │ ├── stars.jpg │ │ │ ├── docker.png │ │ │ ├── testing-library.png │ │ │ ├── shadcn-ui.svg │ │ │ ├── radix.svg │ │ │ ├── github.svg │ │ │ ├── typescript.svg │ │ │ ├── eslint.svg │ │ │ ├── sentry.svg │ │ │ ├── msw.svg │ │ │ ├── vitest.svg │ │ │ ├── logos.ts │ │ │ └── tailwind.svg │ │ └── index.tsx │ ├── _auth+ │ │ ├── logout.tsx │ │ └── auth.$provider.ts │ ├── users+ │ │ ├── $username_+ │ │ │ ├── notes.new.tsx │ │ │ ├── notes.index.tsx │ │ │ ├── notes.$noteId_.edit.tsx │ │ │ └── notes.tsx │ │ └── $username.test.tsx │ ├── settings+ │ │ ├── profile.two-factor.tsx │ │ ├── profile.tsx │ │ ├── profile.two-factor.disable.tsx │ │ └── profile.two-factor.index.tsx │ ├── me.tsx │ ├── admin+ │ │ ├── cache_.lru.$cacheKey.ts │ │ ├── cache_.sqlite.$cacheKey.ts │ │ └── cache_.sqlite.tsx │ └── $.tsx ├── components │ ├── ui │ │ ├── icons │ │ │ ├── README.md │ │ │ └── name.d.ts │ │ ├── README.md │ │ ├── label.tsx │ │ ├── textarea.tsx │ │ ├── input.tsx │ │ ├── tooltip.tsx │ │ ├── checkbox.tsx │ │ ├── icon.tsx │ │ ├── status-button.tsx │ │ └── button.tsx │ ├── floating-toolbar.tsx │ ├── confetti.tsx │ ├── toaster.tsx │ ├── spinner.tsx │ ├── spacer.tsx │ ├── error-boundary.tsx │ └── search-bar.tsx ├── utils │ ├── nonce-provider.ts │ ├── monitoring.server.ts │ ├── litefs.server.ts │ ├── verification.server.ts │ ├── request-info.ts │ ├── providers │ │ ├── provider.ts │ │ ├── github.server.ts │ │ └── google.server.ts │ ├── redirect-cookie.server.ts │ ├── theme.server.ts │ ├── user.ts │ ├── misc.error-message.test.ts │ ├── monitoring.client.tsx │ ├── db.server.ts │ ├── connections.server.ts │ ├── user-validation.ts │ ├── session.server.ts │ ├── confetti.server.ts │ ├── connections.tsx │ ├── env.server.ts │ ├── toast.server.ts │ ├── email.server.ts │ ├── misc.use-double-check.test.tsx │ ├── permissions.ts │ └── timing.server.ts ├── entry.client.tsx ├── styles │ └── tailwind.css └── entry.server.tsx ├── types ├── reset.d.ts ├── remix.env.d.ts ├── icon-name.d.ts └── deps.d.ts ├── tests ├── fixtures │ ├── github │ │ └── ghost.jpg │ ├── images │ │ ├── notes │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ ├── user │ │ │ ├── 0.jpg │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ ├── 6.jpg │ │ │ ├── 7.jpg │ │ │ ├── 8.jpg │ │ │ ├── 9.jpg │ │ │ ├── kody.png │ │ │ └── README.md │ │ └── kody-notes │ │ │ ├── mountain.png │ │ │ ├── cute-koala.png │ │ │ ├── koala-coder.png │ │ │ ├── koala-cuddle.png │ │ │ ├── koala-eating.png │ │ │ ├── koala-mentor.png │ │ │ └── koala-soccer.png │ └── google │ │ └── google-avatar.jpg ├── e2e │ ├── error-boundary.test.ts │ └── 2fa.test.ts ├── mocks │ ├── README.md │ ├── resend.ts │ ├── index.ts │ ├── utils.ts │ └── google.ts ├── setup │ ├── global-setup.ts │ ├── setup-test-env.ts │ └── db-setup.ts ├── utils.ts └── db-utils.ts ├── postcss.config.js ├── prisma └── migrations │ └── migration_lock.toml ├── other ├── .dockerignore ├── setup-swap.js ├── sly │ ├── sly.json │ └── transform-icon.ts ├── svg-icons │ ├── README.md │ ├── laptop.svg │ ├── plus.svg │ ├── trash.svg │ ├── google-logo.svg │ ├── check.svg │ ├── arrow-right.svg │ ├── arrow-left.svg │ ├── magnifying-glass.svg │ ├── envelope-closed.svg │ ├── lock-open-1.svg │ ├── pencil-1.svg │ ├── reset.svg │ ├── cross-1.svg │ ├── exit.svg │ ├── lock-closed.svg │ ├── dots-horizontal.svg │ ├── clock.svg │ ├── file-text.svg │ ├── camera.svg │ ├── download.svg │ ├── avatar.svg │ ├── github-logo.svg │ ├── update.svg │ ├── question-mark-circled.svg │ ├── sun.svg │ ├── pencil-2.svg │ ├── link-2.svg │ └── moon.svg ├── README.md ├── sentry-create-release.js ├── patches │ └── remix-utils+6.6.0.patch ├── litefs.yml ├── build-server.ts └── Dockerfile ├── .prettierignore ├── components.json ├── .github └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── COMMUNITY.md ├── server └── dev-server.js ├── vitest.config.ts ├── remix.config.js ├── index.js ├── .env.example ├── .prettierrc.js ├── tailwind.config.ts ├── tsconfig.json ├── playwright.config.ts ├── fly.toml ├── README.md └── .eslintrc.cjs /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | legacy-peer-deps=true 2 | registry=https://registry.npmjs.org/ 3 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/epicweb-dev/epic-oidc/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/img/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/epicweb-dev/epic-oidc/HEAD/public/img/user.png -------------------------------------------------------------------------------- /app/routes/resources+/healthcheck.tsx: -------------------------------------------------------------------------------- 1 | export async function loader() { 2 | return new Response('OK') 3 | } 4 | -------------------------------------------------------------------------------- /app/routes/_marketing+/about.tsx: -------------------------------------------------------------------------------- 1 | export default function AboutRoute() { 2 | return
Select a note
8 |17 | {error.status} {error.data} 18 |
19 | ), 20 | statusHandlers, 21 | unexpectedErrorHandler = error =>{getErrorMessage(error)}
, 22 | }: { 23 | defaultStatusHandler?: StatusHandler 24 | statusHandlers?: Record
32 | {location.pathname}
33 |
34 | 41 | Disabling two factor authentication is not recommended. However, if 42 | you would like to do so, click here: 43 |
44 |
47 |
58 |
63 | Two factor authentication adds an extra layer of security to your 64 | account. You will need to enter a code from an authenticator app 65 | like{' '} 66 | 67 | 1Password 68 | {' '} 69 | to log in. 70 |
71 |45 | Check the{' '} 46 | 50 | Getting Started 51 | {' '} 52 | guide file for how to get your project off the ground! 53 |
54 |No user with the username "{params.username}" exists
95 | ), 96 | }} 97 | /> 98 | ) 99 | } 100 | -------------------------------------------------------------------------------- /other/svg-icons/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | --------------------------------------------------------------------------------