Skip to content
Aayan AmirSoftware developer
Back to selected work

Full-stack web application

Student Portal

Shared classroom resources, with a review step before publication.

  • ASP.NET Core MVC
  • .NET 10
  • PostgreSQL
  • EF Core
  • Cloudinary
Workflow illustration: resource submission, pending review, then approved publication
Workflow illustration based on the README · not an application screenshot

What I brought to the project

I connected student submissions, administrator moderation, persistent records and uploaded files in one application. The important boundary is publication: submitting a resource does not make it public.

What the application delivers

The application provides a complete submit → review → publish workflow, with Cloudinary uploads and file open/download endpoints. PDFs are proxied for inline viewing and download; rejection also removes uploaded files.

  • Classrooms grouped by subject and section
  • Pending submissions with approve/reject moderation
  • Room management and cookie-authenticated administrator access
  • Approved file viewing and download, including inline PDFs

Engineering decisions

Make moderation part of the data model

ClassRoom, ContentItem and ContentFile records, together with content/status enums, express room membership, submission state and file metadata. EF Core with Npgsql persists them in PostgreSQL.

Separate storage from delivery

Cloudinary handles optional JPG, PNG, WEBP, GIF and PDF uploads. Application endpoints handle approved-content access and PDF delivery rather than making the upload form the publication boundary.

Validate setup before serving requests

Startup checks required database, administrator and upload configuration. Local development uses user-secrets; the repository also contains a separate Capacitor Android wrapper for a hosted portal.

The problem

Notes, links, images and PDFs need a shared classroom home. Publishing every submission immediately gives administrators no opportunity to review what becomes visible.

The approach

Students browse subject/section classrooms and submit metadata with an optional file. New records enter Pending status. Cookie-authenticated administrators approve or reject submissions and manage classrooms; approved items appear in the room.

Scope and limitations

Running the portal requires PostgreSQL, Cloudinary and administrator configuration. The Android project is a web wrapper, not a separate native implementation.

Based on the project README, reviewed 24 October 2026.

Have a similar problem to solve?

I’m open to backend and full-stack roles, and freelance projects.