Home

← Back

Josip Knežević

SOFTWARE DEVELOPER

Josip
Knežević.

Builds full-stack features that hold up under real conditions. Clean state, predictable interfaces, and backend structure that does not get in the way as things grow.

Works across the full stack from data and APIs to the interface the user actually touches. Thinks in systems rather than quick fixes, keeps logic simple enough to extend, and leaves every part of the codebase easier to work with than he found it. Has experience working with React, Refine, and MongoDB, building data driven applications with a focus on clean structure and maintainable architecture.

The Work

01

Corner Table

Contributed to the development of both the mobile MVP and the full web platform for Corner Table. Built the in app job management system with creation and listing workflows, input validation, refresh and retry handling, and consistent UI behavior across states. Developed the Corner Table website in Next.js with Firebase Auth and Firestore delivering a gated hospitality network with a jobs board, interactive feed, likes, comments, reporting, and infinite scroll.

The Stack

Languages

  • Dart
  • TypeScript
  • JavaScript

Frontend

  • Flutter
  • Tailwind
  • Next.js

Backend

  • Firebase

Tools

  • Android Studio
  • WebStorm
  • GitHub
  • AI

Defaults

  • Clarity over cleverness
  • Reliability over perfect conditions
  • Systems over quick fixes
  • Build only what’s needed

In Their Words

Q. 01

When laying the foundation for something new, what principles do you refuse to compromise on?

A. I do not build for perfect conditions. I build for when things go wrong. If data, state, and UI are not reliable from the start, everything else becomes harder later.

Q. 02

How do you ensure an app still feels rock-solid even when conditions aren't perfect?

A. I remove randomness. Everything should behave the same way every time, no matter the state. If something can fail, it should fail in a controlled and predictable way.

Q. 03

What details do you think make the biggest difference between a good interface and a great one?

A. Small things that most people skip. Loading states, empty states, error handling. If those are done properly, the whole product feels more solid without adding anything new.

Q. 04

How do you leave a codebase in a better place for the next person who has to read it?

A. I keep things obvious. The goal is that someone can open the file and understand it without guessing how things are connected.

Q. 05

How do you bridge the gap between getting a broad feature request and actually executing it?

A. I reduce it to something simple first. Once the structure is clear, I build it in a way that does not need to be reworked when new requirements come in.

Q. 06

Claude vs ChatGPT?

A. Claude is generally better for coding and producing cleaner, more structured results. ChatGPT is more accessible and has a usable free mode, which makes it easier for daily use and faster iteration.

Get in
touch

👋 hi@p23.io

P23 Tech Studio

Sarajevo, Bosnia and Herzegovina

2026 All Rights Reserved