Skip to content
back to the quest log
Bodo booking doctor application banner
rare◆ productshipped

Bodo

Hospital queues meet an AVL tree

An archived Windows terminal application for patient queues, records, doctors, schedules, appointments, and reviews with JSON persistence.

role
C++ application author
org
Independent learning project
when
2025 - 2026

What it is

Bodo models a small hospital workflow in a terminal: patients enter a queue, staff manage medical records, and users maintain doctors, schedules, appointments, and reviews.

The project pairs a FIFO queue for service order with an AVL tree for indexed patient lookup and update. Data is persisted to JSON and restored into the structures at startup.

It is an archived learning project, preserved because it shows the transition from data-structure exercises to a complete stateful application.

where the effort went

  • Data structures96
  • Correctness82
  • Persistence78
  • Learning92

the numbers

History
248 commits
Core lookup
O(log n)
Language
C++20
Storage
JSON

built with

  • C++20
  • CMake
  • Ninja
  • MinGW
  • JSON
  • AVL tree

delivery record

What I made

I wanted to make queue and balanced-tree operations visible inside a workflow that has users, persistence, validation, and failure cases.

  • 01

    Patient service queue with explicit ordering

  • 02

    AVL-backed medical record search, insert, update, and delete

  • 03

    Doctor, schedule, appointment, and review modules

  • 04

    JSON save and restore across application sessions

  • 05

    Interactive Windows terminal interface with animated feedback

  • 06

    CMake, Ninja, and MinGW build path for C++20

Hard problems

The constraints mattered as much as the finished interface.

01field note

Keeping indexes correct after mutation

problem
Record edits and deletions can break tree ordering or leave queue entries pointing at stale data.
response
I isolated data-structure operations, rebalanced the AVL tree after mutations, and kept record identity separate from display order.
02field note

Restoring structured state from JSON

problem
Serialized records do not preserve tree shape or runtime links.
response
Startup reconstructs the indexes through normal insertion paths so the same invariants apply to new and restored records.

Screens

In motion

A short capture of the terminal interface in motion

after shipping

What stayed with me

  • Data structures become easier to understand when their invariants are exercised by edits, persistence, and user mistakes.

  • Archived projects are useful when their limitations and learning purpose remain visible.