PoRobotStocks is an intelligent web application designed for retail investors interested in discovering and analyzing affordable robotics and automation companies. The platform combines real-time market data with Azure AI-powered analysis to provide actionable investment insights for stocks priced $10 or lower.
- Smart Stock Discovery: Automatically filters stocks to show only companies with prices β€ $10
- Azure AI Integration: GPT-4o powered analysis with sentiment scoring and buy recommendations
- Real-time Market Data: Live stock prices via Alpha Vantage API
- Interactive Dashboard: Clean, card-based interface with instant stock details
- Watchlist Management: Track your favorite affordable robotics stocks
- Health Monitoring: Built-in diagnostics for all connected services
- Blazor WebAssembly (.NET 9) - Interactive single-page application
- Bootstrap 5 - Responsive UI components
- Modern CSS - Clean, professional styling
- FastEndpoints - High-performance API endpoints
- ASP.NET Core 9 - Web API foundation
- Serilog - Structured logging
- Azure Table Storage - Primary data persistence
- Azurite Emulator - Local development storage
- Azure OpenAI (GPT-4o) - Intelligent stock analysis
- Azure AI Language Services - Sentiment analysis
- Alpha Vantage API - Real-time market data
- Clean Architecture - Domain-driven design patterns
- MediatR - CQRS command/query handling
- Ardalis Specifications - Repository pattern implementation
- .NET 9 SDK
- Azure CLI (for Azure services)
- Azure Developer CLI (azd) (for deployment)
- Azurite (for local storage emulation)
The application is deployed to Azure using GitHub Actions with federated credentials.
Live URL: https://porobotstocks.azurewebsites.net
- App Service Plan: PoShared-plan (F1 Free tier, Windows)
- App Service: PoRobotStocks
- Storage Account: porobotstocksstorage
- Azure OpenAI: PoRobotStocks-openai (gpt-4o model)
- Azure AI Language: PoRobotStocks-language (F0 free tier)
- Application Insights: PoRobotStocks-insights
- Log Analytics: PoRobotStocks-logs
Deployments are triggered automatically on push to the master branch via GitHub Actions:
- Provision: Infrastructure provisioning using Bicep templates
- Build: .NET 9 build and publish
- Deploy: Deployment to Azure App Service
# Login to Azure
azd auth login
# Provision infrastructure
azd provision
# Deploy application
azd deploygit clone https://github.com/punkouter25/PoRobotStocks.git
cd PoRobotStocksCreate appsettings.Development.json in src/PoRobotStocks.Web/ with your API keys:
{
"ConnectionStrings": {
"TableStorageConnection": "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;"
},
"AlphaVantage": {
"ApiKey": "YOUR_ALPHA_VANTAGE_API_KEY"
},
"AzureOpenAI": {
"Endpoint": "https://your-openai.openai.azure.com/",
"ApiKey": "YOUR_AZURE_OPENAI_API_KEY",
"ChatModel": "gpt-4o"
},
"AzureAI": {
"Language": {
"Endpoint": "https://your-language.cognitiveservices.azure.com/",
"ApiKey": "YOUR_AZURE_AI_LANGUAGE_API_KEY"
}
}
}azurite --silent --location ./azurite --debug ./azurite/debug.logdotnet run --project src/PoRobotStocks.Web- Web App: https://localhost:5001
- Stocks Dashboard: https://localhost:5001/stocks
- Health Check: https://localhost:5001/health
- Diagnostics: https://localhost:5001/diag
| Endpoint | Method | Description |
|---|---|---|
/api/stocks |
GET | List all affordable stocks (β€ $10) |
/api/stocks/{ticker} |
GET | Get detailed stock information |
/api/stocks/refresh |
POST | Refresh stock data from APIs |
/health |
GET | Application health status |
- Purpose: Primary data persistence for stocks, watchlists, and user data
- Local: Azurite emulator (http://127.0.0.1:10002/devstoreaccount1)
- Production: Azure Storage Account via connection string
- Tables:
Stocks,Watchlists,UserPreferences
- Purpose: Real-time stock market data and pricing
- Endpoint: https://www.alphavantage.co/
- Rate Limit: 25 requests/day (free tier)
- Data: Current prices, historical data, company fundamentals
- Purpose: Intelligent stock analysis and buy recommendations
- Model: gpt-4o for advanced reasoning
- Features: Company analysis, market trend evaluation, risk assessment
- Purpose: Sentiment analysis of news and social media
- Features: News sentiment scoring, social media analysis
- Endpoint: Azure Cognitive Services Language API
- Press
F5to start debugging - Select "Development" or "Production" launch profile
- Application opens automatically in browser
src/
βββ PoRobotStocks.Core/ # Domain models and interfaces
βββ PoRobotStocks.Infrastructure/ # External service implementations
βββ PoRobotStocks.Web/ # FastEndpoints API
βββ PoRobotStocks.Blazor/ # Blazor WebAssembly UI
- Stock Filtering: Only shows stocks β€ $10 for affordability focus
- AI Analysis: Each stock gets an AI-powered buy score (0-10)
- Real-time Updates: Live price data with change indicators
- Responsive Design: Works on desktop, tablet, and mobile
- Health Endpoints:
/healthfor basic checks,/diagfor detailed diagnostics - Logging: Structured logging with Serilog to console and files
- Error Handling: Graceful degradation when external APIs are unavailable
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Built with β€οΈ for affordable robotics investing