Pinboard archive / Engineering case study
Context
I led this team project as my flagship .NET full-stack case study.
- Working context
- I led a six-person university team and contributed to the backend.
- My role
- I owned the backend, booking and payment flows, identity and security, backend architecture, and frontend leadership.
- Who was affected
- Hotel guests and staff administering inventory, bookings, and customer accounts.
Problem brief
Problem
Customers need trustworthy date-based room availability and payment, while hotel staff need one controlled surface for rooms, bookings, refunds, and users.
Operating constraints
- 01Availability and booking state must remain consistent across overlapping requests.
- 02Payment, refund, and email integrations introduce external failure boundaries.
- 03Customer and administrator capabilities require strict role separation.
Evidence / reasoning
Problem Research
Booking integrity
I traced room state from date-range search through availability, checkout, and payment confirmation to identify every point where overlapping requests could diverge.
Boundary security
I mapped forms, cookies, uploads, role boundaries, and payment callbacks separately because each crosses the application boundary differently.
Operational visibility
I separated database, email, and payment readiness so one healthy web process could not hide a failed dependency.
Implementation files
How I Solved It
Availability-led discovery
I built room discovery around date range, type, price, and occupancy instead of showing inventory that could not be booked.
Booking and payment
I connected the booking summary to Stripe payment and confirmation email.
Hotel administration
I gave staff one surface for rooms, room types, bookings, refunds, users, and operational summaries.
System map
System Architecture
Diagnostic notes
Challenges
Concurrent booking state
Room state can change between availability search and booking completion.
External service health
A working web process does not guarantee database, SendGrid, or Stripe readiness.
Quality gates
Technical Safeguards
Security
I protected account and admin workflows with ASP.NET Identity, RBAC, lockout, secure cookies, antiforgery validation, Razor encoding, and upload validation.
Data integrity
I kept input and persistence boundaries explicit with EF Core parameterization, ViewModels, RowVersion, Unit of Work, and migrations.
Operations
I exposed system state through Serilog rolling logs and database, payment, and email health checks.
Ownership record
My Contribution
I owned the backend work, booking and payment flows, identity and security, backend architecture, and frontend leadership.
- Working context
- I led a six-person university team and contributed to the backend.
- My role
- I owned the backend, booking and payment flows, identity and security, backend architecture, and frontend leadership.
Closing record
Outcome
Our team delivered customer booking and payment journeys plus an administration surface for rooms, bookings, refunds, users, and operational views.
I implemented customer and admin workflows, Stripe Payment Intents, SendGrid email, role-based access, health checks, and concurrency controls.
I currently present the source and product evidence rather than a live demo; automated booking and payment integration coverage is the next technical step.
My next technical step is to add automated integration coverage for overlapping bookings, payment confirmation, and refund recovery.
Curated project media
Related Evidence






