A document management system with features including archiving, OCR processing, tagging, and full-text search.
- ASP.NET Core 8
- Swagger/OpenAPI (Swashbuckle.AspNetCore)
- API Controller(minimal api)
Option A: React maybe even with Fluent UI https://react.fluentui.dev/?path=/docs/concepts-introduction--docsOption B: Blazor WebAssembly (Microsoft.AspNetCore.Components.WebAssembly)- Option C: good old html and js
- Entity Framework Core (Microsoft.EntityFrameworkCore)
- PostgreSQL (Npgsql.EntityFrameworkCore.PostgreSQL) to persist
- BL(domainmodel) entities
- Unit Tests with a happy and unhappy path
- Mapping using Automapper
- Minimal API
- Docker working
- RabbitMQ (RabbitMQ.Client)
- MassTransit (MassTransit, MassTransit.RabbitMQ)
- Hangfire (Hangfire.AspNetCore)
- TesseractOCR (Tesseract)
- NEST (Elasticsearch.Net, NEST)
The best way to avoid failure is to fail constantly
- Logging: Serilog (Serilog.AspNetCore)
- Exception Handling: Global exception middleware
- Validation: FluentValidation
- Mapping: AutoMapper
- Dependency Injection: Autofac
- Upload document
- Search for a document
- Clone the repository
- Navigate to the project directory
- Run
docker-compose up --build
- Access the API at
http://localhost:8081
- Swagger documentation:
http://localhost:8081/swagger
- GET /documents
- GET /documents/{id}
- POST /documents
- PUT /documents/{id}
- DELETE /documents/{id}
- GET /documents/search (placeholder for future implementation)
Blazor WebAssembly hardcoded endpoint to api controller (Microsoft.AspNetCore.Components.WebAssembly)