FeedbackFlow is a comprehensive feedback collection and analysis platform that helps teams gather, consolidate, and analyze feedback from multiple sources including GitHub, YouTube, Reddit, Hacker News, and social media platforms. The platform consists of a modern Blazor web application and Azure Functions backend.
π Production: https://feedbackflow.app
π§ͺ Staging: https://staging.feedbackflow.app
FeedbackFlow follows a modern .NET architecture with the following components:
- Blazor Server application built with .NET 9
- Modern, responsive UI with light/dark theme support
- Real-time feedback collection and analysis
- Interactive dashboards and reporting
- User authentication and session management
- Serverless backend for data processing
- RESTful APIs for the web application
- Background processing for large data collections
- Integration with AI services for sentiment analysis
- Scheduled tasks for automated data updates
- Common models and utilities
- Data transfer objects (DTOs)
- Business logic shared between components
- Serialization and validation helpers
Comprehensive test suite using MSTest for:
- URL parsing and validation
- Data transformation logic
- Service integrations
- Business rule validation
- GitHub: Issues, discussions, pull requests, and comments
- YouTube: Video comments and playlist discussions
- Reddit: Posts, comments, and thread discussions
- Hacker News: Stories and comment threads
- Social Media: Twitter/X and BlueSky integration
- Sentiment analysis using Azure OpenAI
- Automated categorization and tagging
- Trend identification and insights
- Content summarization
- Responsive design for all devices
- Light and dark theme support
- Accessible interface with keyboard navigation
To use FeedbackFlow, ensure you have the following:
- .NET 9.0 SDK installed
- A valid GitHub API Key
- A valid YouTube API Key
-
Clone the repository:
git clone https://github.com/jamesmontemagno/feedbackflow.git cd feedbackflow
-
Restore dependencies:
dotnet restore
-
Build the project:
dotnet build
The easiest way to run FeedbackFlow is using .NET Aspire, which orchestrates both the web application and Azure Functions:
-
Navigate to the AppHost directory:
cd FeedbackFlow.AppHost
-
Run the orchestrated application:
dotnet run
This will start both the web application and Azure Functions locally with proper service discovery and monitoring. You will be prompted to enter API keys for the Azure Function on startup for the first time or you can enter them later on the settings menu.
FeedbackFlow/
βββ feedbackwebapp/ # Blazor Server web application
βββ feedbackfunctions/ # Azure Functions backend
βββ shareddump/ # Shared library and models
βββ FeedbackFlow.AppHost/ # .NET Aspire orchestration
βββ feedbackflow.tests/ # Unit and integration tests
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes following the coding guidelines in the instructions
- Write tests for new functionality
- Run tests:
dotnet test
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow C# naming conventions (PascalCase for public, camelCase for private)
- Use file-scoped namespaces
- Implement proper async/await patterns
- Add component-specific CSS in
.razor.css
files for Blazor components - Support both light and dark themes
- Write meaningful commit messages
The application is configured for deployment to Azure with:
- Azure App Service for the web application
- Azure Functions for the serverless backend
- GitHub Actions for CI/CD with staging and production environments
Set up the following environments:
- Production:
https://feedbackflow.app
- Staging:
https://staging.feedbackflow.app
(deployed on PR creation)
FeedbackFlow can run in mock mode for testing without requiring API keys. When running in debug mode without configured keys, the application will automatically use mock data.
- Hacker News: Works without keys in all modes
- Dev Blogs: Works without keys in all modes
- Other Sources: Use mock data when keys are not configured in debug mode
If you want to test with real data, configure the following keys in your local.settings.json
or ideally User Secrets:
- GitHub Personal Access Token: For GitHub issues, discussions, and pull requests
- YouTube API Key: For YouTube video comments
- Azure OpenAI: For AI-powered sentiment analysis and insights
- Reddit Client ID/Secret: For Reddit posts and comments
- Twitter Bearer Token: For Twitter/X data collection
- BlueSky Credentials: For BlueSky social media integration
Create feedbackfunctions/local.settings.json
or just the values in user secretes for production keys:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"AzureWebJobsSecretStorageType": "files",
"YouTube:ApiKey": "",
"Reddit:ClientId": "",
"Reddit:ClientSecret": "",
"GitHub:AccessToken": "",
"Azure:OpenAI:Endpoint": "",
"Azure:OpenAI:ApiKey": "",
"Azure:OpenAI:Deployment": "",
"Twitter:BearerToken": "",
"BlueSky:Username": "",
"BlueSky:AppPassword": "",
"Mastodon:AccessToken": "",
"Mastodon:ClientKey": "",
"Mastodon:ClientSecret": "",
"UseMocks": false
}
}
Note: Without this configuration file, the application will run in mock mode, which is perfect for testing and development.
IMPORTANT: Do not check these into source control!
This project is licensed under the MIT License. See the LICENSE file for details.