This is Part 1 of a 4-part series documenting the build of TravelMate, my 3rd-year engineering project. Part 2 covers architecture and tech decisions, Part 3 dives into the hardest engineering problems I solved, and Part 4 (coming after the project ships) covers what I learned.

The project that didn't make it

Last year, in my 2nd year, I tried to build something called LexAssist. I don't talk about it much, because it didn't really go anywhere — not because the idea was bad, but because I made almost every mistake a student developer can make on a solo project. I added features before the core worked. I didn't think through the architecture before writing code. Security was an afterthought I kept meaning to "add later." By the time the project deadline arrived, I had a folder full of half-working pieces and no coherent story to tell about any of it.

It wasn't a fun feeling, explaining in a viva why half the features were "still in progress."

So when it came time to pick my 3rd-year project, I made myself one promise before I wrote a single line of code: a complete, working, secure application beats a huge, half-built one, every single time. That sentence became the actual first line of my project brief, and I've tried to hold myself to it through every phase since.