DreamMapper
- 3 Devlogs
- 14 Total hours
An online journal to log your dreams, chat with an AI, and get a visualization of how the dream looked.
An online journal to log your dreams, chat with an AI, and get a visualization of how the dream looked.
WE DID IT. THE DREAM JOURNAL IS DONE. SHIPPED. DEPLOYED. REAL. I cannot believe I’m saying this after the Devlog 1 panic session, but here we are.
So Cloudflare and I had a disagreement. Several disagreements. Over multiple hours.
First the build kept failing because my build output directory was wrong in the settings. Locally it builds to one folder, Cloudflare was looking in another, and instead of telling me that nicely it just gave me a vague error and a failed deploy. Cool. Very cool.
Then once the build finally passed, the site deployed and… nothing worked. Blank page. Turns out my environment variables never made it to production. I had them in my local .env file, feeling all safe and organized, completely forgetting that Cloudflare has no idea those exist. Had to go add every single one through the dashboard like a peasant. Twice, because I typo’d one.
At that point my brain was cooked. So I’ll be honest with you all: I let AI handle the rest of it.
That’s right. I said it. 10% AI, 90% me crying at my keyboard.
Here’s the thing though. This is production. Real users. Real data. And my real credit card attached to that very expensive 2k server. So when the AI started pointing out security issues, I listened, because I do NOT want to wake up to a drained bank account.
What it caught:
Sleeping much better at night now.
It’s available soon! Check the project bio for the link. Go journal your weird dreams. The giant duck one deserves to be written down.
What a journey. From “I have made nothing” to a real live product on the internet. See you all at the next one 🫡
Big progress today. Honestly bigger than I expected given how this week started.
The dashboard is finally up and running, which was the thing I was most worried about. Getting the layout to behave across screen sizes took way longer than it should have. There was one bug where the dream entries would just stack on top of each other and overflow the container, and I spent a good hour and a half convinced it was a CSS grid problem before realizing I had a duplicate key in my component props. Classic. Fixed it, moved on.
The API calls are healthy too. I ran into a weird rate limiting issue yesterday where Cloudflare was flagging my own requests as suspicious traffic, which took some head scratching. Turns out my retry logic was a little too eager and hammering the endpoint on every failed call. Throttled it properly and now everything responds clean.
Storage is working end to end. I can store and write dreams to the database, retrieve them, and the timestamps are behaving. Small win but it feels good.
Right now I’m deep in the Cloudflare worker, tightening up security and stability. This is the boring but critical stuff. I added input validation on the dream entries, set up proper error handling so a single bad request doesn’t take anything down, and locked down a few endpoints that were more open than they should have been. I also found a memory leak in one of the worker handlers that would have slowly eaten the instance over a few days. Caught it early, thankfully.
Next up once the worker is solid: AI based dream generation. The idea is the app will take your logged dreams and help you map patterns, themes, and recurring imagery over time, almost like a journal that talks back to you. That’s the core of what Dream Mapper is supposed to be, so this piece matters a lot.
If everything goes to plan, it ships tomorrow afternoon. Fingers crossed nothing explodes between now and then.
Let’s goooo.
Stardance is ending and I looked back at my project list and realized… I have made absolutely nothing meaningful. Zero. Nada. So here I am, panic-building a journal for your dreams at the last possible moment. Classic me.
A dream journal. You wake up, dump whatever weird nonsense your brain cooked up at 3am, and an AI helps you make sense of it. I’m going for a full commercial product approach with this one. I actually want other humans to use it, so it’s hosted on Cloudflare and will be live by the end of Stardance. Mark my words. I WILL SHAVE MY HEAD, I AM NOT KIDDING, if this project is NOT DONE!!.
Login tried to end me. Everything worked perfectly on localhost. Pushed to Cloudflare and suddenly nobody could stay logged in. Sessions just… vanished. Turns out my cookies weren’t set with the right SameSite and Secure attributes, so the browser was politely throwing them in the trash on every request. Spent way too long staring at devtools before figuring that one out.
Then CORS decided to join the party. My frontend and the AI backend live on different subdomains, so every API call got blocked until I fixed the headers. I now know more about preflight OPTIONS requests than I ever wanted to.
Database drama. My first schema was one giant table with everything crammed in. User info, dreams, timestamps, vibes, all of it. Felt smart until I had to actually query it. Redesigned it at like 11am into proper tables, wrote a migration, and immediately hit an error because I typo’d a column name. The error message was not helpful. It never is.
The white theme incident. So the current UI is white. Very white. The contrast is so bad that buttons look like vague rectangles floating in the void. Half my text is basically a eyesore. I keep squinting at my own app, which is generally a bad sign. Switching to a dark theme soon, both for aesthetics and for the health of my eyeballs.
The AI backend money pit. For testing, the AI backend is hosted on Hack Club, which works great except for the occasional cold start where the first request takes long enough for me to question my life choices. Fine for testing though. For production, it’s running on my very expensive 2k server. My wallet is crying. 😭
Honorable mention bug: dreams were saving twice for a while. Forgot event.preventDefault() on the form submit, so the page was reloading AND firing the request. Every dream, duplicated. My test account had 14 copies of “I was being chased by a giant duck.”
Once the CSS is locked in, I genuinely think the rest is smoooooth sailing. The hard plumbing is done, now it’s just making it pretty. Famous last words, probably.