[ 03 ]live2026

SchoolRent

...

ROLEFull Stack Developer
TECH STACK
Next.jsNest.jsTypeScriptTailwind CSSSupabasePostgreSQL

SchoolRent — School Equipment Rental Platform

A web-based platform designed to make school equipment borrowing more organized, accessible, and easier to track.

Live: https://schoolrent.vercel.app/
Status: Live
Role: Full-Stack Developer
Year: Not specified


1. Problem & Users

Managing the borrowing of school equipment can become difficult when item availability, borrowing requests, and return schedules are handled manually or across disconnected channels.

SchoolRent explores a more structured approach: a centralized platform where users can browse available equipment, submit borrowing requests, and keep track of their borrowing activity.

The project is intended for a school environment, with students and school staff as its potential users.

2. Role & Scope

I worked on SchoolRent as a full-stack web development project, building the application across its frontend and backend.

The project focuses on the core borrowing workflow:

  • Browse the available equipment catalog.
  • View equipment information and availability.
  • Submit borrowing requests.
  • Track the status of borrowing requests.
  • Manage the return process.

The platform also includes a fine-related concept for handling overdue or problematic returns.

3. Key Decisions

Separate frontend and backend responsibilities

The application uses Next.js for the frontend and NestJS for the backend. This separation keeps the user interface and application logic organized into distinct parts.

Structured data management

PostgreSQL provides a relational data model for the platform. Supabase is included in the technology stack to support the project's data infrastructure.

Type-safe development

TypeScript is used across the application to improve consistency, make data structures clearer, and reduce avoidable errors during development.

Utility-focused interface

Tailwind CSS is used to build the interface and keep styling consistent while supporting responsive layouts.

4. Architecture

SchoolRent uses a separated frontend-and-backend architecture.

| Layer | Technology | Responsibility | |---|---|---| | Frontend | Next.js, React, TypeScript | Pages, interface, and user interactions | | Backend | NestJS, TypeScript | API and application logic | | Styling | Tailwind CSS | Responsive UI and visual consistency | | Database | PostgreSQL | Structured application data | | Data platform | Supabase | Project data infrastructure |

Core technologies: Next.js, NestJS, TypeScript, Tailwind CSS, Supabase, PostgreSQL.

5. Challenges & Trade-offs

One of the main engineering considerations in a borrowing platform is keeping the workflow understandable and the data organized.

Equipment information, availability, borrowing requests, and return activity are related but represent different parts of the process. Modeling these concerns clearly is important so that the application can communicate the current state of a borrowing request without confusing it with the availability of an item.

Using a dedicated backend with NestJS also introduces an additional layer to maintain, but provides a clear place for application rules and API responsibilities as the project grows.

6. Results & Proof

SchoolRent is available as a deployed web application:

  • Live application: https://schoolrent.vercel.app/

The project demonstrates an end-to-end implementation of a school equipment borrowing concept, covering the catalog and the main borrowing workflow.

No quantitative usage or performance metrics are included because verified figures are not currently available.

7. Lessons Learned

Building SchoolRent strengthened my understanding of full-stack application development and the responsibilities involved in connecting a frontend, backend, and relational database.

It also highlighted the importance of modeling real-world workflows carefully. A borrowing platform is not only a collection of forms and pages; it needs clear relationships between equipment, requests, availability, and returns.

The project gave me practical experience with a multi-layer TypeScript stack using Next.js, NestJS, PostgreSQL, and Supabase.