Task Manager
Small Angular + ASP.NET Core + Azure SQL CRUD app. Practice project for the full deploy loop across Azure and Firebase.
بسم الله الرحمن الرحيم
The Task Manager was one of the smaller warm-up projects in the same batch as the Member Feedback Portal and the Website Analyzer. The goal was to keep me sharp on the ASP.NET Core + Angular + Azure loop without spending a week on any single build. Add tasks, edit them, mark them complete. Nothing fancy, but end-to-end.
The stack
Angular 19 with standalone components on the frontend, plain CSS.
ASP.NET Core 8 REST API on the backend.
Azure SQL (free tier) for persistence.
Azure App Service hosting the API.
Firebase Hosting for the frontend.
The API has the standard CRUD endpoints. The frontend has an inline-edit UX for the task list, so you don't get bounced out to a separate edit page every time you want to fix a typo in a task title.
What broke
Three things worth mentioning.
The first was a NullInjectorError in Angular that took me longer to track down than it should have. It fired on a component that used HttpClient. Standalone components changed how providers get pulled in, and I hadn't imported provideHttpClient() in the component's bootstrap. Once I understood the pattern, it was a five-line fix. But it was a good reminder that "standalone components" isn't just cosmetic. The DI wiring genuinely changes.
The second was Azure SQL credentials. I had them in appsettings.json at first, which is fine for local dev but wrong for anything shared. Moving them to Azure App Service's environment configuration was the right fix. It also meant I could have different credentials for staging and production without a code change.
The third was CORS, again. Firebase to Azure on the same regional pair, but different domains. Standard whitelist config on the ASP.NET side, but the browser dev tools error was misleading enough that it took me a minute to see it wasn't a network problem.
Next steps
Adding user accounts would turn this from a demo into something more useful, and I'd probably move the frontend to Angular's new signals-based state management to see how it feels compared to the traditional service + observable pattern. Neither was worth doing for a practice build, but they'd be the natural next steps if I ever came back to it.
Try it at task-manager--taskmanager-e27ea.us-central1.hosted.app.