Web App · Java & Spring Boot

Online Food Ordering Application

Online Food Ordering Application

The Problem

This was an independent project I built in 2023-2024. The trigger wasn't a single client, it came from watching the market: more and more physical businesses were feeling pressure to also have an online presence, and I wanted to build something that captured a slice of that need. The idea was a virtual restaurant where a customer with no technical background could browse dishes by category, see ingredients and details, and order online without friction.

My Role

Sole developer, responsible for research, design, and implementation from the ground up, with direct control over every technical decision along the way.

Technical Decisions

Spring Boot over Servlets or JSP

I chose Spring Boot for the backend over plain Servlets or JSP, after evaluating both approaches directly. Servlets require you to hand-build every HTML response as a string and JSP mixes Java into markup, both get unwieldy fast. Spring Boot's "convention over configuration" approach, its layered controller/service/repository structure, and its auto-configuration meant I could focus on the ordering logic itself instead of hand-wiring infrastructure.

Spring Data JPA/Hibernate over raw JDBC

For the database layer I went with Spring Data JPA/Hibernate rather than raw JDBC. JDBC gives you full control over the SQL and slightly better raw performance since there's no abstraction layer, but it means writing manual CRUD statements for every entity, orders, products, categories, offers, payments, reviews. JPA let me work with Java objects (User, Product, Order) instead, which cut down repetitive code and made the schema easier to evolve as the project grew, which mattered more for a solo project built end-to-end than shaving off SQL overhead.

Security built in from the start

Passwords are encrypted before being stored, and I used Spring Security together with HTTPS and explicit defenses against XSS and CSRF. Since the application was handling user accounts, orders, and payment flows, I treated data protection as a requirement rather than an afterthought from the very first design pass.

Project Information

  • Category: Web Application (Java, Spring Boot)
  • Type: Independent Full-Stack Project
  • Role: Solo developer
  • Timeline: 2023 - 2024
Tech Stack
Java Spring Boot Spring Data JPA Hibernate Spring Security MySQL