🎓 Thesis Project — developed as part of a Bachelor’s thesis for the Applied Informatics at University of Economics in Cracow.
StriveUp is a cross-platform activity‐tracking app built with Blazor Hybrid and .NET. Track workouts, earn medals, connect with friends, and view rich activity charts (heart rate, speed, elevation, and more). The solution includes:
- Blazor Hybrid Web App (
StriveUp.Web) - .NET MAUI Native App (
StriveUp.MAUI) - ASP.NET Core API with Entity Framework Core (
StriveUp.API) - Shared Models/Services (
StriveUp.Shared) - Infrastructure: EF Core migrations and database-related tooling (
StriveUp.Infrastructure) - Azure Functions: External integrations and background jobs (
StriveUp.Sync)
All services and apps are deployed to Azure App Service, Azure SQL Database, and Azure Functions.
- Features
- Architecture
- Tech Stack
- Repository Structure
- Prerequisites
- Getting Started
- Configuration
- External Integrations
- Deployment
- Contributing
- License
- Activity Tracking: Record workouts, runs, rides, and more.
- Medals & Achievements: Earn badges for milestones and weekly challenges.
- Social: Connect with friends, like/comment their activities, and challenge each other.
- Rich Charts: View detailed charts for heart rate, speed, elevation, cadence, etc.
- Multi-Platform: Accessible via web browser or native mobile app (iOS, Android, Windows).
- External Sync: Import data from Garmin Connect, ZEPP OS, and other providers via Azure Functions.
┌──────────────┐ ┌───────────────┐ ┌────────────────────┐
│ StriveUp.Web | ◀──── │ StriveUp.API │ ◀───── │ Azure SQL Database │
│ (Blazor) │ │ (ASP.NET Core)│ └────────────────────┘
└──────────────┘ └───────────────┘ ▲
▲ ▲ │
│ │ │
┌──────────────┐ ┌────────────────┐ ┌───────────────┐
│StriveUp.MAUI │ │ Azure Function │ ─────▶ │ External APIs │
│ (.NET MAUI) │ │ (Integrations) │ └───────────────┘
└──────────────┘ └────────────────┘
- Frontend: Blazor Hybrid (WebAssembly + server), .NET MAUI
- Backend/API: ASP.NET Core 9, Entity Framework Core
- Database: Azure SQL (Microsoft SQL Server)
- Serverless: Azure Functions (.NET 7)
- CI/CD & Hosting: Azure DevOps / GitHub Actions → Azure App Service & Functions
- External APIs: Unofficial Garmin Connect, ZEPP OS, etc.
- Cloud Image Management: User activity images and avatars are stored and served via Cloudinary.
- Authentication: Secure API access with JWT Bearer authentication for all endpoints.
StriveUp/
├── StriveUp.sln
├── .gitignore
├── package.json # for Blazor Web client assets
├── package-lock.json
├── .github/ # Github related things, workflows
├── StriveUp.API/ # ASP.NET Core Web API
├── StriveUp.Infrastructure/ # EF Core migrations, domain models
├── StriveUp.Sync/ # Azure Functions
├── StriveUp.Shared/ # DTOs, shared services, shared components
├── StriveUp.Web/ # Blazor Hybrid web project
└── StriveUp.MAUI/ # .NET MAUI native app
- .NET 9 SDK
- Visual Studio 2022 or VS Code + C# extensions
- Azure subscription with:
- App Service Plan
- Function App
- Azure SQL Database
- External API credentials (Garmin, ZEPP, etc.)
-
Clone the repository
git clone https://github.com/calKU0/StriveUp.git cd StriveUp -
Restore & Build
dotnet restore dotnet build
-
Run the solution
- API & Functions:
In another terminal:
cd StriveUp.API dotnet runcd StriveUp.Sync func start - Web App:
cd StriveUp.Web dotnet run - Native App:
OpenStriveUp.slnin Visual Studio, setStriveUp.MAUIas startup, and run on emulator/device.
- API & Functions:
All connection strings and secrets are managed in appsettings.json (local) or in Azure App Service / Function App configuration:
- Azure Functions:
SetFUNCTIONS_WORKER_RUNTIME,AzureWebJobsStorage, and the sameConnectionStrings/ provider secrets in your Function App settings.
Azure Functions in StriveUp.Functions poll external APIs on schedule or webhook trigger, fetch user activity data, and push it into your app’s database via the API’s endpoints. Supported providers:
- Garmin Connect
- ZEPP OS
- ...more to come!
-
Publish API & Web
dotnet publish StriveUp.API -c Release dotnet publish StriveUp.Web -c Release
-
Deploy to Azure App Service
- Create two App Services (API & Web).
- Deploy via CLI, Azure DevOps, or GitHub Actions.
-
Deploy Azure Functions
func azure functionapp publish <YourFunctionAppName>
-
Set Configuration
In the Azure Portal, under each App/Function → Configuration, add your connection strings and secrets. -
Point Domain & SSL (optional)
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Commit your changes (
git commit -m "Add my feature") - Push to your branch (
git push origin feat/my-feature) - Open a Pull Request
Please follow the existing code style and include tests where applicable.
This project is licensed under the MIT License.
Built with ❤️ using .NET and Azure