dotnet-blazor-crud
Blazor CRUD is a demo application built with the Blazor framework using the client-side hosting model with WebAssembly in the browser invoking .NET Core REST APIs secured by a JWT service. To browse the two components of the application, follow the links below. For authenticated pages and APIs, use the credentials (admin / admin).
- Blazor CRUD Application - A client side hosted WASM application built using Blazor. The application highlights CRUD data entry for entities, data pagination, client-side validation using Data Annotations, and authentication and authorization using JWT tokens.
- Blazor CRUD REST API - A REST API for CRUD with non-read API calls secured with JWT. The API includes a call to authenticate users and receive a JWT bearer token.
Blazor CRUD uses the following DevOps environment and tools to support a CI / CD process:
- GitHub Source Code Repository - All source code is stored in the GitHub repository, which is where you currently find yourself.
- Azure DevOps for CI/CD - Azure DevOps is used for continunous integration and continuous delivery (CI/CD). Builds and deployments are initiated with every cheackin to the main brach of the solution in GitHub.
- DockerHub for Container Storage - DockerHub is where BlazorCrud tagged Docker images are stored after being created in the CI/CD pipeline. The can also be pulled and run locally by using the command "docker pull thbst16/blazor-crud".
Screens
Home page with BlazorCRUD features
Login page
Paginated results and search
Edit page for complex objects with validations
Features
- Online demo site to explore the application
- CI/CD Using Azure DevOps
- Docker container generation as a single deployable Docker image
- Entity lists with pagination and search
- Data entry forms with validations
- Complex data entry with object graph validations
- File upload and download using JavaScript Interop
- Batch processing of JSON files
- REST interfaces with Swagger documentation
- Javascript Web Token (JWT) authentication
- Data generation to pre-populate thousdands of entity records
Motivation and Credits
I would not have got this project completed without the vast knowledge of experienced peers at my disposal. Referenced below are items that were specifically helpful with specific functional attributes of the solution.