Aug 2025 – Dec 2025
ThemePark@UCR
A Web VR portal built by the whole course. I led my team as Scrum Master and built sign-in and the permission system for the entire platform.
My roleScrum Master of team “Ingeniería del Pozole”; owner of authentication and authorization
ThemePark@UCR is a Web VR portal that lets people explore the university through immersive tours, built by several teams in the Software Engineering and Databases integration course. Besides being Scrum Master of my team, I sat on the Project Management and Gitflow committees and owned authentication and authorization across the whole platform.
Sign-in with Microsoft Entra ID
- Implemented sign-in and registration with Entra ID in the Blazor frontend and the API, creating each user from their token claims the first time they're validated and linking them to their Entra object ID.
- New accounts get a Guest role automatically. Tokens travel as Bearer headers, there's an endpoint to validate them, and Swagger works independently of whether Entra is configured.
A platform-wide permission system
- Permissions are registered as authorization policies, and a permission-injector service adds each user's permissions to their identity as claims at sign-in.
- Protected every backend endpoint (leaving anonymous only what needed to be), seeded the default roles and permissions, and exposed the current user's permissions to the frontend.
- On the frontend: every page is protected, and a PermissionGuard component hides navigation and the add, edit and delete actions for buildings, learning spaces and interactive components according to the user's permissions.
- User management screens (add users, assign roles) with on-blur validation and clear error messages.
Quality and delivery
- Unit tests for endpoint authorization and for the user and permission services across the backend and frontend layers.
- Moved the OpenAPI setup into the presentation layer, kept the Kiota-generated client in sync, flagged the test projects for SonarQube, and set up the deployment configuration with per-environment API URLs.
- Wrote parts of the project documentation, including team structure and the user data requirements.
Built with
C# / .NETBlazorMicrosoft Entra IDSQL ServerKiotaxUnitSonarQube
Next project
Distributed ASCII-Art Network →



