An annotated tour of the directory structure — what each area is for, why it matters to a newcomer, and the files worth opening first.
app/routescore domainEvery URL the app serves, as React Router route modules whose file and folder names generate the route manifest; loaders, actions, UI and error boundaries live together per route.
app/routes/_authcore domainAll identity flows without a URL prefix: password login, email signup and onboarding, password reset, the shared /verify code step, GitHub OAuth start and callback, and passkey sign-in and registration.
app/routes/userscore domainThe Epic Notes domain: user search, public profiles, and each user's notes with image attachments, including the shared editor used for creating and editing.
app/routes/settings/profilecore domainAccount settings under one layout: profile details, photo, password create and change, email change, OAuth connections, passkeys, and enabling or disabling two-factor authentication.
app/routes/resourcesadapterRoutes with no page of their own that other pages and infrastructure call: the image optimiser, the Fly health check, the theme preference cookie and the JSON export of a user's data.
app/routes/admin/cachesupportingAn admin-only browser for cache keys across LiteFS instances, and the token-protected endpoint replicas use to write cache entries on the primary.
app/utilscore infrastructureShared modules routes call instead of reaching for libraries directly; *.server.ts files are server-only concerns (auth, database, cache, storage, email, env), the rest are isomorphic helpers and hooks.
app/componentsdesign systemThe UI building blocks: shadcn/ui-derived primitives in ui/, form field compositions for Conform, and a few app-shell components mounted by root.tsx.
app/styles/tailwind.cssconfigThe whole Tailwind v4 configuration: light and dark colour custom properties, their @theme inline mapping, the named type scale, radii, keyframe animations and the container utility.
serverentrypointThe Node process around the React Router app: the Express server with its middleware stack, the request handler Vite builds for production, and Sentry setup.
prismadataDatabase schema, the single initial migration (which also inserts roles and permissions), the development seed with the kody admin user, and raw SQL compiled by TypedSQL.
teststestsEverything tests need except the unit tests themselves (which sit next to code in app/): Playwright specs and fixtures, MSW handlers, Vitest global and per-worker setup, and image fixtures.
otherconfigDeployment and tooling files kept out of the root: the Dockerfile Fly builds, the LiteFS config, raw SVG icons for the sprite, and the Sly icon CLI config.
docsdocsAdopter documentation per topic, 47 numbered decision records explaining why the stack is shaped this way, and SKILL.md guides for AI coding agents working in an Epic Stack app.
.github/workflowsdeliveryThe single CI and CD workflow that lints, type-checks, unit-tests and end-to-end-tests every change and deploys pushes to main and dev on Fly.
remix.initsupportingPost-generation script run when a new project is created from the template: renames the app, writes .env with a random session secret, removes template-only files and can provision Fly apps, volumes, Consul and Tigris.