2. Set up React App
This is the second chapter of the tutorial on building an end-to-end dapp on Aptos where you have already created a smart contract and are now setting up a React app.
Set up the app​
We will use the react library to build the client side with Create React App.
For the UI, we will use Ant Design. This is just a personal decision; you are welcome to use any different UI library/framework you wish.
- In the root folder of the
my-first-dappproject, run:
npx create-react-app client --template typescript
That will create a new client folder in the current path:
-
Your file structure should look something like:

-
Run:
cd client -
Run:
npm startAt this point you should have your app running on http://localhost:3000, which displays the default React layout.
-
In the
client/srcdirectory, find all the React app files. Let’s clean it up a bit. -
Open the
App.tsxfile and update its content to be:
function App() {
return <div>My app goes here</div>;
}
export default App;
Once you save the changes, you should see that the app content has changed in the browser and displays My app goes here.
- Open the
App.tsxfile and remove theimport './App.css';andimport logo from './logo.svg';lines. Since we remove the default imports on this file, we can remove some files in our project. Delete the filesApp.cssandlogo.svg. - Open the
index.tsxfile and remove theimport './index.css';line at the top of the file. Now you can also delete thesrc/index.cssfile.
Our dapp UI​
First we will build the dapp UI layout. We have two UI states for the app:
- When an account hasn't created a list yet (on the left).
- When an account has created a list and can now add tasks to it (on the right).

We will use the Ant Design library for our UI:
- Stop the local server if running.
- On to the
clientdirectory and install our UI library package:npm i antd@5.1.4 - Update
App.tsxwith the initial state UI:
return (
<>
<Layout>
<Row align="middle">
<Col span={10} offset={2}>
<h1>Our todolist</h1>
</Col>
<Col span={12} style={{ textAlign: "right", paddingRight: "200px" }}>
<h1>Connect Wallet</h1>
</Col>
</Row>
</Layout>
</>
);
- Don't forget to import the components we just added:
import { Layout, Row, Col } from "antd";
- Run the local server with
npm start, you should see the header that matches our UI mockup.
It is now time to add wallet support in chapter 3.