[{"data":1,"prerenderedAt":914},["ShallowReactive",2],{"\u002Fblog\u002Fnuxt-folder-structure-step-by-step-guide-data":3},{"post":4,"surround":903},{"id":5,"title":6,"alternates":7,"authors":8,"badge":14,"body":16,"date":861,"dateModified":862,"description":26,"extension":863,"head":862,"hero_image_url":25,"json_ld":864,"meta":886,"navigation":887,"ogImage":862,"outbound_links":888,"path":889,"primary_keyword":890,"related_articles":891,"robots":862,"schemaOrg":862,"search_intent":892,"seo":893,"sitemap":894,"stem":895,"supporting_keywords":896,"tags":901,"__hash__":902},"blog_en\u002Fblog\u002Fnuxt-folder-structure-step-by-step-guide.md","Nuxt Folder Structure: A Practical Step-by-Step Guide",[],[9],{"name":10,"to":11,"avatar":12},"Tom Han","https:\u002F\u002Fx.com\u002Ftomhan245",{"src":13},"https:\u002F\u002Fcdn.shipahe.ad\u002Ftomhan.webp",{"label":15},"How-to",{"type":17,"value":18,"toc":831},"minimark",[19,28,32,35,40,43,233,237,242,269,273,276,315,318,322,382,386,407,411,423,427,436,440,459,463,466,633,636,640,644,681,685,740,743,747,750,762,766,787],[20,21,22],"figure",{},[23,24],"img",{"src":25,"alt":26,"style":27},"https:\u002F\u002Fshipahe.ad\u002Fimages\u002Fblog\u002Fnuxt-folder-structure-step-by-step-guide\u002Fpost-745.webp","A practical Nuxt folder structure guide with setup steps, examples, and pitfalls to avoid so your SaaS stays organized, predictable, and ready to ship.","max-width:100%;border-radius:12px",[29,30,31],"p",{},"Nuxt lets you move fast. Speed fades when folders drift, names get vague, and every new screen needs a scavenger hunt. A crisp Nuxt folder structure keeps work predictable, reviews short, and changes safe. The patterns below hold up for MVPs and full SaaS apps with auth, billing, admin, i18n, and AI features.",[29,33,34],{},"The aim is simple. Make it obvious where things live, keep layers thin, and let Nuxt conventions do the wiring so you write feature code, not glue.",[36,37,39],"h2",{"id":38},"how-nuxt-maps-folders-to-behavior","How Nuxt maps folders to behavior",[29,41,42],{},"Nuxt favors convention over custom setup. Use these defaults and your app stays discoverable as it grows.",[44,45,46,47,46,83,46,101,46,114,46,132,46,150,46,173,46,191,46,218,46,227],"ul",{},"\n  ",[48,49,50,54,55,59,60,63,64,59,67,70,71,74,75,78,79,82],"li",{},[51,52,53],"strong",{},"pages\u002F",". Files become routes. ",[56,57,58],"em",{},"pages\u002Findex.vue"," is ",[56,61,62],{},"\u002F",". ",[56,65,66],{},"pages\u002Fpricing.vue",[56,68,69],{},"\u002Fpricing",". Dynamic and nested routes use brackets and folders like ",[56,72,73],{},"pages\u002Fusers\u002F[id].vue"," and ",[56,76,77],{},"pages\u002Fusers\u002F[id]\u002Fsettings.vue",". Catch all with ",[56,80,81],{},"[...slug].vue"," when needed.",[48,84,85,88,89,92,93,96,97,100],{},[51,86,87],{},"layouts\u002F",". Page wrappers. Add ",[56,90,91],{},"layouts\u002Fdefault.vue"," and any section-specific layout such as ",[56,94,95],{},"layouts\u002Fdashboard.vue",". Opt in from a page with ",[56,98,99],{},"definePageMeta({ layout: 'dashboard' })",".",[48,102,103,106,107,74,110,113],{},[51,104,105],{},"components\u002F",". Auto imported by name. Favor domain folders like ",[56,108,109],{},"components\u002Fbilling\u002FCardForm.vue",[56,111,112],{},"components\u002Fadmin\u002FUserTable.vue",". Use clear nouns so intent is obvious wherever the component is used.",[48,115,116,119,120,123,124,127,128,131],{},[51,117,118],{},"composables\u002F",". Auto imported functions that hold state or logic. Use the ",[56,121,122],{},"useX"," naming pattern, for example ",[56,125,126],{},"composables\u002Fauth\u002FuseSession.ts"," or ",[56,129,130],{},"composables\u002Fbilling\u002FuseInvoices.ts",". Keep them pure and testable.",[48,133,134,137,138,141,142,145,146,149],{},[51,135,136],{},"middleware\u002F",". Route middleware files, run before a page renders. Create ",[56,139,140],{},"middleware\u002Fauth.ts"," and call it by name in pages via ",[56,143,144],{},"definePageMeta({ middleware: 'auth' })",". Add ",[56,147,148],{},"*.global.ts"," to run on all routes when you truly need it.",[48,151,152,155,156,127,159,162,163,127,166,169,170,100],{},[51,153,154],{},"plugins\u002F",". Initialization that runs before app mount. Provide injections like ",[56,157,158],{},"$analytics",[56,160,161],{},"$payments",". Scope to client or server with ",[56,164,165],{},".client.ts",[56,167,168],{},".server.ts",", for example ",[56,171,172],{},"plugins\u002Fanalytics.client.ts",[48,174,175,178,179,182,183,186,187,190],{},[51,176,177],{},"server\u002Fapi\u002F",". Nitro server routes. File names map to endpoints and HTTP methods, such as ",[56,180,181],{},"server\u002Fapi\u002Finvoices.get.ts",", ",[56,184,185],{},"server\u002Fapi\u002Finvoices.post.ts",", or ",[56,188,189],{},"server\u002Fapi\u002Fbilling\u002Fwebhook.post.ts",". Keep business logic in server utils, not inlined in handlers.",[48,192,193,196,197,63,200,202,203,205,206,208,209,127,212,215,216,100],{},[51,194,195],{},"assets\u002F"," vs ",[51,198,199],{},"public\u002F",[56,201,195],{}," is built by Vite and supports imports in Vue and CSS. ",[56,204,199],{}," is served as-is at the site root. Put imported images, fonts, and styles in ",[56,207,195],{},". Put files referenced by URL, like ",[56,210,211],{},"\u002Frobots.txt",[56,213,214],{},"\u002Fimages\u002Fog-cover.jpg",", in ",[56,217,199],{},[48,219,220,74,223,226],{},[51,221,222],{},"app.vue",[51,224,225],{},"app.config.ts",". Your app shell and app-level meta. Centralize default SEO, headers, theme color, and root layout concerns here.",[48,228,229,232],{},[51,230,231],{},"error.vue",". Global error UI for unhandled exceptions and 404s. Keep it minimal and fast.",[36,234,236],{"id":235},"a-clean-repeatable-structure-in-7-steps","A clean, repeatable structure in 7 steps",[238,239,241],"h3",{"id":240},"_1-create-the-baseline-directories","1) Create the baseline directories",[29,243,244,245,182,247,182,249,182,251,182,253,182,255,182,257,182,259,182,261,182,263,265,266,268],{},"Start with ",[56,246,53],{},[56,248,87],{},[56,250,105],{},[56,252,118],{},[56,254,154],{},[56,256,136],{},[56,258,177],{},[56,260,195],{},[56,262,199],{},[56,264,222],{},", and ",[56,267,225],{},". That backbone prevents ad hoc folders later.",[238,270,272],{"id":271},"_2-group-by-feature-inside-the-standard-folders","2) Group by feature inside the standard folders",[29,274,275],{},"Favor domain folders rather than deep nested pages. Keep Nuxt auto imports working by nesting inside conventional folders.",[44,277,46,278,46,290,46,298,46,306],{},[48,279,280,281,182,284,182,287],{},"Pages: ",[56,282,283],{},"pages\u002Fbilling\u002Findex.vue",[56,285,286],{},"pages\u002Fbilling\u002Fsubscribe.vue",[56,288,289],{},"pages\u002Faccount\u002Findex.vue",[48,291,292,293,182,295],{},"Components: ",[56,294,109],{},[56,296,297],{},"components\u002Faccount\u002FProfileForm.vue",[48,299,300,301,182,303],{},"Composables: ",[56,302,130],{},[56,304,305],{},"composables\u002Faccount\u002FuseProfile.ts",[48,307,308,309,182,312],{},"API: ",[56,310,311],{},"server\u002Fapi\u002Fbilling\u002Fcheckout.post.ts",[56,313,314],{},"server\u002Fapi\u002Faccount\u002Fprofile.get.ts",[29,316,317],{},"Rule of thumb: if a feature spans pages, UI, logic, and API, it earns a folder with the same name across those layers. Anyone can jump to the feature across the stack in seconds.",[238,319,321],{"id":320},"_3-use-clear-naming-conventions","3) Use clear naming conventions",[44,323,46,324,46,340,46,356,46,368],{},[48,325,326,327,330,331,182,334,182,337,100],{},"Components in ",[51,328,329],{},"PascalCase"," with a concrete noun, optionally prefixed by domain: ",[56,332,333],{},"BillingPlanPicker.vue",[56,335,336],{},"InvoiceTable.vue",[56,338,339],{},"CardForm.vue",[48,341,342,343,346,347,182,350,182,353,100],{},"Composables prefixed with ",[51,344,345],{},"use"," and a verb or domain: ",[56,348,349],{},"useInvoices.ts",[56,351,352],{},"billing\u002FuseCheckout.ts",[56,354,355],{},"auth\u002FuseSession.ts",[48,357,358,359,182,362,182,365,100],{},"API routes with method suffixes: ",[56,360,361],{},"invoices.get.ts",[56,363,364],{},"checkout.post.ts",[56,366,367],{},"users\u002F[id].patch.ts",[48,369,370,371,374,375,182,378,381],{},"Route files in ",[51,372,373],{},"kebab-case",": ",[56,376,377],{},"user-settings.vue",[56,379,380],{},"team-members.vue",". Keep route depth shallow and link deeper UI via components.",[238,383,385],{"id":384},"_4-keep-auth-and-access-control-obvious","4) Keep auth and access control obvious",[29,387,388,389,391,392,394,395,398,399,402,403,406],{},"Put route guards in ",[56,390,140],{}," and call them from protected pages using ",[56,393,144],{},". For server routes, check the session at the top of each handler and bail fast on failure. Create ",[56,396,397],{},"pages\u002Fauth\u002F"," for login, register, and reset. Put all protected app screens under a clear path like ",[56,400,401],{},"pages\u002Fapp\u002F"," or use a dedicated ",[56,404,405],{},"dashboard"," layout so access control stays visible in code review.",[238,408,410],{"id":409},"_5-isolate-integrations-in-plugins","5) Isolate integrations in plugins",[29,412,413,414,416,417,419,420,422],{},"Initialize third-party clients in ",[56,415,154],{}," and expose a single injection. Examples include analytics, a payment SDK, feature flags, and an i18n client. Use ",[56,418,165],{}," for browser-only libraries and ",[56,421,168],{}," for server-only setup. Keep business rules out of plugins and inside composables or server utils.",[238,424,426],{"id":425},"_6-separate-static-files-from-processed-assets","6) Separate static files from processed assets",[29,428,429,430,432,433,435],{},"Images imported in components belong in ",[56,431,195],{}," so Vite can optimize them. Files referenced by absolute path live in ",[56,434,199],{},". This avoids surprising bundle size changes and broken URLs during deploys.",[238,437,439],{"id":438},"_7-keep-environment-and-runtime-config-tidy","7) Keep environment and runtime config tidy",[29,441,442,443,446,447,450,451,454,455,458],{},"Put secrets in ",[56,444,445],{},".env"," and map them into Nuxt runtime config. Expose only what the browser needs in ",[56,448,449],{},"runtimeConfig.public",". Co-locate any shared types for config in ",[56,452,453],{},"types\u002F",". Do not import ",[56,456,457],{},"process.env"," across your app; read from runtime config in server and composables.",[36,460,462],{"id":461},"saas-ready-examples-by-feature","SaaS-ready examples by feature",[29,464,465],{},"Map common SaaS features to Nuxt folders so everything lines up the same way in every project.",[44,467,46,468,46,509,46,543,46,573,46,602],{},[48,469,470,473,474,46],{},[51,471,472],{},"Authentication","\n    ",[44,475,476,477,476,488,476,495,476,503,473],{},"\n      ",[48,478,280,479,182,482,182,485],{},[56,480,481],{},"pages\u002Fauth\u002Flogin.vue",[56,483,484],{},"pages\u002Fauth\u002Fregister.vue",[56,486,487],{},"pages\u002Fauth\u002Freset.vue",[48,489,300,490,182,492],{},[56,491,126],{},[56,493,494],{},"composables\u002Fauth\u002FuseMagicLink.ts",[48,496,308,497,182,500],{},[56,498,499],{},"server\u002Fapi\u002Fauth\u002Flogin.post.ts",[56,501,502],{},"server\u002Fapi\u002Fauth\u002Fcallback.get.ts",[48,504,505,506,508],{},"Middleware: ",[56,507,140],{}," for protected pages",[48,510,511,473,514,46],{},[51,512,513],{},"Billing",[44,515,476,516,476,522,476,529,476,537,473],{},[48,517,280,518,182,520],{},[56,519,283],{},[56,521,286],{},[48,523,292,524,182,527],{},[56,525,526],{},"components\u002Fbilling\u002FPlanPicker.vue",[56,528,109],{},[48,530,300,531,182,534],{},[56,532,533],{},"composables\u002Fbilling\u002FusePlans.ts",[56,535,536],{},"composables\u002Fbilling\u002FuseCheckout.ts",[48,538,308,539,182,541],{},[56,540,311],{},[56,542,189],{},[48,544,545,473,548,46],{},[51,546,547],{},"Internationalization",[44,549,476,550,476,557,476,567,473],{},[48,551,552,553,556],{},"Plugins: ",[56,554,555],{},"plugins\u002Fi18n.client.ts"," to register the i18n instance",[48,558,559,560,182,563,566],{},"Locales: ",[56,561,562],{},"locales\u002Fen.json",[56,564,565],{},"locales\u002Ffr.json"," with keys grouped by feature",[48,568,292,569,572],{},[56,570,571],{},"components\u002Fi18n\u002FLanguageSwitcher.vue"," for in-app language changes",[48,574,575,473,578,46],{},[51,576,577],{},"Admin",[44,579,476,580,476,588,476,594,473],{},[48,581,280,582,182,585],{},[56,583,584],{},"pages\u002Fadmin\u002Findex.vue",[56,586,587],{},"pages\u002Fadmin\u002Fusers.vue",[48,589,590,591,593],{},"Layout: ",[56,592,95],{}," for nav, sidebar, and breadcrumbs",[48,595,308,596,182,599],{},[56,597,598],{},"server\u002Fapi\u002Fadmin\u002Fusers.get.ts",[56,600,601],{},"server\u002Fapi\u002Fadmin\u002Fban.post.ts",[48,603,604,473,607,46],{},[51,605,606],{},"AI features",[44,608,476,609,476,617,476,625,473],{},[48,610,280,611,182,614],{},[56,612,613],{},"pages\u002Fai\u002Fchat.vue",[56,615,616],{},"pages\u002Fai\u002Fgenerate.vue",[48,618,300,619,182,622],{},[56,620,621],{},"composables\u002Fai\u002FuseChat.ts",[56,623,624],{},"composables\u002Fai\u002FuseImageGen.ts",[48,626,308,627,182,630],{},[56,628,629],{},"server\u002Fapi\u002Fai\u002Fchat.post.ts",[56,631,632],{},"server\u002Fapi\u002Fai\u002Fimage.post.ts",[29,634,635],{},"If you are asking “How do I build and sell an AI tool online”, this mapping keeps auth, billing, and AI endpoints obvious from day one so you spend time on product behavior, not wiring.",[36,637,639],{"id":638},"scaling-without-chaos","Scaling without chaos",[238,641,643],{"id":642},"practical-guardrails","Practical guardrails",[44,645,46,646,46,652,46,661,46,671],{},[48,647,648,651],{},[51,649,650],{},"Prefer feature folders over deep nesting."," Keep routes shallow. Push complexity into components and composables so URLs stay readable and reviews focus on one concern at a time.",[48,653,654,657,658,660],{},[51,655,656],{},"Use layouts for app sections."," A ",[56,659,405],{}," layout can own nav and chrome. Pages stay about content and data fetching.",[48,662,663,666,667,670],{},[51,664,665],{},"Write a naming guide and enforce it."," Add it to ",[56,668,669],{},"CONTRIBUTING.md",". Lint and types in CI prevent broken imports and implicit any types from slipping in.",[48,672,673,676,677,680],{},[51,674,675],{},"Document server endpoints."," Keep a short ",[56,678,679],{},"server\u002FREADME.md"," with routes, owners, and payload shapes. It pays for itself the first time you are on-call.",[238,682,684],{"id":683},"common-pitfalls-to-avoid","Common pitfalls to avoid",[44,686,46,687,46,699,46,705,46,721,46,727],{},[48,688,689,692,693,695,696,698],{},[51,690,691],{},"Mixing assets and public."," Imported assets go in ",[56,694,195],{},". Files served by URL only go in ",[56,697,199],{},". Mixing them causes bad caches and broken links.",[48,700,701,704],{},[51,702,703],{},"Hiding logic in plugins."," Plugins initialize libraries and provide injections. Put business logic in composables and server utils so it can be tested and reused.",[48,706,707,710,711,714,715,127,717,720],{},[51,708,709],{},"Ambiguous component names."," ",[56,712,713],{},"Table.vue"," is noise. ",[56,716,336],{},[56,718,719],{},"UserTable.vue"," explains intent instantly.",[48,722,723,726],{},[51,724,725],{},"Dynamic routes without validation."," Always validate params in server handlers. Use explicit types in composables that consume them.",[48,728,729,732,733,735,736,739],{},[51,730,731],{},"No boundary between public and protected pages."," Use a clear path like ",[56,734,401],{}," or a dedicated layout. Apply ",[56,737,738],{},"auth"," middleware every time.",[29,741,742],{},"When work goes beyond housekeeping, a partner like RedStudio can audit routes, components, and server handlers and suggest a pragmatic path to consolidate or split features.",[36,744,746],{"id":745},"when-a-starter-kit-saves-weeks","When a starter kit saves weeks",[29,748,749],{},"If you would rather buy a Nuxt boilerplate and skip weeks of setup, a Nuxt SaaS starter kit provides a proven layout and production features. For example, the Nuxt SaaS boilerplate offered on shipahe.ad includes user authentication with email, password, magic links, and Google, protected pages, an admin panel, checkout flows for one-time or subscription payments with multiple providers, multi-language support with an in-app switch, transactional emails, a preconfigured database with an ORM, S3 compatible file storage, AI chat and generation tools, scheduled cron jobs, a blog, built-in analytics, and SEO tools. That frees your structure to focus on features instead of wiring signups, billing, and admin.",[29,751,752,753,755,756,758,759,761],{},"If you already have a codebase, you can still adopt a Nuxt starter template pattern over time. Move view files into ",[56,754,53],{},", extract logic into ",[56,757,118],{},", and fold server work into ",[56,760,177],{},". Whether you call it a Nuxt starter kit, a Nuxt SaaS template, or a SaaS starter kit, the goal is the same. Make the tree predictable so you can add screens without rereading the whole app.",[238,763,765],{"id":764},"key-takeaways","Key takeaways",[44,767,46,768,46,771,46,774,46,777,46,784],{},[48,769,770],{},"Let Nuxt conventions guide your folders so discovery and auto imports work for you.",[48,772,773],{},"Group by feature inside standard directories. Keep routes shallow, move logic into composables.",[48,775,776],{},"Name files for what they do. Prefer explicit names over generic ones.",[48,778,779,780,783],{},"Use plugins for setup, middleware for access control, and ",[56,781,782],{},"server\u002Fapi"," for backend work.",[48,785,786],{},"Reach for a Nuxt SaaS boilerplate when you want production features and a sane structure on day one.",[788,789,792,796,800,803,807,810,814,817,821,824,828],"section",{"className":790},[791],"post-faq",[36,793,795],{"id":794},"faq","FAQ",[238,797,799],{"id":798},"what-belongs-in-assets-versus-public-in-a-nuxt-app","What belongs in assets versus public in a Nuxt app?",[29,801,802],{},"Put styles and images you import from components in assets. Put files you want at stable URLs, like favicons, robots.txt, or large downloads, in public.",[238,804,806],{"id":805},"where-do-i-put-api-routes-in-nuxt-3","Where do I put API routes in Nuxt 3?",[29,808,809],{},"Place them in server\u002Fapi. Name files with HTTP method suffixes like users.get.ts or checkout.post.ts. Nuxt’s Nitro server will route requests automatically.",[238,811,813],{"id":812},"should-i-use-a-src-directory-with-nuxt","Should I use a src directory with Nuxt?",[29,815,816],{},"You can. Many teams keep the root simple and place app files at the project root. If you prefer src\u002F, configure it and keep tests, scripts, and tooling outside it.",[238,818,820],{"id":819},"how-can-i-organize-large-features-without-losing-auto-imports","How can I organize large features without losing auto imports?",[29,822,823],{},"Nest by domain inside components, composables, pages, and server\u002Fapi. Nuxt will still auto import components and composables from subfolders.",[238,825,827],{"id":826},"how-do-i-migrate-an-existing-vue-app-into-nuxt-without-chaos","How do I migrate an existing Vue app into Nuxt without chaos?",[29,829,830],{},"Move routes into pages first to get routing under control, extract shared logic into composables, and then migrate API calls into server\u002Fapi handlers.",{"title":832,"searchDepth":833,"depth":833,"links":834},"",2,[835,836,846,847,851,854],{"id":38,"depth":833,"text":39},{"id":235,"depth":833,"text":236,"children":837},[838,840,841,842,843,844,845],{"id":240,"depth":839,"text":241},3,{"id":271,"depth":839,"text":272},{"id":320,"depth":839,"text":321},{"id":384,"depth":839,"text":385},{"id":409,"depth":839,"text":410},{"id":425,"depth":839,"text":426},{"id":438,"depth":839,"text":439},{"id":461,"depth":833,"text":462},{"id":638,"depth":833,"text":639,"children":848},[849,850],{"id":642,"depth":839,"text":643},{"id":683,"depth":839,"text":684},{"id":745,"depth":833,"text":746,"children":852},[853],{"id":764,"depth":839,"text":765},{"id":794,"depth":833,"text":795,"children":855},[856,857,858,859,860],{"id":798,"depth":839,"text":799},{"id":805,"depth":839,"text":806},{"id":812,"depth":839,"text":813},{"id":819,"depth":839,"text":820},{"id":826,"depth":839,"text":827},"2026-09-19",null,"md",{"@context":865,"@graph":866},"https:\u002F\u002Fschema.org",[867,871],{"@type":868,"headline":6,"description":26,"image":25,"inLanguage":869,"datePublished":870},"BlogPosting","en","2026-09-14 03:08:28",{"@type":872,"mainEntity":873},"FAQPage",[874,878,880,882,884],{"@type":875,"name":799,"acceptedAnswer":876},"Question",{"@type":877,"text":802},"Answer",{"@type":875,"name":806,"acceptedAnswer":879},{"@type":877,"text":809},{"@type":875,"name":813,"acceptedAnswer":881},{"@type":877,"text":816},{"@type":875,"name":820,"acceptedAnswer":883},{"@type":877,"text":823},{"@type":875,"name":827,"acceptedAnswer":885},{"@type":877,"text":830},{},true,[],"\u002Fblog\u002Fnuxt-folder-structure-step-by-step-guide","nuxt",[],"Informational",{"title":6,"description":26},{"loc":889},"blog\u002Fnuxt-folder-structure-step-by-step-guide",[890,897,898,899,900],"vue","saas","starter kit","folder structure",[890,897,898,899,900],"F4hbWc7r1CSnKg4hJ9yqgkyrrnK4VjqG4DQxv1JIarc",[904,909],{"title":905,"path":906,"stem":907,"description":908,"children":-1},"Nuxt email templates: 7 examples for SaaS notifications","\u002Fblog\u002Fnuxt-email-templates-7-examples-for-saas-notifications","blog\u002Fnuxt-email-templates-7-examples-for-saas-notifications","Seven Nuxt email templates with subject lines, fields, i18n, cron, and deliverability tips. Ship reliable welcomes, receipts, trials, and more from day one.",{"title":910,"path":911,"stem":912,"description":913,"children":-1},"Nuxt Middleware: A Practical Guide for SaaS and AI Apps","\u002Fblog\u002Fnuxt-middleware-practical-guide-saas-ai-apps","blog\u002Fnuxt-middleware-practical-guide-saas-ai-apps","Use Nuxt 3 middleware to guard auth, subscriptions, locales, admin, and analytics. Concrete patterns, code, and pitfalls for SaaS and AI apps.",1789804889490]