gitextract_2mwlqf4v/ ├── .eslintrc.js ├── .gitignore ├── .npmrc ├── .vscode/ │ ├── next-fast-turbo.code-workspace │ └── settings.json ├── LICENCE ├── README.md ├── apps/ │ ├── api/ │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── settings.json │ │ ├── README.md │ │ ├── harry-potter-db-seed-spells.csv │ │ ├── harry-potter-db-seed-users.csv │ │ ├── package.json │ │ ├── poetry.toml │ │ ├── pyproject.toml │ │ ├── requirements.txt │ │ ├── run.py │ │ ├── src/ │ │ │ ├── __init__.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── api_v1/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── api.py │ │ │ │ │ └── endpoints/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── spells.py │ │ │ │ │ └── users.py │ │ │ │ └── deps.py │ │ │ ├── config.py │ │ │ ├── crud/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── crud_spell.py │ │ │ │ └── crud_user.py │ │ │ ├── main.py │ │ │ └── schemas/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── spell.py │ │ │ └── user.py │ │ ├── tests/ │ │ │ ├── __init__.py │ │ │ └── test_api.py │ │ └── vercel.json │ ├── docs/ │ │ ├── .vscode/ │ │ │ └── extensions.json │ │ ├── api/ │ │ │ ├── spells/ │ │ │ │ ├── get-all-spells.mdx │ │ │ │ ├── get-spell.mdx │ │ │ │ └── search-spells.mdx │ │ │ └── users/ │ │ │ ├── create-user.mdx │ │ │ ├── get-all-users.mdx │ │ │ ├── get-user.mdx │ │ │ └── search-users.mdx │ │ ├── documentation/ │ │ │ ├── configuration/ │ │ │ │ ├── docs.mdx │ │ │ │ ├── fastapi.mdx │ │ │ │ ├── nextjs.mdx │ │ │ │ └── turbo.mdx │ │ │ ├── deployment/ │ │ │ │ └── deployment.mdx │ │ │ ├── introduction.mdx │ │ │ └── local-development.mdx │ │ ├── mint.json │ │ ├── openapi.json │ │ └── package.json │ └── web/ │ ├── .eslintrc.js │ ├── .vscode/ │ │ └── launch.json │ ├── app/ │ │ ├── globals.css │ │ ├── layout.tsx │ │ ├── page.tsx │ │ ├── placeholder-stats.tsx │ │ └── settings/ │ │ └── page.tsx │ ├── components/ │ │ ├── demo-exercise.tsx │ │ ├── demo-goal.tsx │ │ ├── demo-revenue.tsx │ │ ├── demo-subscriptions.tsx │ │ ├── flex-wrapper.tsx │ │ ├── grid-wrapper.tsx │ │ ├── icons.tsx │ │ ├── layouts/ │ │ │ └── dashboard/ │ │ │ ├── DashboardLayout.module.css │ │ │ ├── DashboardLayout.tsx │ │ │ ├── index.ts │ │ │ └── layout-components/ │ │ │ ├── Footer/ │ │ │ │ ├── Footer.module.css │ │ │ │ ├── Footer.tsx │ │ │ │ └── index.ts │ │ │ ├── Header/ │ │ │ │ ├── Header.tsx │ │ │ │ └── index.ts │ │ │ ├── Sidebar/ │ │ │ │ ├── NavLink.tsx │ │ │ │ ├── NavLinks.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ ├── SidebarMobile.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── search-users.tsx │ │ ├── tailwind-indicator.tsx │ │ ├── theme/ │ │ │ ├── mode-toggle.tsx │ │ │ ├── theme-provider.tsx │ │ │ └── theme.css │ │ ├── typography.tsx │ │ └── ui/ │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── dropdown-menu.tsx │ │ ├── form.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── radio-group.tsx │ │ ├── separator.tsx │ │ ├── skeleton.tsx │ │ └── tooltip.tsx │ ├── components.json │ ├── lib/ │ │ ├── api/ │ │ │ └── client/ │ │ │ ├── core/ │ │ │ │ ├── ApiError.ts │ │ │ │ ├── ApiRequestOptions.ts │ │ │ │ ├── ApiResult.ts │ │ │ │ ├── CancelablePromise.ts │ │ │ │ ├── OpenAPI.ts │ │ │ │ └── request.ts │ │ │ ├── index.ts │ │ │ ├── models/ │ │ │ │ ├── HTTPValidationError.ts │ │ │ │ ├── Spell.ts │ │ │ │ ├── SpellSearchResults.ts │ │ │ │ ├── User.ts │ │ │ │ ├── UserCreate.ts │ │ │ │ ├── UserSearchResults.ts │ │ │ │ └── ValidationError.ts │ │ │ └── services/ │ │ │ ├── SpellsService.ts │ │ │ └── UsersService.ts │ │ ├── config/ │ │ │ ├── index.ts │ │ │ └── nav.tsx │ │ ├── twConfig.ts │ │ └── utils.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── postcss.config.js │ ├── tailwind.config.js │ └── tsconfig.json ├── package.json ├── packages/ │ ├── eslint-config/ │ │ ├── README.md │ │ ├── library.js │ │ ├── next.js │ │ ├── package.json │ │ └── react-internal.js │ └── typescript-config/ │ ├── base.json │ ├── nextjs.json │ ├── package.json │ └── react-library.json ├── pnpm-workspace.yaml ├── tsconfig.json └── turbo.json