1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[11205],{59279:e=>{"use strict";e.exports={PUBLIC_SEO_LOCALES:["en","zh","zh-TW","ja","ko","de","fr","es","id","pt","it"]}},60504:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var a=n(37876),l=n(77328),s=n.n(l),i=n(89099),o=n(5132),r=n(59279),d=n.n(r),c=n(82241),m=n.n(c);let{PUBLIC_SEO_LOCALES:p}=d(),{formatSeoTitle:u}=m();function h(e){let{seo:t}=e,n=(0,i.useRouter)(),{locale:l,locales:r,asPath:d}=n,{locale:c}=(0,o.s)(),m="https://www.nxcode.io",h=u(null==t?void 0:t.title),x=(null==t?void 0:t.description)||"Build, deploy, and manage applications with your own AI agent team...",g=(null==t?void 0:t.keywords)||null,j=(null==t?void 0:t.ogImage)||"https://www.nxcode.io/images/default-social-card.png",f=(null==t?void 0:t.ogType)||"website",v=(null==t?void 0:t.noIndex)||!1,y=d.split("?")[0].split("#")[0],b=(r||[]).filter(e=>p.includes(e)),w=Array.isArray(null==t?void 0:t.alternateLocales)?t.alternateLocales.filter(e=>p.includes(e)):b,N=l||c||n.defaultLocale,k=new RegExp("^/(".concat((r||[]).join("|"),")(?=/|$)")),S=e=>e.replace(k,"")||"/",A=(e,t)=>{let a=S(t),l=e===n.defaultLocale?"":"/".concat(e);return"".concat(m).concat(l).concat("/"===a?"":a)||m},C=new URL((null==t?void 0:t.canonicalUrl)||"".concat(m).concat(y)),_=(null==t?void 0:t.canonicalLocale)||N,T=p.includes(_)?A(_,C.pathname):C.toString(),M=(null==t?void 0:t.faq)&&Array.isArray(t.faq)&&0!==t.faq.length?JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:t.faq.map(e=>({"@type":"Question",name:e.question,acceptedAnswer:{"@type":"Answer",text:e.answer}}))}):null,E=(null==t?void 0:t.article)?JSON.stringify({"@context":"https://schema.org","@type":"Article",headline:t.title,description:x,image:j,datePublished:t.article.datePublished,dateModified:t.article.dateModified||t.article.datePublished,author:{"@type":"Organization",name:t.article.author||"NxCode Team",url:m},publisher:{"@type":"Organization",name:"NxCode",logo:{"@type":"ImageObject",url:"".concat(m,"/images/logo.png")}},mainEntityOfPage:{"@type":"WebPage","@id":T}}):null,L="/"===d||d.startsWith("/?")?JSON.stringify({"@context":"https://schema.org","@type":"Organization",name:"NxCode",alternateName:"NxCode.io",url:m,logo:"".concat(m,"/images/logo.png"),description:"AI-powered app builder that transforms ideas into production-ready software without coding. Build games, websites, and apps using natural language.",foundingDate:"2024",founders:[{"@type":"Person",name:"Vivian Chi"},{"@type":"Person",name:"Alex Liu"}],sameAs:["https://www.linkedin.com/company/nxcode","https://medium.com/@nxcode.hub"],brand:{"@type":"Brand",name:"NxCode"},slogan:"Build Apps Without Coding"}):null,P=(null==t?void 0:t.howTo)&&t.howTo.steps&&0!==t.howTo.steps.length?JSON.stringify({"@context":"https://schema.org","@type":"HowTo",name:t.howTo.name||t.title,description:t.howTo.description||x,...t.howTo.totalTime&&{totalTime:t.howTo.totalTime},step:t.howTo.steps.map((e,t)=>({"@type":"HowToStep",position:t+1,name:e.name,text:e.text,...e.image&&{image:e.image}}))}):null;return(0,a.jsxs)(s(),{children:[(0,a.jsx)("title",{children:h}),(0,a.jsx)("meta",{name:"description",content:x}),g&&(0,a.jsx)("meta",{name:"keywords",content:g}),v&&(0,a.jsx)("meta",{name:"robots",content:(null==t?void 0:t.noFollow)?"noindex, nofollow":"noindex, follow"}),(0,a.jsx)("link",{rel:"canonical",href:T}),(0,a.jsx)("meta",{property:"og:type",content:f}),(0,a.jsx)("meta",{property:"og:title",content:h}),(0,a.jsx)("meta",{property:"og:description",content:x}),(0,a.jsx)("meta",{property:"og:image",content:j}),(0,a.jsx)("meta",{property:"og:url",content:T}),(0,a.jsx)("meta",{property:"og:locale",content:"en"===c?"en_US":"zh"===c?"zh_CN":c}),(0,a.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,a.jsx)("meta",{name:"twitter:title",content:h}),(0,a.jsx)("meta",{name:"twitter:description",content:x}),(0,a.jsx)("meta",{name:"twitter:image",content:j}),w.map(e=>(0,a.jsx)("link",{rel:"alternate",hrefLang:e,href:A(e,y)},e)),(0,a.jsx)("link",{rel:"alternate",hrefLang:"x-default",href:A(n.defaultLocale,y)}),M&&(0,a.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:M}}),E&&(0,a.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:E}}),L&&(0,a.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:L}}),P&&(0,a.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:P}})]})}},60950:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__N_SSG:()=>r,default:()=>d});var a=n(37876);n(14232);var l=n(60504),s=n(48230),i=n.n(s),o=n(5132),r=!0;function d(){var e,t,n,s,r,d,c,m,p,u,h,x,g,j,f,v,y,b,w,N,k,S,A,C,_,T,M,E,L,P,I,O,z,R,B,D,W,H,F,V,q,G,U,J,Q,Y,$,X,Z,K,ee,et,en,ea,el,es,ei,eo,er,ed,ec;let{t:em}=(0,o.s)(),ep=em["case-studies-meditrack"]||{},eu={title:(null==(e=ep.meta)?void 0:e.title)||"Healthcare App Example | What You Can Build with NxCode",description:(null==(t=ep.meta)?void 0:t.description)||"See how NxCode can generate a complete healthcare management application with patient records, appointment scheduling, and compliance features.",canonicalUrl:"https://www.nxcode.io
1/case-studies/meditrack"},eh=()=>(0,a.jsx)("svg",{className:"w-4 h-4 text-green-500 mr-1.5 mt-0.5 flex-shrink-0",fill:"currentColor",viewBox:"0 0 20 20",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"})});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.A,{seo:eu}),(0,a.jsxs)("div",{className:"container mx-auto px-6 pt-24 pb-12",children:[(0,a.jsxs)("div",{className:"max-w-4xl mx-auto mb-16",children:[(0,a.jsxs)("div",{className:"flex flex-col md:flex-row items-center mb-8",children:[(0,a.jsx)("div",{className:"w-24 h-24 bg-purple-100 rounded-xl flex items-center justify-center mb-6 md:mb-0 md:mr-6",children:(0,a.jsx)(()=>(0,a.jsx)("svg",{className:"w-12 h-12 text-purple-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5"})}),{})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"inline-block bg-purple-100 text-purple-800 text-xs px-2 py-1 rounded-full uppercase font-semibold tracking-wider mb-2",children:(null==(n=ep.hero)?void 0:n.category)||"Healthcare"}),(0,a.jsx)("h1",{className:"text-4xl font-bold mb-2",children:(null==(s=ep.hero)?void 0:s.title)||"Healthcare Management System"}),(0,a.jsx)("p",{className:"text-xl text-gray-600",children:(null==(r=ep.hero)?void 0:r.subtitle)||"A complete patient management solution generated
1with NxCode"})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-6 mb-8",children:[(0,a.jsxs)("div",{className:"bg-gray-50 p-4 rounded-lg",children:[(0,a.jsx)("p",{className:"text-sm text-gray-500 mb-1",children:(null==(d=ep.techStack)?void 0:d.frontend)||"Frontend"}),(0,a.jsx)("p",{className:"font-semibold",children:(null==(c=ep.techStack)?void 0:c.frontendValue)||"React + TypeScript"})]}),(0,a.jsxs)("div",{className:"bg-gray-50 p-4 rounded-lg",children:[(0,a.jsx)("p",{className:"text-sm text-gray-500 mb-1",children:(null==(m=ep.techStack)?void 0:m.backend)||"Backend"}),(0,a.jsx)("p",{className:"font-semibold",children:(null==(p=ep.techStack)?void 0:p.backendValue)||"Node.js + Express"})]}),(0,a.jsxs)("div",{className:"bg-gray-50 p-4 rounded-lg",children:[(0,a.jsx)("p",{className:"text-sm text-gray-500 mb-1",children:(null==(u=ep.techStack)?void 0:u.database)||"Database"}),(0,a.jsx)("p",{className:"font-semibold",children:(null==(h=ep.techStack)?void 0:h.databaseValue)||"PostgreSQL"})]}),(0,a.jsxs)("div",{className:"bg-gray-50 p-4 rounded-lg",children:[(0,a.jsx)("p",{className:"text-sm text-gray-500 mb-1",children:(null==(x=ep.techStack)?void 0:x.deployment)||"Deployment"}),(0,a.jsx)("p",{className:"font-semibold",children:(null==(g=ep.techStack)?void 0:g.deploymentValue)||"Docker Ready"})]})]}),(0,a.jsxs)("div",{className:"prose prose-lg max-w-none",children:[(0,a.jsx)("h2",{children:(null==(j=ep.overview)?void 0:j.title)||"Overview"}),(0,a.jsx)("p",{children:(null==(f=ep.overview)?void 0:f.content)||"This example demonstrates how NxCode can generate a comprehensive healthcare management system. The application includes patient records management, appointment scheduling, medical history tracking, and role-based access control suitable for clinics and healthcare providers."}),(0,a.jsx)("div",{className:"bg-purple-50 border-l-4 border-purple-500 p-4 my-6",children:(0,a.jsxs)("p",{className:"text-purple-700 m-0",children:[(0,a.jsx)("strong",{children:"Note:"})," ",(null==(v=ep.overview)?void 0:v.note)||"This is an example of what NxCode can generate. The actual implementation will depend on your specific requirements and configuration."]})}),(0,a.jsx)("h2",{children:(null==(y=ep.features)?void 0:y.title)||"Core Features Generated"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 my-6 not-prose",children:[(0,a.jsxs)("div",{className:"bg-white p-6 rounded-lg border border-gray-200 shadow-sm",children:[(0,a.jsx)("h3",{className:"font-semibold text-purple-600 mb-3",children:(null==(w=ep.features)||null==(b=w.patientManagement)?void 0:b.title)||"Patient Management"}),(0,a.jsx)("ul",{className:"space-y-2 text-sm",children:((null==(k=ep.features)||null==(N=k.patientManagement)?void 0:N.items)||["Patient registration and profiles","Medical history records","Document upload and management","Search and filter functionality"]).map((e,t)=>(0,a.jsxs)("li",{className:"flex items-start",children:[(0,a.jsx)(eh,{}),(0,a.jsx)("span",{children:e})]},t))})]}),(0,a.jsxs)("div",{className:"bg-white p-6 rounded-lg border border-gray-200 shadow-sm",children:[(0,a.jsx)("h3",{className:"font-semibold text-purple-600 mb-3",children:(null==(A=ep.features)||null==(S=A.appointmentSystem)?void 0:S.title)||"Appointment System"}),(0,a.jsx)("ul",{className:"space-y-2 text-sm",children:((null==(_=ep.features)||null==(C=_.appointmentSystem)?void 0:C.items)||["Calendar-based scheduling","Appointment reminders","Provider availability management","Rescheduling and cancellation"]).map((e,t)=>(0,a.jsxs)("li",{className:"flex items-start",children:[(0,a.jsx)(eh,{}),(0,a.jsx)("span",{children:e})]},t))})]}),(0,a.jsxs)("div",{className:"bg-white p-6 rounded-lg border border-gray-200 shadow-sm",children:[(0,a.jsx)("h3",{className:"font-semibold text-purple-600 mb-3",children:(null==(M=ep.features)||null==(T=M.securityCompliance)?void 0:T.title)||"Security & Compliance"}),(0,a.jsx)("ul",{className:"space-y-2 text-sm",children:((null==(L=ep.features)||null==(E=L.securityCompliance)?void 0:E.items)||["Role-based access control","Audit logging","Data encryption at rest","Session management"]).map((e,t)=>(0,a.jsxs)("li",{className:"flex items-start",children:[(0,a.jsx)(eh,{}),(0,a.jsx)("span",{children:e})]},t))})]}),(0,a.jsxs)("div",{className:"bg-white p-6 rounded-lg border border-gray-200 shadow-sm",children:[(0,a.jsx)("h3",{className:"font-semibold text-purple-600 mb-3",children:(null==(I=ep.features)||null==(P=I.reportingAnalytics)?void 0:P.title)||"Reporting & Analytics"}),(0,a.jsx)("ul",{className:"space-y-2 text-sm",children:((null==(z=ep.features)||null==(O=z.reportingAnalytics)?void 0:O.items)||["Dashboard with key metrics","Patient statistics","Appointment analytics","Export to CSV/PDF"]).map((e,t)=>(0,a.jsxs)("li",{className:"flex items-start",children:[(0,a.jsx)(eh,{}),(0,a.jsx)("span",{children:e})]},t))})]})]}),(0,a.jsx)("h2",{children:(null==(R=ep.architecture)?void 0:R.title)||"Technical Architecture"}),(0,a.jsx)("p",{children:(null==(B=ep.architecture)?void 0:B.description)||"NxCode generates a modern, scalable architecture following industry best practices:"}),(0,a.jsxs)("div",{className:"bg-gray-50 p-6 rounded-lg my-6",children:[(0,a.jsx)("h4",{className:"font-semibold mb-3",children:(null==(D=ep.architecture)?void 0:D.structureTitle)||"Generated Project Structure"}),(0,a.jsx)("pre",{className:"bg-gray-800 text-gray-100 p-4 rounded-lg text-sm overflow-x-auto",children:"healthcare-app/\nâââ frontend/\nâ âââ src/\nâ â âââ components/\nâ â âââ pages/\nâ â âââ hooks/\nâ â âââ utils/\nâ âââ package.json\nâââ backend/\nâ âââ src/\nâ â âââ controllers/\nâ â âââ models/\nâ â âââ routes/\nâ â âââ middleware/\nâ âââ package.json\nâââ docker-compose.yml\nâââ README.md"})]}),(0,a.jsx)("h2",{children:(null==(W=ep.whatYouGet)?void 0:W.title)||"What NxCode Generates"}),(0,a.jsx)("ul",{children:((null==(H=ep.whatYouGet)?void 0:H.items)||[{label:"Complete Frontend",description:"React components with TypeScript, responsive design, and modern UI"},{label:"RESTful API",description:"Express.js backend with proper routing, validation, and error handling"},{label:"Database Schema",description:"PostgreSQL migrations and models with proper relationships"},{label:"Authentication",description:"JWT-based auth with refresh tokens and secure session management"}
1,{label:"Docker Setup",description:"Production-ready containerization for easy deployment"},{label:"Documentation",description:"API documentation and setup instructions"}]).map((e,t)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("strong",{children:e.label})," - ",e.description]},t))}),(0,a.jsx)("h2",{children:(null==(F=ep.customization)?void 0:F.title)||"Customization Options"}),(0,a.jsx)("p",{children:(null==(V=ep.customization)?void 0:V.description)||"When generating your healthcare application, you can customize:"}),(0,a.jsx)("ul",{children:((null==(q=ep.customization)?void 0:q.items)||["Additional patient data fields specific to your specialty","Custom appointment types and durations","Integration with external systems (labs, pharmacies, etc.)","Billing and insurance modules","Telemedicine features","Multi-location support"]).map((e,t)=>(0,a.jsx)("li",{children:e},t))}),(0,a.jsx)("div",{className:"bg-purple-50 p-6 rounded-lg my-6 border border-purple-200",children:(0,a.jsx)("p",{className:"text-purple-800 font-medium m-0",children:(null==(G=ep.customization)?void 0:G.note)||"NxCode's Conductor agent helps you define these requirements through a conversational interface, then Virtuoso generates the complete implementation."})})]})]}),(0,a.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold mb-6",children:(null==(U=ep.relatedExamples)?void 0:U.title)||"More Examples"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[(0,a.jsxs)(i(),{href:"/case-studies/erp-solution",className:"group block",children:[(0,a.jsx)("div",{className:"h-48 bg-gradient-to-br from-blue-100 to-indigo-100 rounded-xl mb-4 overflow-hidden flex items-center justify-center",children:(0,a.jsx)("svg",{className:"w-16 h-16 text-blue-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6"})})}),(0,a.jsx)("h3",{className:"font-bold text-xl mb-2 group-hover:text-blue-600 transition-colors",children:(null==(Y=ep.relatedExamples)||null==(Q=Y.items)||null==(J=Q[0])?void 0:J.title)||"Business Management System"}),(0,a.jsx)("p",{className:"text-gray-600",children:(null==(Z=ep.relatedExamples)||null==(X=Z.items)||null==($=X[0])?void 0:$.description)||"Multi-module enterprise solution with inventory, HR, and reporting"})]}),(0,a.jsxs)(i(),{href:"/case-studies/fitness-tracker",className:"group block",children:[(0,a.jsx)("div",{className:"h-48 bg-gradient-to-br from-green-100 to-teal-100 rounded-xl mb-4 overflow-hidden flex items-center justify-center",children:(0,a.jsx)("svg",{className:"w-16 h-16 text-green-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z"})})}),(0,a.jsx)("h3",{className:"font-bold text-xl mb-2 group-hover:text-green-600 transition-colors",children:(null==(et=ep.relatedExamples)||null==(ee=et.items)||null==(K=ee[1])?void 0:K.title)||"Fitness & Wellness App"}),(0,a.jsx)("p",{className:"text-gray-600",children:(null==(el=ep.relatedExamples)||null==(ea=el.items)||null==(en=ea[1])?void 0:en.description)||"Mobile-first application with workout tracking and progress analytics"})]})]})]}),(0,a.jsx)("div",{className:"max-w-4xl mx-auto mt-16 bg-gradient-to-r from-purple-500 to-indigo-600 rounded-xl text-white p-8",children:(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold mb-4",children:(null==(es=ep.cta)?void 0:es.title)||"Ready to Build Your Healthcare Application?"}),(0,a.jsx)("p",{className:"text-lg mb-6 opacity-90",children:(null==(ei=ep.cta)?void 0:ei.description)||"Start with NxCode and generate a complete healthcare management system tailored to your needs."}),(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row justify-center gap-4",children:[(0,a.jsx)("a",{href:"https://studio.nxcode.io?utm_source=nxcode_landing&utm_medium=web&utm_campaign=case_study&utm_content=cta",className:"bg-white text-indigo-600 hover:bg-gray-100 transition-colors font-medium py-3 px-6 rounded-md",children:(null==(er=ep.cta)||null==(eo=er.buttons)?void 0:eo.start)||"Start Building"}),(0,a.jsx)(i(),{href:"/product/case-studies",className:"bg-transparent border-2 border-white hover:bg-white/10 transition-colors font-medium py-3 px-6 rounded-md",children:(null==(ec=ep.cta)||null==(ed=ec.buttons)?void 0:ed.more)||"View More Examples"})]})]})})]})]})}}
1,63264:(e,t,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/case-studies/meditrack",function(){return n(60950)}])},82241:e=>{"use strict";let t=" | NxCode";function n(e){let t=String(e||"").trim(),n=/\s*(?:\||[-ââ])\s*nxcode(?:\.io)?\s*$/i;for(;n.test(t);)t=t.replace(n,"").trim();return t}e.exports={BRAND_SUFFIX:t,SEO_TITLE_MAX_CHARS:70,formatSeoTitle:function(e){let a=n(e)||"NxCode - AI App Generator";if(/^nxcode(?:\.io)?$/i.test(a))return"NxCode";let l=70-t.length;return"".concat(function(e,t){if(e.length<=t)return e;let n=e.slice(0,Math.max(1,t-1)).trimEnd(),a=Math.max(n.lastIndexOf(" "),n.lastIndexOf(":"),n.lastIndexOf("ï¼"),n.lastIndexOf("â"),n.lastIndexOf("-")),l=a>=Math.floor(.68*t)?n.slice(0,a).trimEnd():n;return"".concat(l.replace(/[\s:ï¼|â-]+$/g,""),"â¦")}(a,l)).concat(t)},minimumDescriptionLength:function(e){return["zh","zh-TW","ja","ko"].includes(e)?50:120},stripBrandSuffix:n}}},e=>{var t=t=>e(e.s=t);e.O(0,[90636,46593,38792],()=>t(63264)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.