Mam Pokoj
Mam Pokoj is a web platform for discovering and managing rental rooms. I built the entire project from scratch using Next.js, Drizzle ORM with SQL, UploadThing for image handling, and NextAuth for authentication and authorization. A significant focus of the project was building a fully functional API layer to support core features such as room listings, user management, and authentication flows.

Project Purpose and Objectives
The goal of Mam Pokoj was to build a full-stack app that helps people find and manage rental rooms in a clear and simple way. The project was designed to cover the entire lifecycle of a modern web application, including authentication, data management, media handling, accessibility considerations and a user-friendly interface.
A key objective was to implement a complete system where users can browse room listings, manage their own offers, and interact with the platform securely through authenticated sessions. The project also aimed to simulate real-world product requirements by focusing on scalability, maintainability, and clear separation between frontend and backend logic.
Technology Stack and Overview
The project was built using Next.js with TypeScript as a full-stack application combining frontend and backend in a single codebase. It uses Drizzle ORM with a simple schema of Ads and Images, and NextAuth for authentication, linking users to ads through user IDs for ownership and access control.
UploadThing is used for image uploads through its SDK, providing client-side upload workflows with server-side validation and secure handling of files. Vercel was chosen for this project because it provides seamless deployment and hosting for Next.js applications with minimal configuration.
Challenges and decision-making process
The main challenge was organizing a project of this size and working with server-side code. The size of the project showed me how important good code organization is for long-term maintenance. Implementing cursor pagination was a valuable experience that helped me learn how to efficiently load data and apply common data-handling patterns, even though I worked with a mock dataset.
I focused on keeping the codebase well-structured by using reusable components and styled-components for consistent styling across the application, along with server actions for handling data logic.

What Was Learned
This is my first full-stack project, and I can talk a lot about how much I've learned. The most important things are that I’ve become more comfortable with React hooks, Next.js concepts and code structure. I also worked with the Motion library for animations, Radix UI for accessibility, improved my Git workflow, practiced database schema design, and integrated the UploadThing API for file uploads. Finishing a working version of this project gave me a better understanding of how all these pieces work together.


