DEV Community

Hilal
Hilal

Posted on

I Built an AI Life Planner the Month I Graduated and Switched to Linux Halfway Through

🔗 Live app: https://lifeplanner.hilalsay.com.tr
⭐ GitHub: https://github.com/hilalsay/LifePlanner
📝 Medium Post: https://medium.com/@hilalsaydogdu09/i-built-an-ai-life-planner-the-month-i-graduated-and-switched-to-linux-halfway-through-09f846ed8b56

My first real personal project, from idea to deployment

For a long time I had this idea in my head. I wanted a planner app that actually connected to my life goals, not just a to-do list, but something that understood the bigger picture. Something that knew what I was working toward and helped me get there every day.

I graduated from university this month. For the first time I had space to sit down and really think about where I want my life to go. And I thought: why not just build it myself?

I Always Wanted To, But Never Started

The idea of building a planner app had been in my head since I was a student. But I kept overthinking it. Where do I start? What tech stack? What features? I would think about it too much, school projects would get in the way, and I'd never actually start. This time I started after planning my first steps and figured out the rest as I went. When I started building, new ideas came naturally along the way. I am still full of ideas and I plan to keep making it better. I don't think that there will be a time when I can stop improving.

My Background

I graduated from Computer Science this month. Before this project, I had only worked on school projects, internship projects, or voluntary projects that my university provided. They always came with requirements and a plan. Even when I brought my own ideas to them, their starting points were someone else's ideas.

This was the first time I was completely free. No requirements. No grades. No deadlines from anyone else. Just me deciding everything. That felt both exciting and terrifying.

What I Wanted to Learn / My Expectations, And What Actually Happened

I had three clear goals going into this project. First, I wanted to build and ship my own project something that was completely mine from idea to deployment. Second, I wanted to learn Claude Code, the AI coding tool that works directly from the terminal, by actually using it on a real project rather than following a tutorial. And third, I wanted to deploy a live app on a real server with a real domain, something I had never done before.

Both Claude Code and deployment were completely new territory. I had no idea what to expect from either. I didn't know if I could figure them out or how long they would take.

But after a few tries, both went more smoothly than I expected. Claude Code from the terminal was surprisingly powerful, I didn't know it could do so much just from natural language. And deployment, while it had its rough moments, came together in the end.

The finished app felt satisfying. Not perfect, I still have a long list of things I want to add but it is genuinely usable and something I'm proud of. I would say the project met my expectations. Not too hard, not too easy. Just right for where I am.

What I Was Scared Of

Before sharing the app with others, my biggest fear was getting bad feedback, that people would find it too simple or too complex to use. I had built it myself so I knew where everything was, but a new user coming in for the first time wouldn't know anything.

So I kept asking friends and family to try it and tell me honestly what felt unclear or broken. That feedback shaped a lot of the UX decisions I made. I hope people find it easy and enjoyable to use. That really matters to me.

What I Built

Life Planner is a full-stack web app that lets you plan your life at every level, from your big life vision all the way down to today's tasks. Everything connects:

Life Area → Yearly Goal → Monthly Focus → Weekly Priority → Daily Task
Enter fullscreen mode Exit fullscreen mode

The app also tracks habits with streaks, mood and energy levels, health metrics, and books, with covers fetched automatically from Google Books API and a space for personal reviews to revisit later.

And at the center of it all is Aizen — the AI assistant I built into the app.

AIzen: The Feature I'm Most Proud Of

AIzen is my favorite part of the whole project. The idea is simple but powerful, instead of manually filling out forms to add tasks or habits, you just tell AIzen what you want in plain language. Planning is exactly the kind of messy, natural-language task AI is good at so it felt like the obvious fit.

You type something like "I want to study 2 hours every day" or "help me build a consistent workout routine" and AIzen understands you and adds it to your plan with one button. No manual input, no forms. It just works.

Here is a real example. I typed:

"I want to start a habit of reading 20 minutes every day, can you help"

AIzen responded, created a "Read for 20 Minutes" habit card, and all I had to do was click Add. That's it. No form, no category selection, no saving manually. One message and it was in my plan. Of course you can type manually any time you want to.

What makes AIzen more interesting is that it runs on a local Qwen model through Ollama on my FRP home server. I call it via HTTP so it stays fully private and costs nothing to run. I don't have powerful GPUs so it is not the most advanced right now, but it works well enough for now and I plan to upgrade to more powerful models later. Building and hosting your own local LLM felt like a big step, it made the project feel more like mine, not just an app that calls an external API.

