I like monster projects that can grow as I learn.
If you want a project that will task your lexing and parsing skills, try creating your own compiler. There are quite a few free books online for getting started, and you can get as in depth as you want. (learning assembly is highly recommended in this project, but if you're just having fun you can create your own language and syntax that compiles to C which then can be compiled regularly).
Along the same lines, you might like adding a simple internal scripting language to your calculator to make it programmable.
This is an amazing book series about CGI raytracing, and it is done without any additional libraries -
https://raytracing.github.io/books/RayTracingInOneWeekend.html
If you feel like those tasks would be too small, then check out
https://wiki.osdev.org and create your own operating system. (Some assembly is required, but most of the code can be written in c/c++ after initial setup)
P.S.
Don't discount games too quickly. They are a good way to practice complex ideas in a format that is fun to share with others. A simple card game can involve: linked lists, sorting algorithms, enumerators, randomization, proper memory management, AI, GUI, networking, music and sound effects, animations, dynamic libraries for plugins, project management and or collaboration, graphic design, etc.
Just try a little bit of everything... It's like reading a book, if a project grabs your attention then it will be easier to see it through, otherwise it can be done bit by bit, or just tossed to the side for something that suites you better. It's all learning experience.