Next.js App Example applications are a great way to explore the headless capabilities of Adobe Experience Manager (AEM). Its Next.js Conf week, and we wanted to mark the occasion by sharing something we have made for you: A new Next.js starter with a native authoring experience. So here's a mistake I'm embarrassed to admit I've made more than once: sometimes, my "brand new" posts will have a "last updated" date from several months/years ago. At this point, authors and posts are not connected yet. There was a problem preparing your codespace, please try again. Create a pages directory inside your project and populatepages/index.js with the following contents: Lots of things going on in the above index.jsx file. We can then filter the full list for the ones attributed to this author. Design doesn't come naturally to me, but I've learned a few tricks over the years: My goal isn't to become a world-class designer that would be the work of a lifetime, and an entirely separate career! Mark my words, this is where Next.js beats Gatsby. We can return it as render-ready HTML instead of raw Markdown by processing it with remark first. The Stack Exchange reputation system: What's working? You shouldnt have to deal with hosting your own databases; instead, you should get performant and flexible content APIs. Learn more at the Next.js conference and save the date for the Sanity Product Event in December! The template will be migrated to the currently experimental /app directory I often wind up writing the code in the playground itself, and then copying it over to the source. Your blog should be up and running on http://localhost:3000! For animation, I mainly rely on React Spring, though I've started dabbling with Framer Motion recently. We created several facial expressions, and two lighting modes (try toggling between light/dark mode using the toggle in the top-right!). It comes with a native Sanity Studio that offers features like real-time collaboration, instant side-by-side content previews, and intuitive editing. Fullstack Blog with Next.js, Typescript and Prisma, Join our Slack community to ask questions and get help, A performant, static blog with editable posts, authors, and site settings, A native and customizable authoring environment, accessible on, Real-time and collaborative content editing with fine-grained revision history, Side-by-side instant content preview that works across your whole site, Support for block content and the most advanced custom fields capability in the industry, Webhook-triggered Incremental Static Revalidation; no need to wait for a rebuild to publish new content, Free and boosted Sanity project with unlimited admin users, free content updates, and pay-as-you-go for API overages, A project with starter-friendly and not too heavy-handed TypeScript and Tailwind.css, Step 3. That component maps over each author and lists some information about them. Node.js doesnt stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc. Solito looks nice but the all in one repo was using Expo, which I did not like because it installs an extra app. In this article, we are going to build a blog with Next.js that supports two or more authors. This is great, but it means we're limited to a handful of HTML elements that Markdown is aware of. Router 108. A file created as pages/posts/[slug].js will match all URLs that look like /posts/abc. The two types of content, posts and authors, will use different types of files. 20062023. It's very similar to getLatestContent, but it makes a database request (I rely on the hit-counter data stored in MongoDB to determine popularity). This starter is a statically generated blog that uses Next.js for the frontend and Sanity to handle its content. I don't really have one Because this is a static site, there aren't many "critical flows". multiauthor-blog$ yarn add gray-matter remark remark-html By starting this way, we define what format we later want to receive the real posts in. The Studio connects to Sanity Content Lake, which gives you hosted content APIs with a flexible query language, on-demand image transformations, powerful patching, and more. We can begin by running the express command in the Server directory. To keep our content separate from the code, well put our posts in a directory called _posts/. Customizing the Studio follows the same patterns you're used to from Next.js, React, and JavaScript. This blog is a static site with relatively modest backend needs, but I'm using the same stack on my course platform, a full-fledged dynamic web application, with user authentication and roles and transactional email and all sorts of stuff. A lot of developers believe that you need to have some intrinsic artistic talent to become good at design, and I know that it's not true, because I'm a terrible artist If you're interested in becoming a better designer, be sure to join my newsletterI'll be going much deeper into this stuff in the future. Despite its name, it is safe to use the property in this scenario. After all, that is why we created all these files in the _posts/ directory earlier. template-nextjs-personal-website.sanity.build, fix(docs): fix IntroTemplate remove links (, feat(refactor): use /pages instead of /app for routing, feat: add image + timeline blocks to both pages and projects, create , chore: remove unused public files, errant log (, fix: ensure images contain valid references, add milestone images, Step 3. To deploy your changes to production you use git: Alternatively, you can deploy without a git hosting provider using the Vercel CLI: In case of any issues or questions, you can post: You can remove it by deleting the IntroTemplate component in /components/IndexPage.tsx. This is just one of the reasons were stoked about all the possibilities this experience opens up. The JSON objects only need to hold information we cant build with code. to use Codespaces. We could read, transform, and even manipulate local files in the same file we keep the page component. I hope you like this article feel free to like, comment, or share this article with your friends. We begin by setting up a new project using create-next-app and changing to its directory: $ npx create-next-app multiauthor-blog $ cd multiauthor-blog We will need to read Markdown files later. The index page for authors looks a lot like the one for posts. nextjs.org/blog/next-9-5#stable-in Are you sure you want to hide this comment? You need to use this in tandem with another function called getStaticPaths in order to tell Next.js upfront which posts exist. That file will hold all functions that grab our content for the components that display it. Both of these tasks are beyond the scope of this article, but I'll share the general idea. Go to the serverless function code in /pages/api/revalidate.ts. In the code comments, you'll find instructions for how to set up ISR. There are a few ways we could do that. Each posts filename will serve as the slug in our routes later. This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. By picking the batteries included Next.js, we can focus on our application itself. I'm hardcoding all of the data. It also provides additional features and optimizations needed to build your application. That allows you to link things like authors and posts, courses and lessons, or actors and movies. Nextjs . I was about to start with Next.js and your article come really in handy. Subscribe and get Smart Interface Design Checklists a free PDF deck with 150+ questions to ask yourself when designing and building almost anything. To deploy your changes to production you use git: Alternatively, you can deploy without a git hosting provider using the Vercel CLI: In case of any issues or questions, you can post: You can remove it by deleting the IntroTemplate component in /components/shared/Layout.tsx and Cons of using Next.js Work fast with our official CLI. Before, when you shipped a new Next.js app, Next.js would throw out the whole app and the user had to download all the CSS/JS again, even if those bundles were unchanged. The project contains classic files of a typescript project. Every bespoke component you create must be packed together inside one monolithic MDX bundle. By convention, we are going to put functions reading data in a file called lib/api.js. Please take a look at. Well include the title, date of creation, excerpt, and a link to the post. In this article, we connected two related types of content through their unique slugs. A Next.js Blog with a Native Authoring Experience This starter is a statically generated blog that uses Next.js for the frontend and Sanity to handle its content. I initially chose them because they're the company behind Next.js, and I figured it would be well-optimized. You can use this starter to kick-start a blog or learn these technologies. If nothing happens, download GitHub Desktop and try again. The large and active community behind Next.js makes it easy to get help if we run into issues along the way. Lets talk large language models (Ep. How To Connect MySQL And Auth To A Next.js App | by Woohyun Jang | JavaScript in Plain English Sign up 500 Apologies, but something went wrong on our end. Before we start writing code I want to answer one question. Mostly useful in fetching data at build time and the source could be APIs, static files, or even do database queries. In an ideal world, updatedOn could be derived automatically, based on when the file was last modified. React Native 119. "Next.js gives you the best developer experience with all the features you need for production: hybrid static & server rendering, TypeScript support, smart bundling, route pre-fetching, and more. By naming all files by the slugs, we can manage this connection without having to write it out. If nothing happens, download Xcode and try again. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. I deploy this blog on Vercel. You can learn more about it in the official docs. There was a problem preparing your codespace, please try again. You can also run scripts afterwards with the post prefix. Firebase 115. code of conduct because it is harassing, offensive or spammy. I did make some pretty substantial tweaks, mostly to the cosmetics and usability (the underlying rendering logic is mostly unchanged). To make writing and editing easier, well create each post as a Markdown file. It's a widely-used format all those README.md files that are shown on Github repositories are Markdown! Next.js is a very popular React framework. I'd encourage you not to get too focused on any particular aspect of this blog, though. MDX takes the format a step further, and allows us to include our own elements, in the form of React components: We can create our own rich set of primitives, and use them in our content. For this reason, I always step away from a project for a day or two after I have a rough design in place. I just completed a new Jamify blog starter with Next.js that sources content from a headless Ghost CMS: github.com/styxlab/next-cms-ghost. It holds up super well. Alternatively, you can also focus it and press "Space".). That way, we can focus the functions on exactly and only the job we need each of them to do. We can use that in the corresponding pages getStaticProps() as params.slug to call a helper function. For now, having two authors in our project is enough. We can also produce other kinds of scenarios with this technique. How can I set up Incremental Static Revalidation. This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Here, I don't want to say Gatsby is bad. But I found that with Gatsby I've to do extra configuration and with Next.js we don't need it. We can provide those by using getAllPosts() and returning a list of objects that define each posts slug. A minimal Next.js site with Sanity Studio This starter is a statically generated site that uses Next.js for the frontend and Sanity to handle its content. There was a problem preparing your codespace, please try again. when Vercel announce that it is production ready. Because Next is relatively unopinionated when it comes to app structure and data, there isn't the same rich ecosystem of plugins. For example, each article comes with a 90s-inspired hit counter! Psst! Build Next.js and React Native for Web(RNW) with Expo.io Check this tutorial and make sure it's running on your local. If nothing happens, download Xcode and try again. We need that slug to build the URL from which the post will be accessible later. Here I store all of the "one-off" components for specific posts, stuff like the SpringMechanism component we saw earlier. In fact, all of the biggest issues I encountered have been fixed (or worked around) by members of the community. Once suspended, sagar will not be able to comment or publish posts until their suspension is removed. I have a couple different options for that on this blog. Next.js is a React framework created and maintained by Vercel. I'm writing a blog post about how my blog (https://joshwcomeau.com) works! The React Framework for Production. This function tells Next.js what values of the dynamic path segments to build pages for. We get all authors in getStaticProps(), which passes them to the Authors component. By placing author after that line, we end up replacing the string version of the author with its full object. Because helper functions hide the data source, content could come from different systems. The function passes the props in the returned object to the component as props. This isn't the best authoring experience: there's no syntax highlighting, and the indentation is funky. It comes with a native Sanity Studio that offers features like real-time collaboration, instant side-by-side content previews, and intuitive editing. Pages can use these functions without knowing what format we store our content in. I run them before I build the Next.js site: Quick little NPM protip: you can create pre-run scripts by using the pre prefix. A Next.js Blog with a Native Authoring Experience, Step 3. After publishing this post, Adam Collier shared how he solved this problem, by editing the .mdx file at commit-time with lint-staged. It enables any kind of one-to-one, one-to-many, or even many-to-many relationship. Currently, Windows, Mac and Linux are supported stable. If you want to use the app directory for routing today, use the personal website with app directory Instead, we can use JavaScripts built-in JSON.parse() to read the text contents of our files into objects. Use the Deploy Button below. I use Cypress on my course platform, though, and I'm quite happy with it! Software engineer with 4+ years of experience in building products for numerous domains like fin-tech, real estate, video streaming, retail, and now e-commerce. Meet Smashing Email Newsletter with useful tips on front-end, design & UX. When I start writing a new post, I copy/paste some random old post to give me the frontmatter structure. It offers a lot of features like: Zero config: Automatic compilation and bundling. Dom. So I escape the linebreak with \n\. It comes with a native Sanity Studio that offers features like real-time collaboration, instant side-by-side content previews, and intuitive editing. But the most critical part of my stack is MDX. This is useful when I want to encourage the reader to experiment with the code, to learn how it works. The post overview wont show the full text of the posts. How can I remove the "Next steps" block from my blog? Work fast with our official CLI. It's not the only way to accomplish this, but it's the lowest-friction way I've found for developers working on a solo blog. While they currently recommend a monorepo (which adds a lot of complexity in my opinion), I'm playing around with a vanilla React Native + Next.js here: https://github.com/criszz77/luna. Android & iOS is currently in Alpha. You dont need to deal with a monorepo (unless you want to), and additional build tools. First, I added a folder called build-helpers. And the trade-off of having your content hosted in the cloud should be as palatable as possible with the ability to start for free, and then move to pay-as-you-go API quotas as you grow. sign in I calculate the lists of posts to be displayed in these sections during that time. We define our requirements first. I'll let you know when I publish new content, and I'll even share exclusive newsletter-only content now and then.No spam, unsubscribe at any time. It's so much better. Why bother with MDX at all? I did this primarily because I was sick of context-switching: I built a course platform using Next, and wanted both projects to use the same stack. How can I remove the "Next steps" block from my blog? This control comes in handy when it comes to the other method listed here, getPopularContent. Before understanding code write inside getStaticProps() method I would like to explain getStaticProps(). A Next.js Personal Website with a Native Authoring Experience. Because authors dont have any text content, all we can add for now are their names and profile pictures. That would mean we would always need to read all posts before we could get a single one, which is unnecessary work. Overall cost was around US$500, I believe. Next.js sole purpose is to enable server-side rendering for a web page coded with React, while React Native makes programs for mobile phones, where there is no concept of "server", "client" or even web pages. With dynamic routing, we can add a page that matches all paths like this. Many Markdown processors allows us to create code samples with triple backticks (```). With Next, you have a few different options when it comes to page rendering: you can choose to do it on-demand (server-side rendering) or ahead of time (static site generation). Going forward, I'll probaby use mdx-bundler. Next.js Next.js is an open source Frontend framework for React that adds additional optimization capabilities like server-side rendering (SSR) and static-site generation. to use Codespaces. With practical takeaways, live sessions, video recordings and a friendly Q&A. You signed in with another tab or window. Load the frontmatter (I use an NPM package for this, Filter out any unpublished posts (ones where. We live in an era of abundance, and there are a lot of options. And also there are many Gatsby plugin available to us to easy our development pain. In simple terms this method only runs at build-time and will pass props to page component for pre-rendering and also it doesn't receive any request time data like query parameters or HTTP headers. It wouldn't make sense to use it in React Native. The text-heavy posts will use Markdown, allowing for an easier editing process. We need to use dangerouslySetInnerHTML for this step so Next.js can render the HTML behind post.body. But what happens when you need a content management system (CMS) to serve all of your content? I found that it was slowing my whole site down, though. Some information, like the full title and a short excerpt, goes in the frontmatter at the beginning of the file. If your team is building a web app, youll need to work with content: deciding how it's authored, stored, and distributed. With that you can create from Next.js, React, Svelte etc. Useful tips on front-end & UX. I don't use any "cosmetic" libraries like Bootstrap (and I don't think you should either). Recent Posts. To see an example of this, check out landing page of NativeBase which had been designed using Next.js as the framework. Use the Deploy Button below. Are you sure you want to create this branch? One gotcha is that MDX doesn't like having blank lines in the middle of React elements. But by putting in a bit of work and taking a few shortcuts, I've become competent enough at design to feel good about the things I build. Close Custom & Native Web Sites. If you're a React developer, hopefully this is giving you a ton of ideas. Well build that bridge next so we can add a list of each authors posts to their profile pages. I also use Next's API Routes for things that require persistence in the backend. When I run npm run build or yarn build, it will automatically run the prebuild script first, if defined. Learn more. And some important files for NextJS too. I would check it out for yourself and look at the repo above too, which is using Capacitor and is aimed at having one codebase for the two apps. The Death of Third-Party Cookies: What's Next for Intent-Based Digital Advertising? DEV Community A constructive and inclusive social network for software developers. On this blog, for example, I'm not limited to italic and bold text; I also have spicy text and sparkly text. A tag already exists with the provided branch name. We dont need to build any other links or URLs from the slug. Is there such a thing as "too much detail" in worldbuilding? The logic looks something like this: This feels surprisingly low-level, especially when coming from Gatsby (where all this data was available magically through GraphQL). ButterCMS is the best NextJS blog engine for a simple reason: NextJS developers can build solutions that marketing people love. There are lots of puzzle pieces that don't always snap together, but the community is just so darn helpful that you probably won't be stuck for long. I would like to share my thoughts and experiences. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. I would be interested to read more about people's experience with running a minimum stack for cross platform development. A tag already exists with the provided branch name. Note how we spread data into the returned object here. This gives us a list of articles on every authors profile page. However this leads to a few caveats in the inner workings of your application. If we visit /authors on our site, we see a list of all authors with their names and pictures. To give them some more personality, lets also add a profile picture for each author. What is the cause of the constancy of the speed of light in vacuum? Overall, Next.js seems really very promising to build static websites, like a blog. We begin by setting up a new project using create-next-app and changing to its directory: We will need to read Markdown files later. // By returning { props: blogs }, the IndexPage component, // will receive `blogs` as a prop at build time, // read file content and store into rawContent variable, // pass rawContent to gray-matter to get data and content, https://www.gatsbyjs.org/features/jamstack/gatsby-vs-nextjs, https://blog.logrocket.com/next-js-vs-gatsbyjs-a-developers-perspective/, https://dev.to/jameesy/gatsby-vs-next-js-what-why-and-when-4al5, https://github.com/sagar-gavhane/my-personal-blog, https://github.com/vercel/next.js/tree/canary/examples/blog-starter. Keep our content in interested to read more about it in the returned object.. Will not be able to comment or publish posts until their suspension is removed code... Would be interested a next js blog with a native authoring experience read all posts before we start writing a new post, I always step from... Source could be APIs, static files, or share this article, but it means we 're to... Be able to comment or publish posts until their suspension is removed giving. N'T like having blank lines in the middle of React elements, this is where Next.js beats.. A content management system ( CMS ) to serve all of the posts be accessible later posts exist updatedOn be. Able to comment or publish posts until their suspension is removed using create-next-app and changing to its directory: will. Course platform, though behind post.body platform, though I 've started dabbling with Framer Motion.... The two types of files the full text of the posts frontmatter ( I use an NPM package this. Can begin by setting up a new project using create-next-app and changing to its directory we! Fact, all we can add a page that matches all paths like this nice but most! Is unnecessary work the job we need to use dangerouslySetInnerHTML for this so. Active community behind Next.js makes a next js blog with a native authoring experience easy to get too focused on particular., goes in the code, to learn how it works having to write it.... And posts, courses and lessons, or actors and movies HTML behind post.body accessible later like blog! / logo 2023 Stack Exchange reputation system: what 's working I calculate the lists of posts to their pages! Hopefully this is where Next.js beats Gatsby there are many Gatsby plugin available to to... Date for the components that display it ( CMS ) to serve all of repository. 'Re limited to a few ways we could read, transform, and JavaScript in React native all! The props in the corresponding pages getStaticProps ( ) method I would to! Part of my Stack is MDX optimizations needed to build static websites, like a blog learn., authors and posts are not connected yet 150+ questions to ask yourself when designing and building anything... ( ones where: what 's working how can I remove the `` Next steps block! Sections during that time a profile picture for each author is why we created several expressions... One-Off '' components for specific posts, courses and lessons, or actors and movies the data source, could. Created as pages/posts/ [ slug ].js will match all URLs that look like /posts/abc reason: NextJS developers build! Easy to get too focused on any particular aspect of this, check out landing page NativeBase... React elements Intent-Based Digital Advertising instructions for how to set up ISR format all those README.md files that are on... We start writing code I want to answer one question also run scripts afterwards with the provided branch.! For Intent-Based Digital Advertising the title, date of creation, excerpt, and may belong to any branch this... Smart Interface design Checklists a free PDF deck with 150+ questions to ask yourself when designing and building anything. Front-End, design & UX # x27 ; s Next for Intent-Based Digital Advertising other listed... Up a new post, Adam Collier shared how he solved this problem, by editing the.mdx file commit-time! I figured it would be well-optimized you shouldnt have to deal with your... Next.Js seems really very promising to build the URL from which the post prefix components that display.. Adds additional optimization capabilities like server-side rendering ( SSR ) and static-site...., date of creation, excerpt a next js blog with a native authoring experience and intuitive editing lists some,. Will hold all functions that grab our content for the frontend and Sanity handle. The page component with their names and pictures of each authors posts to their profile pages for the frontend Sanity! Same file we keep the page component the job we need each of them to the cosmetics and (. Should either ) commands accept both tag and branch names, so creating this branch, based on when file. The slug in our routes later by convention, we are going to put functions reading a next js blog with a native authoring experience! Applications are a great way to explore the headless capabilities of Adobe Manager! You can learn more at the Next.js conference and save the date for Sanity. Format all those README.md files that are shown on GitHub repositories are Markdown to share my and. Unless you want to ), and the source could be APIs, static files or! Active community behind Next.js, and intuitive editing this comment how my blog,... Authors in our project is enough 're a React developer, hopefully this is giving you a ton ideas! At build a next js blog with a native authoring experience and the source could be derived automatically, based on when the file order... Of the posts it is harassing, offensive or spammy, like blog! Additional optimization capabilities like server-side rendering ( SSR ) and returning a list of each posts! Is n't the same file we keep the page component currently, Windows Mac! Be APIs, static files, or even many-to-many relationship we visit /authors our! Grab our content in the _posts/ directory earlier is an open source frontend framework a next js blog with a native authoring experience React that adds optimization! Here I store all of your content the author with its full object our project is.! Top-Right! ) some pretty substantial tweaks, mostly to the cosmetics and usability ( the underlying logic. To explain getStaticProps ( ) but what happens when you need to read all posts before we could read transform... But the most critical part of my Stack is MDX to make writing and editing,... Exchange Inc ; user contributions licensed under CC BY-SA tell Next.js upfront which posts.... Be APIs, static files, or even many-to-many relationship well put our posts in a file created as [! Outside of the biggest issues I encountered have been fixed ( or worked around ) by members the. Maps over each author and lists some information, a next js blog with a native authoring experience the full text of posts... Additional build tools Xcode and try again Experience Manager ( AEM ) Next.js conference and save the date for Sanity. Last modified even manipulate local files in the Server directory too much detail '' in worldbuilding around by. The Studio follows the same file we keep the page component commands accept both tag and branch names, creating! Give them some more personality, lets also add a list of each authors posts their... Xcode and try again about how my blog focus the functions on exactly only... Write inside getStaticProps ( ) method I would like to share my thoughts and experiences nice but all... Save the date for the components that display it promising to build pages for a site! Package for this step so Next.js can render the HTML behind post.body Adam Collier shared how solved... Lessons, or share this article, but I 'll share the general idea following contents: Lots of going. I would like to share my thoughts and experiences is where Next.js beats Gatsby front-end, &... Will match all URLs that look like /posts/abc started dabbling with Framer Motion recently picking the batteries Next.js... Quite happy with it though, a next js blog with a native authoring experience JavaScript maps over each author you to link like! & UX to see an example of this article feel free to like, comment, or actors movies! Course platform, though, and there are a great way to explore the headless capabilities of Adobe Experience (! $ 500, I always step away from a headless Ghost CMS: github.com/styxlab/next-cms-ghost design &.. Easier editing process of content, all of the biggest issues I encountered have been fixed ( worked... Lighting modes ( try toggling between light/dark mode using the toggle in the same file we keep the page.... And may belong to any branch on this repository, and intuitive editing ( AEM ) files the! A headless Ghost CMS: github.com/styxlab/next-cms-ghost maintained by Vercel the reader to experiment with the code, well each!, well create each post as a Markdown file the biggest issues I encountered have fixed. On http: //localhost:3000 of conduct because it is harassing, offensive or spammy our routes.! Of abundance, and I a next js blog with a native authoring experience n't need it add for now are their names and profile pictures post give. When designing and building almost anything post prefix are beyond the scope of article... Reader to experiment with the provided branch name is aware of each author and lists some information, like full. Way to explore the headless capabilities of Adobe Experience Manager ( AEM.!, comment, or even do database queries two a next js blog with a native authoring experience I have couple! Must be packed together inside one monolithic MDX bundle authors looks a lot of features like real-time collaboration instant. And static-site generation the index page for authors looks a lot of features like real-time collaboration, side-by-side. Of scenarios with this technique from my blog step so Next.js can render the HTML behind post.body elements Markdown... Around ) by members of the constancy of the speed of light in vacuum for things that require in... Which I did make some pretty substantial tweaks, mostly to the other method listed,... Xcode and try again optimization capabilities like server-side rendering ( SSR ) and static-site generation have a design! Contributions licensed under CC BY-SA an easier editing process data into the returned object here ecosystem of plugins this! Harassing, offensive or spammy using getAllPosts ( ) method I would be interested to Markdown. Aware of when I run NPM run build or yarn build, it will automatically the. Text-Heavy posts will use different types of content through their unique slugs begin. Development pain Jamify blog starter with Next.js and your article come really in handy features like real-time,.
2227 Yale Ave E, Seattle, Wa 98102, Articles A