// COMPUTER_SCIENCE
COMPUTER SCIENCE
[MAJOR]// PROJECTS

FEATURED
this->website
01 / 02
// ALL_WORK

01 / PROJECT
this->website
Password-protected photography gallery that converts Olympus .ORF raw files into a searchable, album-organised web gallery.
// FEATURES
- →ORF → JPEG extraction via rawpy on upload
- →Two-tier password auth (gallery / admin), rate-limited, httpOnly cookies
- →Server-side API proxy. Key never reaches the browser
- →Paginated gallery (24/load), search, album filtering and renaming
- →Flip cards with blurred photo backdrop, touch swipe, single-flip-at-a-time
- →Edit request form with filename pre-fill from gallery search
// CHALLENGES
Vercel's 4.5 MB function limit blocked ORF uploads
Presigned R2 URLs. Browser PUTs directly to R2, backend processes in place
API key visible in browser JS bundle
Next.js catch-all proxy route injects key server-side
backdrop-filter silently killed 3D flip animation on Safari
Moved glass styling to individual card faces, not the rotating container
Password cookie missing after router.replace() on Safari
window.location.href forces a full browser request, guaranteeing cookie availability

02 / PROJECT
Computer Store Manager
C++ OOP inventory system for a computer store, using polymorphic class hierarchies, STL vectors, and file-based persistence.
// FEATURES
- →Polymorphic hierarchy: Computer base class with PC, Laptop, and Tablet derived classes
- →Parses computers.txt into vector<Computer*> on startup via a factory function
- →Virtual displayinfo() method renders type-specific fields for each item
- →Search across inventory by multiple criteria
- →Staff alterations: add, delete, and update records with try/catch error handling
- →Virtual destructors and explicit delete loop prevent memory leaks on exit
// CHALLENGES
Storing mixed PC/Laptop/Tablet types in one container without slicing
vector<Computer*> base class pointers preserve derived types via polymorphism
Safely deleting heap-allocated polymorphic objects
Virtual destructor on Computer base class; final loop calls delete on every pointer
Constructing the correct derived class from a flat CSV row
addComputer() factory reads the type field and returns the matching derived object