You are browsing as a guest. Sign up (or log in) to start making projects!

Skywritten

  • 8 Devlogs
  • 42 Total hours

A birthday gift generator that assembles an astronomical biography of any date from four NASA archives and then delivers it as a permanent link the recipient can keep. Enter a birth date and Skywritten pulls the Astronomy Picture of the Day, DSCOVR full-disk Earth imagery, solar flare records, and exoplanet discoveries for that exact day and then composes them into one narrative across three presentation styles: a cinematic scroll, a page-turning storybook, or a wax-sealed letter the recipient cracks open by hand. The giver can add a personal message that an AI rewrites in their own voice rather than replacing it with generic sentiment. Every archive is pre-indexed at build time, so the app makes zero NASA API calls at runtime.

Ship #1

Skywritten turns a birthday into an astronomical biography. You basically enter a date, and it pulls the Astronomy Picture of the Day, DSCOVR’s full-disk Earth imagery, solar flare records, and exoplanet discoveries from that exact day. It then weaves them into one narrative that you can send to someone as a permanent link.

There are three ways (for now) that it can arrive: a cinematic scroll, a storybook you turn page by page, or a wax-sealed letter the recipient opens. If you are testing it, try the Letter template. It’s the one I put the most effort into.

The hardest part wasn’t the features. It was making it fast enough to be worth sending. A page was loading around 20 MB on mobile because the APOD indexer was storing print resolution masters (some over 15 MB!). Also, every page load was fetching four complete NASA archives just to display one day. So, I basically ended up sharding all four into 366 files keyed by month and day. So, a January 20 birthday fetches 01-20.json instead of the whole thing. That took the data payload from 3,210 KB to 47 KB, and the page from 20 MB to around 1 MB.

The thing I’m most pleased with is something small. I found out that NASA’s own metadata is wrong more often than you would expect. Entries labelled as images that are actually videos, with a play button baked into the still. One APOD entry is an animated GIF of a full lunar cycle and any thumbnail extracted from it came out solid black because the first frame is a new moon. Getting those right took a lot longer than building the templates did.

If you want to test it properly: pick a date before 2000 to see how it handles years the archive doesn’t fully cover and share a gift link somewhere so you can see the recipient view. It’s read only, and the person receiving it can export a story card of their own.

  • 8 devlogs
  • 42h
  • 18.77x multiplier
  • 786 Stardust
Try project → See source code →
Open comments for this post

5h 20m 27s logged

I spent the last couple of days fixing a lot of bugs and also made some polishes here and there.

  1. Page weight went from about 20 MB to around 1 MB on mobile.
  2. The data payload went from 3210 KB to around 47 KB.
  3. The gift links went from three KV writes to just one.
  4. Fixed the date field being invisible on Android.
  5. Some APOD entries are GIFs. They exported in the gift card as black rectangles. I fixed it by requesting a mid-sequence frame plus a luminance check on the export as a backstop.

Previews were broken till this phase, so I fixed them as well through routing them through a proxy at a declared 1200×630. Also, some more polishes here and there. I do think it is finally ready to ship!!!

0
0
35
Open comments for this post

3h 45m 48s logged

Alright, so today was basically making some more fixes and polishing. I completely rebuilt the recipient experience into a true read-only unboxing view. And I kept the interactive wax seal while stripping out editor pickers and replaced collapsed Chrome Android date inputs with a bespoke calendar overlay.

After that, I fixed the near invisible scrollbars in the Keepsake letter template, corrected parchment character counter styling, and revamped exported story cards so that the personal messages take center stage alongside cosmic vitals like Lunar Phase and Solar Revolutions.

Also, I gave the AI rewrite pipeline a massive efficiency boost by trimming max_tokens from 4096 down to 1600 to prevent Groq TPM ceiling throttling, capping server-side output at 600 characters, and tuning temperature to 0.55 for faster, more consistent outputs.

I came across a lot of more bugs that needs fixing, so I am not sure if I can ship it today. Maybe a couple of more days…

0
0
62
Open comments for this post

3h 15m 18s logged

Just finished making the Keepsake letter template. The letter experience opens with an interactive envelope scene built using 3D CSS transforms. Like other templates, users can also customize their letters in real time using client-side image carousels and alternate year pickers.

I have also made the AI rewrite feature functional. I also added a 150 word limit and a precise system prompt to optimize token usage. There are some bugs regarding the UI in the mobile view. I will fix those soon

0
0
56
Open comments for this post

7h 47m 43s logged

Hey everyone!

Making another update on Skywritten. First of all, I finished the ‘1080×1920 Story Card Exporter’. Basically, when you click Export Story Card, you will get a 1080×1920 high-res PNG tailored for Instagram Stories.

After that, there were some mobile view bugs. I spent some time fixing that and polishing the app. The Storybook template needed a lot of fixes in the mobile view as there were overlapping issues due to the first page being transparent.

Finally, I finished writing the Cloudflare Worker logic for our AI rewrite feature.

0
0
16
Open comments for this post

8h 35m 54s logged

Heyyy everyone!

I wanted to make a quick update on Skywritten. The past few days were quite huge for the frontend architecture. We went from a single APOD viewer to a fully modular multi-source app with two distinct presentation shells!

Moreover, the Storybook Template is live. Instead of a continuous scroll, it renders a tactile 3D book using hardware-accelerated CSS rotateY transforms. We can flip pages using on screen controls, left/right keyboard arrows, or touch swipes on mobile.

I also implemented Dynamic Captioning and Narrative Syncing as a quality-of-life improvement.

0
0
5
Open comments for this post

7h 17m 30s logged

Working with NASA’s API limits is indeed a hassle. I basically solved NASA API rate limits, eliminated video rendering bugs, and built a fast local lookup table containing every authentic APOD space photo published since June 1995.

Other than that, I had to compress 31 years of astronomical metadata into a dense, minified static asset.

This project will take more time than I thought. But I am excited to implement all of the features I have in mind!

0
0
12
Open comments for this post

3h 45m 2s logged

First of all, I built a template router to “lazy load” template styles and scripts on demand. Assets are injected directly into the document head only when triggered, preventing initial DOM bloat.

After that, I integrated zero dependency JavaScript math directly to compute real-time cosmic displacement (kilometers traveled through space since birth) and exact lunar phase illumination.

Finally, I built cosmic-scroll as a template using hardware-accelerated IntersectionObserver reveals (will-change: transform, opacity) for smooth 60fps mobile scrolling, complete with an inline-editable narrative interface.

0
0
5
Open comments for this post

2h 3m 42s logged

So basically, I finalized the core architecture and UI foundation for skywritten. After that, I bypassed generic frontend frameworks entirely to build a custom and highly optimized HTML/CSS shell utilizing absolute mathematical resets.

Also completed the raw math for the generative ambient starfield and implementing a deterministic PRNG (cyrb128 + mulberry32) so the visual backdrop remains perfectly mathematically consistent across all devices.

0
0
4

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…