AI Notes App
Azure-native notes app with GPT-4o-mini AI features, Clean Architecture, and full CI/CD to Azure
About This Project
A production-ready full-stack notes application that demonstrates real-world Azure development practices: React + TypeScript frontend deployed to Azure Static Web Apps, ASP.NET Core backend on Azure App Service, Azure SQL Database with EF Core, and Azure OpenAI (GPT-4o-mini) powering AI features. All secrets stay backend-only — the frontend never touches an API key. Built with Clean Architecture (Domain / Application / Infrastructure / API layers), GitHub Actions CI/CD, and a polished accessible UI with dark mode, keyboard shortcuts, and PDF export.
What You'll Learn
Key Features
Project Structure
ai-notes-app/
├── Backend/
│ ├── NotesApp.Api/ ← Controllers, Startup, appsettings
│ ├── NotesApp.Application/ ← Use cases, service interfaces, DTOs
│ ├── NotesApp.Domain/ ← Note entity, domain logic
│ └── NotesApp.Infrastructure/ ← EF Core, Azure OpenAI client, repositories
│
└── Frontend/
└── notesapp-ui/
└── src/
├── components/
│ ├── ai/ ← AI toolbar, generated content badge
│ ├── notes/ ← NoteCard, NoteEditor, NoteGrid
│ ├── layout/ ← Header, Sidebar, ThemeToggle
│ └── ui/ ← Modal, Button, Input primitives
├── features/ ← Search, tag management
├── hooks/ ← useNotes, useTheme, useKeyboard
├── services/ ← Axios API client wrappers
└── utils/ ← PDF export, formattingSetup Guide
Clone the repository
Clone the ai-notes-app repo and navigate into it.
git clone https://github.com/asmanasir/ai-notes-app.git cd ai-notes-app
Configure backend secrets
Create appsettings.Development.json in the API project with your Azure OpenAI and SQL connection strings. This file is git-ignored — never commit it.
# Backend/NotesApp.Api/appsettings.Development.json
{
"ConnectionStrings": {
"Default": "Server=localhost;Database=NotesApp;Trusted_Connection=True;"
},
"AzureOpenAI": {
"ApiKey": "your-azure-openai-key",
"Endpoint": "https://your-instance.openai.azure.com/",
"DeploymentName": "gpt-4o-mini"
}
}Run EF Core migrations
Apply migrations to create the Notes table in your SQL database.
cd Backend/NotesApp.Api dotnet ef database update
Install frontend dependencies
Install npm packages for the React frontend.
cd Frontend/notesapp-ui npm install
Running the Project
Start the ASP.NET Core backend
Start the API on port 7110. Swagger UI is available at /swagger for exploring all endpoints.
cd Backend/NotesApp.Api dotnet run # API: https://localhost:7110 # Swagger: https://localhost:7110/swagger
Start the React frontend
In a second terminal, start the Vite dev server on port 5173.
cd Frontend/notesapp-ui npm run dev # Open: http://localhost:5173
Create a note and try AI features
Create a note, type a title, then use the AI toolbar to generate content, summarise, or auto-tag. Watch the AI badge appear on generated notes.
Test PDF export and keyboard shortcuts
Press / to open search, Ctrl+Enter to save, ? to see the shortcut list. Export any note to PDF from the card or editor.
Project Info
Tech Stack
Prerequisites
- .NET 8 SDK installed
- Node.js 18+ installed
- Azure subscription (free tier works — Azure OpenAI requires approval)
- Azure OpenAI resource with GPT-4o-mini deployment
- Azure SQL Database (or SQL Server locally for dev)
Asma Hafeez Khan
Project Author
Built as an Azure portfolio project demonstrating the full stack: React on Azure Static Web Apps, .NET on Azure App Service, Azure SQL, and Azure OpenAI — all wired together with GitHub Actions CI/CD. Shows how to keep AI credentials backend-only while exposing AI features to the frontend safely.