A comprehensive AI-powered analytics dashboard for analyzing global townhall meetings. Built with Next.js, TypeScript, and Tailwind CSS.
- Real-time statistics and metrics
- Quick access to all features
- Recent activity overview
- Global engagement insights
- Emerging topic identification
- Sentiment momentum tracking
- Meeting frequency analysis
- Novelty score calculations
- Speaker engagement metrics
- Sentiment analysis by speaker
- Department and region breakdown
- Exemplar quotes and key insights
- Full-text search across all speech segments
- Advanced filtering by speaker, department, region, sentiment
- Real-time search capabilities
- Content analysis and topic extraction
- Natural language query interface
- Intelligent insights generation
- Context-aware responses
- Integration with Azure OpenAI
- Frontend: Next.js 13, React 18, TypeScript
- Styling: Tailwind CSS, Radix UI components
- Icons: Lucide React
- Charts: Recharts
- Backend: Azure Functions (Python)
- AI Services: Azure OpenAI, Azure AI Language
- Search: Azure AI Search
- Storage: Azure Data Lake Storage
- Node.js 18+
- npm or yarn
- Azure Function App running locally (port 7071)
-
Clone the repository
-
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env.local
Update
.env.localwith your configuration:NEXT_PUBLIC_API_URL=http://localhost:7071 -
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser
Make sure your Azure Function App is running locally:
cd ../townhall_insights_functionapp
func startThe dashboard will automatically connect to the local Function App at http://localhost:7071.
project/
βββ app/ # Next.js app directory
β βββ page.tsx # Dashboard home
β βββ trends/ # Trend analysis page
β βββ speakers/ # Speaker insights page
β βββ utterances/ # Utterances search page
β βββ chat/ # AI assistant page
β βββ layout.tsx # Root layout
βββ components/ # Reusable components
β βββ ui/ # Base UI components
β βββ dashboard/ # Dashboard-specific components
βββ lib/ # Utilities and API client
β βββ api.ts # Azure Functions API client
β βββ utils.ts # Utility functions
βββ public/ # Static assets
The dashboard integrates with the Azure Functions backend through a comprehensive API client:
- Chat API:
/chat/query- AI-powered question answering - Trends API:
/insights/trends- Topic trend analysis - Speakers API:
/insights/speakers- Speaker engagement metrics - Utterances API:
/insights/utterances- Speech segment search
- Statistics Cards: Total topics, active speakers, average sentiment, meetings held
- Quick Actions: Direct links to all major features
- Recent Activity: Top trends and most active speakers
- Global Overview: Meeting frequency, global reach, engagement metrics
- Topic Discovery: Identify emerging discussion topics
- Sentiment Tracking: Monitor sentiment changes over time
- Momentum Analysis: Track topic momentum (up/down/flat)
- Novelty Scoring: Measure topic freshness and innovation
- Engagement Metrics: Track speaker participation and mentions
- Sentiment Analysis: Individual speaker sentiment scores
- Geographic Analysis: Department and region breakdown
- Quote Extraction: Key quotes and exemplar statements
- Full-Text Search: Search across all speech content
- Advanced Filtering: Filter by speaker, department, region, sentiment
- Content Analysis: Topic extraction and sentiment scoring
- Time-based Search: Find content by meeting and timestamp
- Natural Language: Ask questions in plain English
- Context Awareness: Maintains conversation context
- Intelligent Responses: Powered by Azure OpenAI
- Data Integration: Accesses all dashboard data sources
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checking
The dashboard follows Next.js 13 app directory conventions:
- Server Components: Default for static content
- Client Components: For interactive features (marked with
'use client') - API Routes: Backend integration through API client
- Component Library: Reusable UI components with Radix UI
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Accessible component primitives
- Custom Components: Dashboard-specific components
- Responsive Design: Mobile-first approach
npm run build
npm run startFor production deployment, update the API URL:
NEXT_PUBLIC_API_URL=https://your-function-app.azurewebsites.net- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
For questions or issues, please contact the development team or create an issue in the repository.