This 2-part tutorial will guide you through integrating with Bastion SDK in your Next.js app through Metamask and then using social login via Particle Auth.
This is Part 1 of the tutorial.
Note: You can find the complete code for this app in this Github repo.
Prerequisites
Node.js and npm installed
Basic understanding of Next.js and React
A Bastion account for API key
A Particle Network account
Step 1: Set Up Your Next.js Project
If you haven't already set up a Next.js project, create one by running:
npx create-next-app nextjs-demo-app
Make sure that you choose the following options for this demo to work. (It should still work with different options, but the project structure would be different).
Note:- If you're using App Router in NextJS 13, you should use /app/index.tsx instead of /pages/index.tsx
Navigate into your project folder:
cd nextjs-demo-app
Step 2: Install Required Packages
Install the required npm packages:
npm install bastion-wallet-sdk ethers@5 next @particle-network/auth @particle-network/provider
Go to your globals.css file, which is usually under /styles.
Add the following CSS at the bottom -
/* styles/globals.css */
html, body {
max-width: 100vw;
overflow-x: hidden;
height: 100vh; /* New: Set height to full viewport height */
}
/* Reset some default browser styles */
body, h1, button {
margin: 0;
font-family: Arial, Helvetica, sans-serif;
}
/* Make a container for the whole page */
div {
text-align: center;
margin: 0 auto; /* Updated: Removed top and bottom margin */
height: 100vh; /* New: Set height to full viewport height */
display: flex;
flex-direction: column;
justify-content: center; /* Center content vertically */
align-items: center; /* Center content horizontally */
}
/* Add some padding and a background gradient to buttons */
button {
padding: 15px 25px;
font-size: 16px;
cursor: pointer;
border: none;
border-radius: 4px;
color: #fff;
background: linear-gradient(to right, #6C1EB0, #DE389F);
transition: 0.3s ease-out;
margin-top: 15px;
}
h3{
margin-top: 15px;
}
.main-container {
text-align: center;
height: 100vh; /* Set height to full viewport height */
display: flex;
flex-direction: column;
justify-content: center; /* Center content vertically */
align-items: center; /* Center content horizontally */
}
/* Hover effect for buttons */
button:hover {
background: linear-gradient(to right, #DE389F, #6C1EB0);
}
/* Add some spacing between items */
h1, h2, h3, button {
margin-bottom: 20px;
}
Step 7: Test your app
Now you can run your app using
npm run dev
Navigate to http://localhost:3000 and click on the "Login with Metamask" button. Follow the usual Metamask login procedure, and you should see your Ethereum address displayed on the screen, indicating a successful login.
You should also see a Mint NFT button on the page now. If you click on this button, the app will mint an NFT to your Smart Wallet by sending a User Operation on the Arbitrum Goerli testnet using the Pimlico bundler.
That's it! You've successfully integrated Metamask with the Bastion SDK in a Next.js application. You can now proceed to build more complex functionalities into your decentralized application.