ProDocs
Academic document library in .NET + Angular, with full-text search inside PDF content — my thesis project revisited and modernized.
Context
It started as my Computer Engineering final year project (2022): a digital library to catalog, search and download theses and academic papers. In 2026 I revisited it as a case study in software evolution — restructuring the architecture, hardening security and redesigning the UI.
The challenge
Enable search over the full content of PDFs (not just title and abstract) without dedicated search infrastructure, with role-based permissions and everything running on a single Render free-tier service.
Role and responsibilities
- PDF text extraction with PdfPig and full-text search index with SQLite FTS5 (virtual table + triggers)
- JWT authentication (HS512, key kept out of version control) with ASP.NET Core Identity and three roles: common, advanced and administrator
- N-layer architecture with dependency inversion: Application defines contracts, persistence implements them
- Angular 20 frontend with route guards, JWT interceptor, pagination and modals via ngx-bootstrap
- Signup always creates a common user on the backend, ignoring the client-sent role (privilege escalation defense)
- Multi-stage Docker + Render Blueprint: the API serves the SPA itself in production, one single service
Stack and architecture
.NET 10 (Web API) + EF Core 10 + SQLite (FTS5) on the backend; Angular 20 + ngx-bootstrap + Bootstrap 5 (Bootswatch Cosmo) on the frontend; PdfPig for PDFs; xUnit and Karma for tests; Docker and GitHub Actions for CI.
Highlights
- Full-text search inside PDF content, not just metadata
- Complete backup (database + files) via server-generated ZIP
- Full PDF text never exposed by the API — used only in the search index
- From academic thesis to modern product: evolved architecture, security and UI
Takeaways
Revisiting my own thesis years later was a rare software evolution exercise: I could see exactly what deadline pressure had let slip and fix it with everything I learned since — layered architecture, real authentication security and full-text search without dedicated servers.