I started this as a fun way to organize my Minecraft world, but it turned into a full-stack learning experience using Azure, Notion, and GitHub Actions.
AZ-104 concepts like App Services, VNet integration, infrastructure as code, and deployment automation were on my mind. You can use Notion to build web apps and deploy them to Azure in this post. You can also watch my YouTube video where I show you how it’s done.
I created a simple web form that lets me submit Minecraft area updates directly into a Notion database. The frontend is a basic HTML form styled with CSS, and the backend is built in Node.js using Express. It connects to Notion through their official SDK and runs on Azure App Service with automated deployments using GitHub Actions.
Features
- Full-stack Node.js app with Express.js backend
- Notion API integration for database updates, based on their starter app
- Deployment automation using GitHub Actions
- Infrastructure as code via Azure Bicep
- Hosted on Azure App Service (Linux, 64-bit configuration)
Resources Used
- Getting Started with Notion API
- Notion SDK Full Stack Example
- Deploy Node.js to Azure App Service
- GitHub Actions: Deploying Node.js
- Configure Azure App Service for 64-bit Node.js
- Azure Bicep Guide
Setup Instructions
1. Clone the Repository
git clone https://github.com/shevonnepolastre/minecraft-dashboard-app.git
cd minecraft-dashboard-app
npm install
2. Configure Your Variables
Create an internal Notion integration and get your NOTION_KEY
and NOTION_PAGE_ID
. Add these to a .env
file in your project root:
NOTION_KEY=your-notion-api-key
NOTION_DATABASE_ID=your-database-id
Also add your Azure service principal credentials:
- Client ID
- Client Secret
- Tenant ID
- Subscription ID
I stored them in JSON format for easier management with GitHub Actions.
Important: Add .env
to your .gitignore
and do not check it into Git.
3. Use Bicep to Create App Service
Use the Bicep files to provision Azure resources. Make sure to declare:
- App Service pricing tier
- Language stack (
node
,php
, etc.) - Operating system compatibility (Linux vs Windows)
4. Create Your GitHub Actions YAML
Place the GitHub Actions YAML file inside .github/workflows
. It defines deployment steps triggered on push.
5. Add a Self-Hosted Runner (Optional)
If you’re using a self-hosted runner, follow GitHub’s guide on adding self-hosted runners.
6. Test Locally
Run the app locally:
node server.js
Then go to http://localhost:[your-port]
to test the form and confirm Notion integration works.
7. Deploy to Azure
Use Bicep and GitHub Actions to create the App Service and web app. You can also deploy manually or via VS Code if preferred.
8. Configure Environment Variables in Azure
Go to your Azure App Service > Configuration > Application Settings and add:
const notion = new Client({ auth: process.env.NOTION_KEY });
const databaseId = process.env.NOTION_DATABASE_ID;
This ensures your app can access the Notion API securely.
9. Use Debug Console and Log Stream
Troubleshooting is easier with Azure’s Debug Console and Log Stream. These tools helped me spot missing variables and app startup errors.
How It Works
- User submits a Minecraft area through the form.
- The backend receives the data and formats a Notion API request.
- The request is sent to Notion, updating the dashboard in real-time.
This simple setup has made it easier for me to keep track of builds, ideas, and progress in my Minecraft world.
Lessons Learned
- Linux App Service is easier to set up than Windows for Node.js apps.
- Always add
.env
to.gitignore
, and remember to replicate those variables in Azure. - Free App Service plans don’t support 64-bit—upgrade if needed.
- Deployment slots are only available in Standard tier or higher.
- Start simple: Use community templates or examples and customize them for your own needs.
Watch the Video
Want to see this project in action? Watch the full walkthrough on my YouTube channel, where I show how the form, Notion API, and Azure all work together.
GitHub Repository: https://github.com/shevonnepolastre/minecraft-dashboard-app
Free Minecraft Dashboard Notion template: https://www.notion.so/marketplace/templates/minecraft-tracker