├── .npmrc
├── app
├── routes
│ ├── admin+
│ │ ├── cache_.sqlite.tsx
│ │ ├── cache_.lru.$cacheKey.ts
│ │ ├── cache_.sqlite.$cacheKey.ts
│ │ └── cache_.sqlite.server.ts
│ ├── _marketing+
│ │ ├── about.tsx
│ │ ├── privacy.tsx
│ │ ├── support.tsx
│ │ ├── tos.tsx
│ │ └── logos
│ │ │ ├── stars.jpg
│ │ │ ├── testing-library.png
│ │ │ ├── shadcn-ui.svg
│ │ │ ├── radix.svg
│ │ │ ├── tailwind.svg
│ │ │ ├── github.svg
│ │ │ ├── typescript.svg
│ │ │ ├── eslint.svg
│ │ │ ├── sentry.svg
│ │ │ ├── remix.svg
│ │ │ ├── msw.svg
│ │ │ └── vitest.svg
│ ├── _auth+
│ │ ├── logout.tsx
│ │ ├── onboarding.server.ts
│ │ ├── onboarding_.$provider.server.ts
│ │ ├── auth_.$provider.ts
│ │ ├── reset-password.server.ts
│ │ └── webauthn+
│ │ │ └── utils.server.ts
│ ├── _seo+
│ │ ├── robots[.]txt.ts
│ │ └── sitemap[.]xml.ts
│ ├── users+
│ │ ├── $username_+
│ │ │ ├── notes.new.tsx
│ │ │ ├── notes.index.tsx
│ │ │ └── notes.$noteId_.edit.tsx
│ │ ├── index.tsx
│ │ └── $username.test.tsx
│ ├── settings+
│ │ ├── profile.two-factor.tsx
│ │ ├── profile.two-factor.disable.tsx
│ │ ├── profile.tsx
│ │ ├── profile.two-factor.index.tsx
│ │ └── profile.change-email.server.tsx
│ ├── me.tsx
│ ├── mcp+
│ │ ├── index.ts
│ │ └── mcp.server.ts
│ ├── resources+
│ │ ├── healthcheck.tsx
│ │ ├── download-user-data.tsx
│ │ └── images.tsx
│ └── $.tsx
├── assets
│ └── favicons
│ │ ├── apple-touch-icon.png
│ │ └── favicon.svg
├── utils
│ ├── providers
│ │ ├── constants.ts
│ │ └── provider.ts
│ ├── totp.server.ts
│ ├── nonce-provider.ts
│ ├── verification.server.ts
│ ├── litefs.server.ts
│ ├── honeypot.server.ts
│ ├── redirect-cookie.server.ts
│ ├── request-info.ts
│ ├── theme.server.ts
│ ├── connections.server.ts
│ ├── misc.error-message.test.ts
│ ├── monitoring.client.tsx
│ ├── headers.server.test.ts
│ ├── db.server.ts
│ ├── session.server.ts
│ ├── permissions.server.ts
│ ├── client-hints.tsx
│ ├── connections.tsx
│ ├── user-validation.ts
│ ├── toast.server.ts
│ ├── user.ts
│ ├── env.server.ts
│ ├── email.server.ts
│ ├── misc.use-double-check.test.tsx
│ ├── timing.server.ts
│ └── headers.server.ts
├── components
│ ├── floating-toolbar.tsx
│ ├── ui
│ │ ├── README.md
│ │ ├── label.tsx
│ │ ├── textarea.tsx
│ │ ├── input.tsx
│ │ ├── sonner.tsx
│ │ ├── checkbox.tsx
│ │ ├── tooltip.tsx
│ │ ├── button.tsx
│ │ ├── input-otp.tsx
│ │ ├── status-button.tsx
│ │ └── icon.tsx
│ ├── toaster.tsx
│ ├── spacer.tsx
│ ├── error-boundary.tsx
│ ├── search-bar.tsx
│ ├── progress-bar.tsx
│ └── user-dropdown.tsx
├── entry.client.tsx
└── routes.ts
├── public
├── favicon.ico
├── img
│ └── user.png
├── favicons
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ └── README.md
└── site.webmanifest
├── types
├── env.env.d.ts
├── reset.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
├── mocks
│ ├── pwned-passwords.ts
│ ├── README.md
│ ├── resend.ts
│ ├── index.ts
│ ├── utils.ts
│ └── tigris.ts
├── e2e
│ ├── error-boundary.test.ts
│ └── 2fa.test.ts
├── setup
│ ├── db-setup.ts
│ ├── global-setup.ts
│ └── setup-test-env.ts
├── utils.ts
└── db-utils.ts
├── prisma
├── migrations
│ └── migration_lock.toml
└── sql
│ └── searchUsers.sql
├── other
├── Dockerfile.dockerignore
├── sly
│ ├── sly.json
│ └── transform-icon.ts
├── svg-icons
│ ├── README.md
│ ├── laptop.svg
│ ├── plus.svg
│ ├── trash.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
│ ├── passkey.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
├── README.md
├── build-server.ts
├── litefs.yml
└── Dockerfile
├── .prettierignore
├── eslint.config.js
├── .github
└── PULL_REQUEST_TEMPLATE.md
├── components.json
├── tsconfig.json
├── .gitignore
├── server
├── dev-server.js
└── utils
│ └── monitoring.ts
├── react-router.config.ts
├── index.js
├── playwright.config.ts
├── .env.example
├── fly.toml
├── .cursor
└── rules
│ └── avoid-use-effect.mdc
└── vite.config.ts
/.npmrc:
--------------------------------------------------------------------------------
1 | legacy-peer-deps=true
2 | registry=https://registry.npmjs.org/
3 |
--------------------------------------------------------------------------------
/app/routes/admin+/cache_.sqlite.tsx:
--------------------------------------------------------------------------------
1 | export { action } from './cache_.sqlite.server.ts'
2 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/epic-mcp/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/img/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/epicweb-dev/epic-mcp/HEAD/public/img/user.png
--------------------------------------------------------------------------------
/types/env.env.d.ts:
--------------------------------------------------------------------------------
1 | ///
Select a note
8 |No note with the id "{params.noteId}" exists
47 | ), 48 | }} 49 | /> 50 | ) 51 | } 52 | -------------------------------------------------------------------------------- /other/build-server.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import { fileURLToPath } from 'node:url' 3 | import esbuild from 'esbuild' 4 | import fsExtra from 'fs-extra' 5 | import { globSync } from 'glob' 6 | 7 | const pkg = fsExtra.readJsonSync(path.join(process.cwd(), 'package.json')) 8 | 9 | const __dirname = path.dirname(fileURLToPath(import.meta.url)) 10 | const here = (...s: Array19 | {error.status} {error.data} 20 |
21 | ), 22 | statusHandlers, 23 | unexpectedErrorHandler = (error) =>{getErrorMessage(error)}
, 24 | }: { 25 | defaultStatusHandler?: StatusHandler 26 | statusHandlers?: Record
36 | {location.pathname}
37 |
38 | 44 | Disabling two factor authentication is not recommended. However, if 45 | you would like to do so, click here: 46 |
47 |No users found
70 | ) 71 | ) : loaderData.status === 'error' ? ( 72 |
51 |
62 |
67 | Two factor authentication adds an extra layer of security to your 68 | account. You will need to enter a code from an authenticator app 69 | like{' '} 70 | 71 | 1Password 72 | {' '} 73 | to log in. 74 |
75 |
85 |
90 |
106 |
112 |
119 |