{"id":8334,"date":"2021-10-26T21:46:26","date_gmt":"2021-10-26T18:46:26","guid":{"rendered":"https:\/\/flatlogic.com\/blog\/?p=8334"},"modified":"2022-05-11T16:38:10","modified_gmt":"2022-05-11T13:38:10","slug":"building-react-admin","status":"publish","type":"post","link":"https:\/\/flatlogic.com\/blog\/building-react-admin\/","title":{"rendered":"Building React Admin Step By Step"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Introduction<\/strong><\/h2>\n\n\n\n<p>Every web project has two sides: the one seen by users and the admin page that its manager uses to control each aspect of each page of said project. To draw a parallel, the user side of the site is our usual beautiful world, and an Admin Page or Admin Console is like the Upside Down from &#8220;Stranger Things&#8221;, where it is dark and scary, but all the important stuff happens. Or, to draw another analogy, a React-based Admin Page is like the Enterprise spacecraft engine rooms: all the main characters like Captain Kirk and Spock are on the beautiful and well-lit main deck, which would be rendered useless if all the ship&#8217;s engineers left the above-mentioned engine rooms. So, the importance of a well-made Admin Page cannot be underestimated if you need your whole project to run smoothly and correctly. But first off, let&#8217;s fully understand what a React Admin Page is and how it operates.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"two\"><strong>What is React Admin<\/strong><\/h2>\n\n\n\n<p>React Admin Page or React Admin Console is, to put it simply, a framework that contains all the information about the site and its content, including information about your products, users, etc. React Admin page also gives you the ability to control everything about the content on your website or app.<\/p>\n\n\n\n<p>In other words, it is the control tool that you use to manage and improve your <a href=\"https:\/\/en.wikipedia.org\/wiki\/Web_project\">web project<\/a>. Thus, it is a tool of great importance able to make or break your business, especially if your specialty is of an e-commerce nature. Don&#8217;t get us wrong, we are not telling you this to scare you, but to merely emphasize the significance of creating a React Admin Page worthy of your business.<\/p>\n\n\n\n<p>Before we give you a quick rundown on how to create your own basic React Admin Page, there is only one little question left standing: why use React as a basis for your Admin Page in the first place? React is, no doubt, one of the best bases for an Admin Page. It is easy to create, improve, use, and, most importantly, easy to maintain. This fact renders the decision on what to use as a basis for not only your Admin Page or Admin Console, but pretty much your whole web project preemptively made for you.<\/p>\n\n\n\n<p>That being said, let&#8217;s have a look at how to create your own <a href='https:\/\/flatlogic.com\/crud-app'>crud<\/a> React Admin Page in two ways:<\/p>\n\n\n\n<p>1.&nbsp; &nbsp; By actually sitting down and writing a code, spending so much precious time and effort;<\/p>\n\n\n\n<p>2.&nbsp; &nbsp; Or by seamlessly and effortlessly creating it with the help of Flatlogic&#8217;s Full Stack <a href='https:\/\/flatlogic.com\/generator'>AI Web App Generator<\/a>.\n <a href=\"https:\/\/flatlogic.com\/generator\"><img decoding=\"async\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding.png\" alt=\"Professional Vibe Coding\" class=\"banner-img lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/640;\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding.png 2560w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding-600x150.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding-1024x256.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding-768x192.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding-1536x384.png 1536w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/Introducing-professional-vibe-coding-2048x512.png 2048w\" data-sizes=\"auto\" data-original-sizes=\"(max-width: 2560px) 100vw, 2560px\"> <\/a><\/p>\n\n\n\n<p>More on seamlessness and effortlessness of option number two later, as now we take a look at path number one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"three\"><strong>How to Build React Admin<\/strong><\/h2>\n\n\n\n<p>In order to create your own React Admin Page you will require some preliminary preparations that mainly consist of installing npx, which version would be newer than its eighth iteration, and create-react-app.<\/p>\n\n\n\n<p>With the preliminaries out of the way, your next step is to create a new folder that will contain and store your React Admin Page&#8217;s codebase. When that is done, you need to use your preinstalled create-react-app with the following line of coding:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx create-react-app my-react-admin-page<\/code><\/pre>\n\n\n\n<p>This line will create a blank React application that will serve as your React Admin Page after we fill it with all the needed innards. Now it is time to install the <em>react-admin<\/em> package, as well as the data provider that will help us connect to a fake API:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd my-react-admin-page<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install react-admin ra-data-json-server<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>npm start<\/code><\/pre>\n\n\n\n<p>Now it is time to start working on the above-mentioned React Admin Page innards. Bear in mind that we don&#8217;t pay much attention to filling up our frontend with any real data and instead we are going to use an API for testing and prototyping. This will help us by letting us forget about creating custom data providers for now. The first step we are to partake in is replacing the <em>src\/app.js <\/em>element with the next lines of code to set up your React Admin&#8217;s default page:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { Admin } from 'react-admin';\nimport jsonServerProvider from 'ra-data-json-server';\n \nconst dataProvider = jsonServerProvider('https:\/\/jsonplaceholder.typicode.com');\n \nfunction App() {\nreturn (\n&lt;Admin dataProvider={dataProvider} \/&gt;\n);\n}\n \nexport default App;<\/code><\/pre>\n\n\n\n<p>The next step is setting up the <em>Resource <\/em>component, which allows you to command <em>react-admin <\/em>to fetch and subsequently display a <em>user<\/em> resource. The process is quite simple: your data provider will process the fetch command and display the requested user with the help of the <em>ListGuesser<\/em>, which takes the data the resource was provided with and tries its best to guess upon the format of the initial data grid. This, subsequently, allows us to use the above-mentioned initial data grid in order to generate our initial list code. And to set the <em>Resource <\/em>component you will need the following lines of coding:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { Admin, Resource,ListGuesser } from 'react-admin';\nimport jsonServerProvider from 'ra-data-json-server';\n \nconst dataProvider = jsonServerProvider('https:\/\/jsonplaceholder.typicode.com');\n \nfunction App() {\n return (\n &lt;Admin dataProvider={dataProvider}&gt;\n &lt;Resource name=\"users\" list={ListGuesser}\/&gt;\n \n &lt;\/Admin&gt;\n );\n}\nexport default App;<\/code><\/pre>\n\n\n\n<p>Now, in order to customize the mishmash of columns, you will have to look through the table element in your browser and copy the parts you would like to systemize and customize. After that, copy the selected parts into your console by using the inspect element \u2192 console chain of commands. The result will look something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export const UserList = props =&gt; (\n &lt;List {...props}&gt;\n &lt;Datagrid rowClick=\"edit\"&gt;\n &lt;TextField source=\"id\" \/&gt;\n &lt;TextField source=\"name\" \/&gt;\n &lt;TextField source=\"username\" \/&gt;\n &lt;EmailField source=\"email\" \/&gt;\n &lt;TextField source=\"address.street\" \/&gt;\n &lt;TextField source=\"phone\" \/&gt;\n &lt;TextField source=\"website\" \/&gt;\n &lt;TextField source=\"company.name\" \/&gt;\n &lt;\/Datagrid&gt;\n &lt;\/List&gt;\n);<\/code><\/pre>\n\n\n\n<p>To sort everything nice and tidy you will need to create a <em>components <\/em>folder in your <em>src <\/em>and paste the data in need of sorting into the <em>user.js <\/em>file. What you get as a result should look as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { List, Datagrid, TextField, EmailField } from 'react-admin';\n \nexport const UserList = props =&gt; (\n&lt;List {...props}&gt;\n&lt;Datagrid rowClick=\"edit\"&gt;\n&lt;TextField source=\"id\" \/&gt;\n&lt;TextField source=\"name\" \/&gt;\n&lt;TextField source=\"username\" \/&gt;\n&lt;EmailField source=\"email\" \/&gt;\n&lt;TextField source=\"address.street\" \/&gt;\n&lt;TextField source=\"phone\" \/&gt;\n&lt;TextField source=\"website\" \/&gt;\n&lt;TextField source=\"company.name\" \/&gt;\n&lt;\/Datagrid&gt;\n&lt;\/List&gt;\n);<\/code><\/pre>\n\n\n\n<p>Now you can get rid of the unnecessary information. For this example, let&#8217;s get rid of the Ids and usernames, as well as disable the phone sorting and change the street address and company name field label with the label prop. Now, this part should look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { List, Datagrid, TextField, EmailField } from 'react-admin';\n \nexport const UserList = props =&gt; (\n&lt;List {...props}&gt;\n&lt;Datagrid rowClick=\"edit\"&gt;\n&lt;TextField source=\"address.street\" label=\"Street Address\"\/&gt;\n&lt;TextField source=\"phone\" sortable={false}\/&gt;\n&lt;TextField source=\"company.name\" label=\"Company Name\"\/&gt;&lt;\/Datagrid&gt;\n&lt;\/List&gt;\n);<\/code><\/pre>\n\n\n\n<p>At this point, it is time to replace the <em>ListGuesser <\/em>with the list above in the <em>Resource <\/em>component. To do that, get back to the <em>App.js<\/em> and add the following lines:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>import {UserList} from &#8220;.\/components\/users&#8221;;<\/em><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li> <em>&lt;Resource name=&#8221;users&#8221; list={UserList} \/&gt;<\/em><\/li><\/ul>\n\n\n\n<p>And this part of the process is finished. Now you will need to repeat the process to set up your posts. But keep in mind that each post should be connected to its <em>userId <\/em>to create a reference between a post and the user that created it.<\/p>\n\n\n\n<p>So, let&#8217;s get a closer look at this aspect, as the steps of the post set up previous to it are similar to user set up. In order to ensure the correlation between a post and its user-creator, add the following lines:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n&lt;p&gt;&lt;em&gt;import { Admin, Resource,ListGuesser } from 'react-admin';&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;import jsonServerProvider from 'ra-data-json-server';&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;import {UserList} from \".\/components\/users\";&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;const dataProvider = jsonServerProvider('https:\/\/jsonplaceholder.typicode.com');&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;D&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;function App() {&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;return (&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;&amp;lt;Admin dataProvider={dataProvider}&amp;gt;&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;&amp;lt;Resource name=\"users\" list={UserList}\/&amp;gt;&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;&amp;lt;Resource name=\"posts\" list={ListsGuesser}\/&amp;gt;&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;&amp;lt;\/Admin&amp;gt;&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;);&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;}&lt;\/em&gt;&lt;\/p&gt;\n\n&lt;p&gt;&lt;em&gt;export default App;&lt;\/em&gt;&lt;\/p&gt;<\/code><\/pre>\n\n\n\n<p>To create relationships between the post and the user, you will need to use the <em>ReferenceField<\/em> component, setting up the foreign key with the <em>source=&#8221;userId&#8221;<\/em> prop. After that, you will need to change the list prop for the new posts resource to reference <em>PostList<\/em> in <em>App.js.<\/em> To do that, replace the <em>ListGuesser<\/em> in the post&#8217;s resources list prop with the <em>PostList.<\/em><\/p>\n\n\n\n<p>The next step in creating your React Admin is to create an edit button to allow content modifications. And the first thing you will need to do here is to add the EditButton component to your <em>Datagrid<\/em>. The coding for this operation will look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { List, Datagrid,ReferenceField, TextField, EmailField,EditButton } from 'react-admin';\n \nexport const PostList = props =&gt; (\n&lt;List {...props}&gt;\n&lt;Datagrid rowClick=\"edit\"&gt;\n&lt;ReferenceField source=\"userId\" reference=\"users\"&gt;&lt;TextField source=\"name\" \/&gt;&lt;\/ReferenceField&gt;\n&lt;TextField source=\"id\" \/&gt;\n&lt;TextField source=\"title\" \/&gt;\n&lt;TextField source=\"body\" \/&gt;\n&lt;EditButton\/&gt;\n&lt;\/Datagrid&gt;\n&lt;\/List&gt;\n);<\/code><\/pre>\n\n\n\n<p>The second thing you will need to do here is to pass an edit prop to your resource. To do that, use the <em>EditGuesser <\/em>component and pass it to the posts resource in <em>src\/App.js. <\/em>What you need to get is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { Admin, Resource,ListGuesser,EditGuesser } from 'react-admin';\nimport jsonServerProvider from 'ra-data-json-server';\nimport {UserList} from \".\/components\/users\";\nimport {PostList} from \".\/components\/posts\";\n \nconst dataProvider = jsonServerProvider('https:\/\/jsonplaceholder.typicode.com');\n \nfunction App() {\nreturn (\n&lt;Admin dataProvider={dataProvider}&gt;\n&lt;Resource name=\"users\" list={UserList}\/&gt;\n&lt;Resource name=\"posts\" list={PostList} edit={EditGuesser}\/&gt;\n \n&lt;\/Admin&gt;\n);\n}\n \nexport default App;<\/code><\/pre>\n\n\n\n<p>At this point, the <em>EditGuesser <\/em>component will generate edits. You will need to take those edits in order and copy them into <em>src\/components\/posts.js.<\/em> The whole thing will look like this:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;export const\nPostEdit = props =&gt; (\n&lt;Edit {...props}&gt;\n&lt;SimpleForm&gt;\n&lt;ReferenceInput source=\"userId\" reference=\"users\"&gt;\n&lt;SelectInput optionText=\"id\"\/&gt;\n&lt;\/ReferenceInput&gt;\n&lt;TextInput source=\"id\"\/&gt;\n&lt;TextInput source=\"title\"\/&gt;\n&lt;TextInput source=\"body\"\/&gt;\n&lt;\/SimpleForm&gt;\n&lt;\/Edit&gt;<\/code><\/pre>\n\n\n\n<p>If everything is fine and dandy with this, you will copy and paste the edit code, after which it is time to create the <em>CreatePost<\/em> component. This component is quite similar to the previous ones with the exception of using two different wrapper components. Here, you will need the <em>Create<\/em> component.<\/p>\n\n\n\n<p>But that&#8217;s not the end of this whole ordeal, as you will need to supply the create prop in the React Admin&#8217;s resource as well. In order to do that, you will need to add the <em>PostEdit<\/em> and <em>PostCreate<\/em> components into the import. After that, you will need to add them into the posts resource:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Resource name=\"posts\" list={PostList} edit={PostEdit} create={PostCreate}\/&gt;<\/code><\/pre>\n\n\n\n<p>&#8220;That surely must be it. My React Admin is ready!&#8221; &#8211; you might think. But unfortunately, as we told you at the beginning of this article, writing your React Admin from scratch is an extremely long and winding road. After all, it surely needs authentication, so your API will not be accessible to the general public. What you will need to do in order to add it is to create a new directory and a new file, which will be <em>src\/providers\/authProvider.js. <\/em>Your coding for this part should look somewhat like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export default {\nlogin: ({ username }) =&gt; {\nlocalStorage.setItem('username', username);\nreturn Promise.resolve();\n},\nlogout: () =&gt; {\nlocalStorage.removeItem('username');\nreturn Promise.resolve();\n},\ncheckError: ({ status }) =&gt; {\nif (status === 401 || status === 403) {\nlocalStorage.removeItem('username');\nreturn Promise.reject();\n}\nreturn Promise.resolve();\n},\ncheckAuth: () =&gt; {\nreturn localStorage.getItem('username')\n? Promise.resolve()\n: Promise.reject();\n},\ngetPermissions: () =&gt; Promise.resolve(),\n};<\/code><\/pre>\n\n\n\n<p>After that the addition of the <em>authProvider={authProvider} <\/em>prop and the <em>authProvider<\/em> component in the <em>src\/app.js<\/em>&#8216;s admin component would be required:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import authProvider from \".\/providers\/authProvider\";<\/code><\/pre>\n\n\n\n<p>And only now you will have a very crude and extremely basic React Admin that will still require services and backend tinkering and wiring up, but we digress. The main take out of this part of the article should be that this process, also not particularly difficult and somewhat simplified, could be best described as time-consuming.<\/p>\n\n\n\n<p>But what if we told you that you can create a fully functional and stunningly beautiful React Admin Page in under five minutes? Let us introduce you to your new best friend, as we get to the next part of the article!&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"four\"><strong><strong>How to build React Admin easier with Flatlogic&#8217;s Full Stack <a href='https:\/\/flatlogic.com\/generator'>AI Web App Generator<\/a><\/strong><\/strong><\/h2>\n\n\n\n<p>When we said that creating a React Admin in under five minutes is possible, we weren&#8217;t joking around. It is more than possible with the help of <a href=\"https:\/\/flatlogic.com\/generator\">Flatlogic&#8217;s Full Stack Web App Generator<\/a>, which allows you to create ready-made React Admin Pages in just five easy steps. So, take out your stopwatch, and let&#8217;s undertake this pleasant little journey together!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step \u21161. Choose a name for your React Admin Page<\/h3>\n\n\n\n<p>The process of creating a React Admin Page with the help of Flatlogic&#8217;s Full Stack Web <a href='https:\/\/flatlogic.com\/generator'>AI App Generator<\/a> is already a thousand times easier than doing it by hand, as one of the steps is not writing or pre-installing anything, but a simple task of choosing a name for you API. After you do it, it&#8217;s already time for the second step.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"399\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_1-3-1024x399.png\" alt=\"React admin\" class=\"wp-image-8353 lazyload\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_1-3-1024x399.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_1-3-600x234.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_1-3-768x299.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_1-3-1536x599.png 1536w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_1-3.png 1845w\" data-sizes=\"auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/399;\" data-original-sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step \u21162. Choose your React Admin Page&#8217;s Stack<\/h3>\n\n\n\n<p>This step is important, but also easy. Just pick the basis for your backend, frontend, and database. For the purposes of this article, we will, of course, choose the React as a frontend option. The rest is all up to you.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"400\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_2-1-1024x400.png\" alt=\"Select stack while building React admin\" class=\"wp-image-8366 lazyload\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_2-1-1024x400.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_2-1-600x235.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_2-1-768x300.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_2-1-1536x601.png 1536w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_2-1.png 1839w\" data-sizes=\"auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/400;\" data-original-sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step \u21163. Choose design for your React Admin Page<\/h3>\n\n\n\n<p>This step is visually pleasing, as you get to choose from a number of stunningly beautiful ready-for-usage designs. For our example, we&#8217;ve decided to pick the marvelous &#8220;Flatlogic&#8221; design.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"400\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_3-1536x600-1-1024x400.png\" alt=\"Choose design\" class=\"wp-image-8346 lazyload\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_3-1536x600-1-1024x400.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_3-1536x600-1-600x234.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_3-1536x600-1-768x300.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_3-1536x600-1.png 1536w\" data-sizes=\"auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/400;\" data-original-sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step \u21164. Create your React Admin Page&#8217;s Database Schema<\/h3>\n\n\n\n<p>This step is quite important, as it is the basis for your React Admin Page. But fear not, as it is highly editable and customizable to your project&#8217;s needs. For the purpose of this example, we decided that our imaginary project is an E-commerce one and, quite luckily, Flatlogic&#8217;s Full Stack Web App Generator has a ready-made database schema just for this purpose. Bear in mind that even though it is ready-made it is still customizable and ready to be tailored to your project&#8217;s specialties.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"399\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_4-2-1024x399.png\" alt=\"create database schema for react admin\" class=\"wp-image-8396 lazyload\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_4-2-1024x399.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_4-2-600x234.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_4-2-768x299.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_4-2-1536x599.png 1536w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_4-2.png 1844w\" data-sizes=\"auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/399;\" data-original-sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step \u21165. Review and generate your React Admin Page<\/h3>\n\n\n\n<p>Now we are already at the finish line. All we have to do is just ensure that we&#8217;ve chosen everything we wanted and press the majestic &#8220;Create Project&#8221; button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"401\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_5-1536x602-1-1024x401.png\" alt=\"review your React admin page\" class=\"wp-image-8348 lazyload\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_5-1536x602-1-1024x401.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_5-1536x602-1-600x235.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_5-1536x602-1-768x301.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_5-1536x602-1.png 1536w\" data-sizes=\"auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/401;\" data-original-sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>After that, just sit back and let Flatlogic&#8217;s Full Stack Web App Generator do what it does best. And after a laughably short time, you have on your hands the done and dusted React Admin Page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"479\" data-src=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_6-1024x479.png\" alt=\"\" class=\"wp-image-8397 lazyload\" data-srcset=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_6-1024x479.png 1024w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_6-600x281.png 600w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_6-768x359.png 768w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_6-1536x719.png 1536w, https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Screenshot_6.png 1919w\" data-sizes=\"auto\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/479;\" data-original-sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>Summarizing, it ought to be said that the main goal of this article was simple: to show you how easy and effortless the process of creating such a pivotal part of a web project is, as an Admin Page\/App\/Console, can be with the help of Flatlogic&#8217;s Full Stack Web App Generator. And we are absolutely sure that this goal can be achieved without any hitches. Now you don&#8217;t have to spend the valuable and precious time of you and your colleagues on this important task, but instead, you can do it in a jiffy. Finally, thank you for spending your time on this article that we hope you have found really helpful. Have a nice day and, as always, feel free to read up on more of the articles in our <a href=\"https:\/\/flatlogic.com\/blog\">blog<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>React Admin Page (React Admin Console) is a framework that contains all the data about the site and its content, including information about your products, users, etc. React Admin helps to control everything about the content on your website or application.<\/p>\n","protected":false},"author":13,"featured_media":8355,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"flatlogic_tldr":"Step-by-step guide to build a basic React Admin using react-admin and JSONPlaceholder.\nSets up users and posts with ListGuesser, custom lists, ReferenceField, and edit\/create.\nAdds a simple authProvider using localStorage with 401\/403 handling.\nFaster path: Flatlogic AI Web App Generator builds a React Admin in under five minutes, in five steps.","flatlogic_facts":[{"text":"Project bootstraps with 'npx create-react-app my-react-admin-page' and installs react-admin and ra-data-json-server.","source":""},{"text":"Data provider connects to https:\/\/jsonplaceholder.typicode.com using ra-data-json-server.","source":"https:\/\/jsonplaceholder.typicode.com"},{"text":"Posts link to users via ReferenceField with source 'userId' to set a foreign key relationship.","source":""},{"text":"Auth uses localStorage: saves 'username', clears it and rejects on HTTP 401 or 403.","source":""},{"text":"Flatlogic AI Web App Generator creates a React Admin in 5 steps, in under five minutes.","source":"https:\/\/flatlogic.com\/generator"}],"footnotes":""},"categories":[28],"tags":[252,268,35,405],"class_list":["post-8334","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides","tag-ai-app-generators","tag-flatlogic-generator","tag-reactjs","tag-react-admin-templates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building React Admin Step By Step - Flatlogic Blog<\/title>\n<meta name=\"description\" content=\"Building React admin is a easier with Flatlogic. Check how to make React admin in 5 easy steps.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/flatlogic.com\/blog\/building-react-admin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building React Admin Step By Step\" \/>\n<meta property=\"og:description\" content=\"Building React admin is a easier with Flatlogic. Check how to make React admin in 5 easy steps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/flatlogic.com\/blog\/building-react-admin\/\" \/>\n<meta property=\"og:site_name\" content=\"Flatlogic Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/flatlogic\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-26T18:46:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-11T13:38:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/62ea6de0b3469aa3d6ebb528-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"970\" \/>\n\t<meta property=\"og:image:height\" content=\"257\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alexander Rubanau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@flatlogic\" \/>\n<meta name=\"twitter:site\" content=\"@flatlogic\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexander Rubanau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building React Admin Step By Step - Flatlogic Blog","description":"Building React admin is a easier with Flatlogic. Check how to make React admin in 5 easy steps.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/flatlogic.com\/blog\/building-react-admin\/","og_locale":"en_US","og_type":"article","og_title":"Building React Admin Step By Step","og_description":"Building React admin is a easier with Flatlogic. Check how to make React admin in 5 easy steps.","og_url":"https:\/\/flatlogic.com\/blog\/building-react-admin\/","og_site_name":"Flatlogic Blog","article_publisher":"https:\/\/www.facebook.com\/flatlogic","article_published_time":"2021-10-26T18:46:26+00:00","article_modified_time":"2022-05-11T13:38:10+00:00","og_image":[{"width":970,"height":257,"url":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/62ea6de0b3469aa3d6ebb528-1.png","type":"image\/png"}],"author":"Alexander Rubanau","twitter_card":"summary_large_image","twitter_creator":"@flatlogic","twitter_site":"@flatlogic","twitter_misc":{"Written by":"Alexander Rubanau","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#article","isPartOf":{"@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/"},"author":{"name":"Alexander Rubanau","@id":"https:\/\/flatlogic.com\/blog\/#\/schema\/person\/fe11946e6132bd7996319a70e21dc189"},"headline":"Building React Admin Step By Step","datePublished":"2021-10-26T18:46:26+00:00","dateModified":"2022-05-11T13:38:10+00:00","mainEntityOfPage":{"@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/"},"wordCount":2131,"commentCount":0,"publisher":{"@id":"https:\/\/flatlogic.com\/blog\/#organization"},"image":{"@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#primaryimage"},"thumbnailUrl":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Building-React-Admin-blog.png","keywords":["AI App Generators","Flatlogic Generator","React","React Admin Templates"],"articleSection":["Guides"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/flatlogic.com\/blog\/building-react-admin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/","url":"https:\/\/flatlogic.com\/blog\/building-react-admin\/","name":"Building React Admin Step By Step - Flatlogic Blog","isPartOf":{"@id":"https:\/\/flatlogic.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#primaryimage"},"image":{"@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#primaryimage"},"thumbnailUrl":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Building-React-Admin-blog.png","datePublished":"2021-10-26T18:46:26+00:00","dateModified":"2022-05-11T13:38:10+00:00","description":"Building React admin is a easier with Flatlogic. Check how to make React admin in 5 easy steps.","breadcrumb":{"@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/flatlogic.com\/blog\/building-react-admin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#primaryimage","url":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Building-React-Admin-blog.png","contentUrl":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2021\/10\/Building-React-Admin-blog.png","width":1600,"height":1200,"caption":"Buiidling React Admin"},{"@type":"BreadcrumbList","@id":"https:\/\/flatlogic.com\/blog\/building-react-admin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/flatlogic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building React Admin Step By Step"}]},{"@type":"WebSite","@id":"https:\/\/flatlogic.com\/blog\/#website","url":"https:\/\/flatlogic.com\/blog\/","name":"Flatlogic Blog","description":"Vibe-coding, AI Agents, Professional Software Development Services, Case Studies and More","publisher":{"@id":"https:\/\/flatlogic.com\/blog\/#organization"},"alternateName":"Flatlogic Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/flatlogic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/flatlogic.com\/blog\/#organization","name":"Flatlogic","url":"https:\/\/flatlogic.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/flatlogic.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/62ea6de0b3469aa3d6ebb528-1.png","contentUrl":"https:\/\/flatlogic.com\/blog\/wp-content\/uploads\/2025\/10\/62ea6de0b3469aa3d6ebb528-1.png","width":970,"height":257,"caption":"Flatlogic"},"image":{"@id":"https:\/\/flatlogic.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/flatlogic","https:\/\/x.com\/flatlogic","https:\/\/www.instagram.com\/flatlogiccom\/","https:\/\/www.linkedin.com\/company\/flatlogic\/"]},{"@type":"Person","@id":"https:\/\/flatlogic.com\/blog\/#\/schema\/person\/fe11946e6132bd7996319a70e21dc189","name":"Alexander Rubanau","sameAs":["At Flatlogic, Alexander is deeply involved in the issues of enhancing and maintaining Flatlogic marketplace products and web app builder. He also supervises the state of Flatlogic marketplace products. Alexander is an experienced front-end developer; part-time programming lecturer; and deserves the title of software quality fanatic. Outside his working hours, he is a photographer, video maker and a dedicated father of two lively kids!"],"url":"https:\/\/flatlogic.com\/blog\/author\/alexsandr\/"}]}},"_links":{"self":[{"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/posts\/8334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/comments?post=8334"}],"version-history":[{"count":45,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/posts\/8334\/revisions"}],"predecessor-version":[{"id":11515,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/posts\/8334\/revisions\/11515"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/media\/8355"}],"wp:attachment":[{"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/media?parent=8334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/categories?post=8334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flatlogic.com\/blog\/wp-json\/wp\/v2\/tags?post=8334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}