Next.js + Clerk + Convex
Next.js and TypeScript power the interface. Clerk handles identity; Convex stores tools, loans and members and enforces permissions on each operation. The client does not decide ownership or administrator status.
LendLoop / Full-stack
I developed a platform to list tools, request date-based loans and manage returns. I used it as an exercise in connecting a product experience with backend permissions, reliable automations and secure file handling.

01 / Product
The public catalog exposes tool names and categories only. After signing in, a member can create listings, check availability and request dates. The owner approves or declines, and participants record returns. Administrators can moderate listings and mark trusted lenders.
I chose a catalog interface with search, categories and visible availability. Separate listings, outgoing requests and incoming requests give each action a clear place.
02 / Architecture
Next.js and TypeScript power the interface. Clerk handles identity; Convex stores tools, loans and members and enforces permissions on each operation. The client does not decide ownership or administrator status.
Loan changes generate events in a transactional outbox. n8n processes mock notifications and daily overdue reminders. Retries, visible errors and idempotency handle failures without duplicate records.
03 / Cybersecurity
The server validates and decodes static JPEG, PNG or WebP images, then produces optimized WebP. It bounds size and resolution and strips metadata. Convex stores only the processed output; reads require authentication and replacement requires ownership.
Uploads use single-use tickets, quotas and a processor signature. The backend rechecks authorization before attaching a file to a listing.
The data layer uses structured Convex queries and validates arguments and identifiers before performing operations. User content is rendered as text rather than executed as HTML.
04 / Verification
I also verified authenticated JPEG upload, WebP retrieval, rejection of a disguised non-image, anonymous access denial and deletion. The Convex–n8n round trip delivered three signed notifications and prevented duplicates on replay. Loan integration checks used synthetic development identities.

05 / Scope
LendLoop is an experimental development built as a take-home exercise. It has no real users or adoption metrics. Notifications are mock records, not outgoing emails. The in-memory demo is separate from the authenticated, persistent application.
The manual walkthrough with two real Clerk accounts remains pending. Before production, I would add stable hosting, observability, global quotas, pagination, retention policies and orphan-file reconciliation. These limitations are documented alongside the security decisions.