For quick suggestions and motivational nudges, the app also uses Google Gemini's free tier, which handles lighter tasks well without any cost. I wanted the app to send personalized, fun messages to the user from time to time to keep them motivated.

The Moment That Made Me Switch to Linux

The most frustrating part of the whole build was trying to develop on Windows using WSL and Docker and then trying to share the app on my local network so my family could test it.

It was never straightforward. Port forwarding, firewall rules, WSL networking quirks nothing worked the way it should. My computer was always running hot and the fans were screaming.

Then I decided to dual boot and install Linux Mint alongside Windows. It was one of the best decisions I made during this project. Everything became simpler. The development environment worked smoothly. And my laptop finally stopped sounding like it was about to take off.

I'd never felt my computer this cool - both literally and figuratively :).

Claude Code Changed How I Think About Development

Before this project I had used Claude through the web interface for help with code. But I didn't know about Claude Code, the terminal tool that lets you talk to Claude directly in your project.

It surprised me completely. From the terminal, just by describing what I want in natural language, Claude Code could write code, test it and even help with deployment. Everything from one place.

It felt like having a very capable pair programmer sitting next to me who never gets tired (except from running out of tokens). It didn't replace my thinking, I still had to make decisions, catch mistakes, and guide the direction but it made the actual building so much faster. Things that would have taken me hours to figure out alone took minutes.

One small thing I appreciated more than I expected: commit messages. After finishing a feature I would just tell Claude Code "commit and push this" and within seconds it had written a proper, descriptive commit message and pushed to GitHub. Something I used to find tedious and would put off became completely automatic. My Git history actually looks intentional now.

A Small But Meaningful Detail: PWA Support

One thing I added that I'm quietly proud of is PWA support. The app is a Progressive Web App, which means users can install it on their phone or desktop directly from the browser, no app store needed. It feels like a real native app when you open it from your home screen. Building a proper React Native app is on my roadmap for the future.

What This Project Taught Me That School Never Could

In school projects, everything is defined for you most of the time. The requirements, the tech stack, the features, the deadline. You learn to execute within boundaries.

Building Life Planner was completely different. I was the user and the developer at the same time. I had to think not just about how to build something, but about what was actually worth building. What makes it easier to use? What will make me actually want to open it every day?

But I also had to think beyond myself. My friends and family were my test users, they had no idea what was where when they first opened the app. I always asked their opinions and asked them to tell me when they found bugs. That forced me to think about accessibility and user experience in a way that school projects never did.

One thing that came directly from user feedback was adding Turkish language support. Some of my friends and family members don't speak English, so when they tried the app they couldn't understand anything. I added full Turkish support so everyone around me could actually use it. Seeing them navigate the app in their own language made it feel much more real.

Getting my own domain and hosting the website on a real server made it feel truly mine. No grades, no professor feedback, no rubric. Just me building something I love and sharing it with people I care about. That freedom is something you cannot get from a tutorial.

The Tech Stack

Layer Tech
Backend Python + FastAPI, SQLAlchemy 2, Alembic, Pydantic v2
Frontend React 18, TypeScript, Vite, Tailwind CSS, Radix UI
Database PostgreSQL 16
AI Ollama + Qwen (qwen2.5:3b) on FRP home server, Google Gemini (gemini-2.5-flash-lite)
Auth JWT via httpOnly cookies
PWA vite-plugin-pwa
Deployment Ubuntu VPS + Nginx + systemd + uvicorn + Let's Encrypt SSL
Version control GitHub with main and dev branches

My Advice to Other CS Students

If you are a student or a junior developer thinking about your first real personal project, my advice is simple: Choose the tech stack that suits your project best, and just start building. The rest will come as you go. Don't wait until you have the perfect plan. Don't overthink the features. Start with something small and let the ideas come naturally. They will.

Try Life Planner

The app is live at lifeplanner.hilalsay.com.tr — create a free account and try it.

The source code is on GitHub at github.com/hilalsay/LifePlanner — feel free to star it, open issues, or contribute.

I will keep building it. There are still so many ideas I want to add. That's the best part about building something truly yours — it never really has to be finished.


Thanks for reading. If you have questions or want to share your own experience building a first personal project, I'd love to hear from you in the comments.

Top comments (0)