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

Aeriss

@Aeriss

Joined July 14th, 2026

  • 18Devlogs
  • 4Projects
  • 4Ships
  • 45Votes
Trying to figure things out by myself and grow, that's it ;)
Ship Pending review

SkyCanvas v0.1.0 is officially released ʕ•ᴥ•ʔ

After some solid time of development, testing, debugging, and polishing, SkyCanvas has finally reached its first release.

SkyCanvas is a terminal-based ASCII constellation viewer powered by astronomical data. It allows you to explore constellations directly from your command line, view detailed information about stars and connections, compare different constellations, discover what is visible tonight, animate constellation drawings, and export them into image formats.

One of the biggest challenges during development was creating a custom rendering system that could display constellations smoothly inside a terminal while keeping the output readable and visually appealing.

I am so so proud that SkyCanvas grew from a simple terminal experiment into a complete application with its own renderer, animations, export pipeline, documentation, PyPI package etc.

The project is now available for everyone to try.
You can install it using:

“pip install skycanvas”

Then run:

“skycanvas –help”

to explore all available commands.

Thank you to everyone who followed the development journey 🤍

Enjoy exploring the night sky directly from your terminal, even though not perfect, it should be enjoyable!

  • 6 devlogs
  • 14h
Try project → See source code →
Open comments for this post

1h 12m 47s logged

Devlog #06

The last one ʕ•ᴥ•ʔ

Hey I hope you are all doing amazing!

This will be the final development log before SkyCanvas officially ships.

The last few steps were focused on preparing the project for release rather than adding new features.
I just:

  • finished writing the README
  • created the pyproject.toml
  • polished the documentation, and made sure everything is ready to be published as a proper Python package

I also fixed a few remaining bugs and gave the CLI last cleanup before release

What went good

Everything is finally in place, writing pyproject.toml was kind of muscle memory at this point. The project feels complete and ready for other people to install and use.

What was hard

Preparing a project for release takes much more work than it seems, although I think the pyproject.toml file is the easy part.
Documentation and polishing ended up taking almost as much time as some of the features themselves.

Time to upload SkyCanvas to PyPI and ship v0.1.0 🤍

1
0
62
Open comments for this post

3h 23m logged

Devlog #05

Hi eveyrone, I hope you are all doing great ʕ•ᴥ•ʔ
Andddd we are shipping soon!

This update of SkyCanvas was mainly focused on finishing the remaining major feature before release. I spent this time implementing the export system, improving the CLI experience, and fixing a lot of small bugs.

Export System

The biggest addition in this update was the new export functionality.

SkyCanvas can now export constellations directly into image files using:

skycanvas --export <target> <format>

Supported formats: JPG, PNG, SVG and BMP

Exported files are automatically saved to:

~/SkyCanvas/Exports/

with timestamps included in their filenames.

The export system keeps the same visual style as the terminal version.
The tonight target is also supported, allowing SkyCanvas to export every currently visible constellation into separate files automatically.

Honestly, I had a lot of problems implementing export feature, even though this command might seem like an overkill, I think it is useful is some cases.

Bug Fixes & General Polish

Fixed issues related to:

  • Export generation
  • SVG formatting
  • CLI argument handling (callback just wasn’t working)
  • Duplicate console output
  • Rendering behavior
  • Various smaller bugs across the project

What went good

The export system integrated surprisingly well with the existing renderer. Since the rendering pipeline was already separated from the CLI logic, adding new output formats was much easier than expected.

What was hard

The biggest challenge was making exported images look exactly like the terminal version. Keeping the same proportions, colors, and Braille-style rendering outside the console required a lot of “adjustments”.

SkyCanvas is now really close to the first public release 🤍

The remaining steps are:

  • Writing full README
  • PyPI preparation
  • Publishing version 0.1.0
  • Writing files like pyproject.toml and requirements.txt

I will update on those steps too!

0
0
22
Open comments for this post

2h 17m 11s logged

Devlog #04

Hey, I hope you are all doing amazing ʕ•ᴥ•ʔ

This update was mainly focused on improving how SkyCanvas looks and feels to use. I spent a lot of time reworking the rendering system, adding new CLI features, and making the overall experience much more polished.

Completely New ASCII Renderer

One of the biggest changes was replacing the original ASCII rendering approach with a completely new one. Instead of relying on simple line characters, the renderer now uses a higher-resolution Braille-based drawing system, producing much smoother and cleaner constellation shapes in the terminal, hehe ;)

The rendering pipeline itself was also redesigned, making it easier to maintain and expand in the future.

Improved Visuals

I also gave the terminal output a visual refresh.

Stars are now highlighted in yellow, making them much easier to tell apart.
Connection lines use a different color for better readability.

These changes make the constellations far more enjoyable to look at while still keeping the project fully terminal-based.

New Commands & Features

This update also introduced several new commands

compare command allows two constellations to be displayed side by side for quick visual comparison. It also supports comparing any constellation against every constellation currently visible with the tonight command.

Speaking of that, tonight was added as well. It displays the constellations that are currently considered visible, making SkyCanvas feel much more interactive than simply viewing static constellation data.

Animation Support

Originally, I planned to implement a location command, but after thinking about it, I decided it didn’t fit the project very well, did it bruh?

Instead, I replaced it with an –animate flag.

Using this flag gradually draws a constellation in the terminal by animating its stars and connections before displaying the final result.

Overall, this update was mostly about improving presentation and usability rather than adding huge amounts of new data. SkyCanvas now feels significantly more polished and closer to a complete first release.

What went good

The new commands integrated into the existing CLI surprisingly well. Since the project structure has become much cleaner over time, adding features like compare, tonight, and the animation system was fairly straightforward.

What was hard

The biggest challenge was redesigning the rendering. Getting constellation lines to look smooth with brail in a terminal while keeping everything aligned with stars and labels required several different approaches before I found one I was happy with.

I’m getting really close to the first public release now. There are only a few finishing touches left before SkyCanvas reaches version 1.0.

I am yet to implement export command though 🤍

0
0
5
Open comments for this post

2h 10m 44s logged

Devlog #04

Constellation Rendering & CLI Integration

Hey, I hope you are all doing amazing ʕ•ᴥ•ʔ

Lately, I focused on improving the visualization system and connecting the constellation data with the CLI experience.

The biggest addition in this session was creating the render.py system. It is responsible for generating ASCII representations of constellations using star coordinates and connections between them. This was an important step as SkyCanvas is now no longer just displaying astronomical data - it’s starting to actually visualize the constellations now ;)

I also created coordinates.py, which contains the positional data of stars used by the renderer. These coordinates define the relative placement of stars and allow the program to recreate recognizable constellation shapes inside the terminal.

Another major improvement was modifying the command skycanvas [constellation] command, to skycanvas constellation [name]. This allows users to choose a specific constellation and display its information table together with its ASCII visualization.

Example:

skycanvas constellation orion

The command now shows:

  • constellation information
  • stars data
  • connections
  • ASCII art of stars

I also improved the existing rand command.
Previously, it only displayed the information table of a randomly selected constellation, and now it also renders the ASCII visualization, making the feature much more complete.

What was easy and what challengin

I think the easier part of this session was connecting existing constellation data with new CLI features, since the database was already prepared, adding new commands was much simpler.

The most challenging part was creating the rendering system. Turning star coordinates into readable ASCII art required a lot of testing and adjustments to make the constellations recognizable in the terminal.
Overall, this session was focused on turning stored astronomical data into an actual visual experience.

I hope you notice my progress and view it positively  🤍

0
0
33
Open comments for this post

2h 32m 8s logged

Devlog #02 - progress starts to be really visible ʕ•ᴥ•ʔ

Here is what I have done so far:

  • Expanded constellations.py with the remaining entries.

  • The database now contains 30 constellations, each with:

    • Name
    • Common name
    • Hemisphere
    • Best Months Visibility
    • Brightest star
    • Stars
    • Connections between them

CLI Improvements

Finished the list command using Rich library.

Added:

  • Two-column constellation table
  • Cleaner terminal output
  • Better readability

Implemented rand command.

It now:

  • Picks a random constellation
  • Displays full information in a Rich table
  • Shows stars and connections

Current Progress

Completed:

  • Typer CLI foundation
  • Logo command
  • Version command
  • List command
  • Random constellation viewer
  • Initial constellation database

Next: I am not sure yet, but probably Skyfield lib integration and astronomy engine.

0
0
24
Open comments for this post

2h 12m 2s logged

Devlog #01 – The Sky is Empty (For Now) ʕ•ᴥ•ʔ

Hey!

First devlog for SkyCanvas, my new CLI tool that maps real star constellations as ASCII art in your terminal. Think of it as a tiny planetarium, but without leaving your keyboard.

  • Right now, it does exactly one thing: skycanvas list prints “TODO”. Not impressive yet, but the foundation is solid. Python, Typer, Rich – the same stack that worked for KeyGlow (see my other project).

What took the most time today?

  • Data. Spent two hours manually researching and writing constellation data into a Python dictionary. Orion, Ursa Major, Cassiopeia, Scorpius, Taurus, Gemini, Leo, Cygnus, Lyra, etc. each with their brightest stars, visibility months, and the connections that make them recognizable shapes in the night sky.

  • I also managed to create a cool ASCII logo for SKYCANVAS, and make it displayable by “skycanvas logo” command.

  • I’m not using an API for this – instead I’ll use the Skyfield library, which has a massive built-in star catalog and calculates positions mathematically. The manual data is just for the constellation shapes and metadata – Skyfield handles the actual astronomy.

  • Right now my constellations.py looks like a giant dictionary with empty spots waiting to be filled.

  • Next up: completing the data and turning those coordinates into actual ASCII art. Bresenham’s line algorithm, here I come. ʕ•ᴥ•ʔ

0
0
25
Open comments for this post

3h 1m 40s logged

Devlog #04 – Rebuilt from scratch ʕ•ᴥ•ʔ

I scrapped the old UI, that I did with AI (yeah, should have not done that) entirely and rebuilt ReFlow with my own design. The previous version used colors suggested by Claude and honestly looked too generic. The reviewer was right about that.

The new design is actually mine.

I decided the river is gone. Instead there’s a weekly circle tracker, seven circles that fill as you stay clean. It’s simpler and more honest about what the app actually does.

The counter now shows days, hours, and minutes since your last slip, the Impulse button turns the whole screen green for 60 seconds with a breathing animation. The AI companion stayed mostly the same as it is just an API, it simply adapted to the new layout.

What was hard:

  • I always struggle with designing new UI by myself because I think it is not good enough (maybe that is why I used Claude at first)

What was easy:

  • the circle tracker logic.

What took way too long:

  • getting the slip button to actually reset the counter.

This version is 100% my own work except for the AI companion which still uses DeepSeek. No AI-generated UI this time. If this still looks like AI to someone, I don’t know what to tell them ʕ•ᴥ•ʔ

0
0
24
Ship

I made ReFlow – a minimalist addiction recovery tracker visualized as a living river. Stay clean, it fills with water and life. Slip, it gently recedes without punishment. Features an AI companion, daily check-ins, and a personal onboarding flow. Calm green palette, everything stored locally.

The AI was the hardest part. Gemini blocked me with CORS, OpenRouter rate-limited me, finally got DeepSeek working through a Vercel serverless function. The SVG river took time to get right – smooth water animation with milestone triggers for algae and fish.

I’m proud of how safe and calm it feels. The river doesn’t punish you for slipping. The AI has strict guardrails so it never judges. And the API key is properly hidden behind environment variables.

To test it, open the live demo, name your addiction, and click Get Started. The river starts small – click the days counter to watch it grow. Use “I slipped” to see the “gentle” recede. The AI companion is on the Companion page. Everything stores locally with localStorage.
Hope you like my project, and thanks for all reviews! ʕ•ᴥ•ʔ

Try project → See source code →
Open comments for this post

2h 24m 28s logged

Devlog #03 – Almost There 🤍

Hey everyone ʕ•ᴥ•ʔ

ReFlow is almost ready to ship. This project has been a journey – kinda more personal than anything else I’ve built on Stardance.

What came easily

The onboarding flow with localStorage fell into place quickly. Name your addiction, set your reason, and it just works. The SVG river with the dark background, algae, and fish was surprisingly smooth to build – I had a clear vision and the code followed. Deploying to Vercel and hiding the API key with environment variables went way smoother than I expected.

What fought me

The AI companion was a pain. First Gemini gave me CORS issues. Then OpenRouter rate-limited me instantly. Finally got DeepSeek working through a serverless function, but it took hours of debugging. The routing on Vercel also broke my links - pages kept redirecting to index.html until I renamed home.html to track.html.

Where it stands

The river is alive. The AI (surprisingly) listens without judgment. The timer ticks every second. You can name your addiction, track your days, and talk things through. Everything stores locally - no accounts, no tracking, no bullshit.

Shipping soon. A few more details to wrap up and ReFlow goes live.

Honestly, this one means more than Stardust. If it helps even one person feel less alone, it was worth every hour.

Hope you all like it 🤍

1
0
50
Open comments for this post

2h 19m 51s logged

Devlog #02 – UI Overhaul & Progress

Hey everyone ʕ•ᴥ•ʔ

I completely redesigned the ReFlow UI today. The old beige version felt flat and didn’t match the calm atmosphere I wanted for an addiction recovery tool.

Claude helped brainstorm the new green and yellow color scheme – green for growth and healing, yellow for warmth. It works way better.

But I built the actual functionality myself. The Get Started button with localStorage checks, the addiction name and reason inputs, the confirmation dialog if you already have data saved - all my code. The canvas river skeleton is in place, and I spent time planning how to animate water levels smoothly.

Also got the AI companion working with DeepSeek’s free API after struggling with Gemini (CORS) and OpenRouter (rate limits). The companion has strict guardrails so it won’t judge, give medical advice, or say anything harmful.

Right now at about 3.5 hours. The river animation is the last big piece before shipping.

The AI API is not ready yet, just some static answers a user can get.

This project is personal. I know what addiction feels like, and I wanted to build something that doesn’t punish you for slipping – just shows you the river can always flow again 🤍

0
0
51
Open comments for this post

26m 47s logged

Rebuilt the entire project as a personal portfolio for the Personal Site mission.

Three pages:

  • Home with about me and skills
  • Projects with KeyGlow and ReFlow
  • Contact with links. Simple, clean, no frameworks.

Ready for re-review ʕ•ᴥ•ʔ

0
0
51
Open comments for this post

1h 15m 7s logged

Devlog #01 – The river begins 🤍

I started building ReFlow today.
It’s a minimalist addiction recovery tracker where your progress is visualized as a living river.
Stay clean, the river fills.
Slip, it gently recedes.
No guilt, no punishment.
Almost got the landing page structure done – navigation with the logo on the left, Home and Track buttons on the right.

The idea came from my own struggles. I wanted something that just shows you that the river can always flow again. Tomorrow I’ll start working on the river animation and the day counter.
Built with pure HTML and CSS for now. Forn now, no frameworks, no bloat. Keeping it simple.
I know 1h and 15 mins might seem a lot for just the page structure that I have done, but I was so indecisive about colors I ended up changing them a lot and time was ticking in the background ʕ•ᴥ•ʔ

0
0
15
Ship

KeyGlow is finally shipped! (The text there will be the same as the one in latest DevLog)
Hello everyone, I hope you are all doing great!

After a lot of coding, debugging, testing and polishing, KeyGlow is finally ready to be released.

This project started as a simple idea: create a fun keyboard statistics tool that allows people to understand their keyboard usage without becoming a keylogger.

The final development phase ʕ•ᴥ•ʔ
The last stage of development was focused mostly on polishing the project and preparing everything for release.

At this point, instead of adding more features, I decided to focus on reliability and making sure the existing features worked properly.

Some of the final improvements included:

Fixing edge cases
Improving database handling
Adding corrupted JSON detection
Adding invalid database format detection
Adding save error handling
Improving reset behavior
Adding automatic folder creation
Testing installation in clean environments
A big part of software development is not only creating new features, but making sure other people can actually use what you built.

Making KeyGlow feel complete ʕ•ᴥ•ʔ
During the final hours of development, I focused on improving the overall experience.

Some smaller additions made KeyGlow feel much more like a complete application:

ASCII KeyGlow logo
keyglow logo
keyglow info
keyglow joke
Better CLI experience
Improved documentation
Installation demo
Project screenshots
From a local project to a real package ʕ•ᴥ•ʔ
One of the biggest milestones was turning KeyGlow from a project running only on my machine into a real Python package.

The project went from:

“A tool that works only for me”

to:

pip install keyglow
And I am glad I managed to release it, as I have never done such thing before.

AI Usage ʕ•ᴥ•ʔ
I need to admit, that I used AI for this project, however, biggest part of it was done fully by myself.
I used AI to learn about Typer library commands, and tables from Richer library, I also used it a little bit to validate the process of monitoring the keys, all that to ensure the project is indeed safe to deploy.

Final Thoughts ʕ•ᴥ•ʔ
It is a small project built around a simple idea: showing people interesting statistics about something they use every single day - their keyboard.
But building it was a great experience.
The project went through the full process:

Idea
Development
Testing
Documentation
Packaging
Release
That’s quite a long devlog, isn’t it ʕ•ᴥ•ʔ
I really hope you will like it and review it positively 🤍

  • 5 devlogs
  • 11h
  • 12.65x multiplier
  • 138 Stardust
Try project → See source code →
Open comments for this post

1h 42m 26s logged

KeyGlow is finally shipping 🤍

Hello everyone, I hope you are all doing great!

After a lot of coding, debugging, testing and polishing, KeyGlow is finally ready to be released.

This project started as a simple idea: create a fun keyboard statistics tool that allows people to understand their keyboard usage without becoming a keylogger.

The final development phase ʕ•ᴥ•ʔ

The last stage of development was focused mostly on polishing the project and preparing everything for release.

At this point, instead of adding more features, I decided to focus on reliability and making sure the existing features worked properly.

Some of the final improvements included:

  • Fixing edge cases
  • Improving database handling
  • Adding corrupted JSON detection
  • Adding invalid database format detection
  • Adding save error handling
  • Improving reset behavior
  • Adding automatic folder creation
  • Testing installation in clean environments

A big part of software development is not only creating new features, but making sure other people can actually use what you built.

Making KeyGlow feel complete ʕ•ᴥ•ʔ

During the final hours of development, I focused on improving the overall experience.

Some smaller additions made KeyGlow feel much more like a complete application:

  • ASCII KeyGlow logo
  • keyglow logo
  • keyglow info
  • keyglow joke
  • Better CLI experience
  • Improved documentation
  • Installation demo
  • Project screenshots

From a local project to a real package ʕ•ᴥ•ʔ

One of the biggest milestones was turning KeyGlow from a project running only on my machine into a real Python package.

The project went from:

“A tool that works only for me”

to:

pip install keyglow

And I am glad I managed to release it, as I have never done such thing before.

AI Usage ʕ•ᴥ•ʔ

I need to admit, that I used AI for this project, however, biggest part of it was done fully by myself.
I used AI to learn about Typer library commands, and tables from Richer library, I also used it a little bit to validate the process of monitoring the keys, all that to ensure the project is indeed safe to deploy.

Final Thoughts ʕ•ᴥ•ʔ

It is a small project built around a simple idea: showing people interesting statistics about something they use every single day - their keyboard.
But building it was a great experience.
The project went through the full process:

  • Idea
  • Development
  • Testing
  • Documentation
  • Packaging
  • Release

That’s quite a long devlog, isn’t it ʕ•ᴥ•ʔ
I really hope you will like it and review it positively 🤍

0
0
12
Open comments for this post

2h 47m 22s logged

Hello everyone 🤍

I hope you’re all doing great!

Just a little development update on KeyGlow.

Over the past few days I’ve been working on polishing the project instead of constantly adding new features. My goal from the very beginning has been to make KeyGlow feel like a real, reliable CLI tool rather than just another weekend prototype.

For anyone who hasn’t seen it before, KeyGlow is a privacy-first keyboard usage analyzer. It generates keyboard usage statistics and a simple heatmap while never storing what you type. No typed text, no passwords, no key sequences - only anonymous key frequency counters stored locally on your own machine.

Since the last update, quite a lot has changed:

• I added real-time keyboard monitoring.
• I implemented automatic saving while monitoring.
• Added keyboard and mouse inactivity detection with configurable timeout.
• Added the ability to disable automatic shutdown when desired.
• Improved local storage by moving everything into a dedicated ~/KeyGlow/ directory.
• Added JSON, CSV and TXT export support.
• Added an information command displaying database size, stored keys, total presses and other useful details.
• Added confirmation before deleting collected data, along with a –force / -f option for power users.
• Improved error handling for corrupted databases and invalid data.
• Added automatic creation of missing storage/export directories.
• Cleaned up dozens of small edge cases and improved the overall stability of the application.
• Wrote a complete README and documentation.
• Added a completely unnecessary but absolutely essential keyglow joke command because every CLI deserves at least a little personality.

At this point, most of my work isn’t about adding new features anymore (though it is tempting not gonna lie)-it’s about making sure the tool behaves correctly in every situation. That means testing fresh installations, handling invalid input gracefully, making the CLI feel polished, and improving the overall user experience.

The project is now very close to its first public release.

Before I publish it, there are only a few things left to finish:

  • Debug a few remaining pieces of code.
  • Update the KeyGlow ASCII logo.
  • Package everything properly.
  • Publish the project on PyPI.

Once that’s done, anyone will be able to install it with a simple:
“pip install keyglow”
I’m genuinely excited to finally share this project. It started as a small idea and slowly grew into something that feels like a proper open-source tool. There’s still plenty of room for future improvements, but I’m really happy with where it is today.

Thank you to everyone following the development so far. I can’t wait to release KeyGlow and hear what people think! 🤍

1
0
70
Open comments for this post

1h 5m 13s logged

Devlog #3
Hello there again, what’s up?

I managed to add KeyGlow inactivity detector 🤍

It basically detects whether you move your mouse or write anything with a keyboard, and if you don’t it disables keys monitoring.
I added custom timeout in minutes.

How cool is that ʕ•ᴥ•ʔ

0
0
3
Open comments for this post

2h 28m 44s logged

Devlog #2
What’s up, I hope you all are doing great 🤍

Still working on my KeyGlow ʕ•ᴥ•ʔ
I want to perfect it as much as I can.
Recently, I added a privacy model, and inactivity detector which I will talk about in the next devlog!

Here are some difficulties that I encountered:

  • Mouse inactivity tracking, that involved checking movement, scroll and clicks.
  • Explaining clearly to everyone what is my “privacy model”

I did those things with ease:

  • Writing new commands overall, I already learned how to do it fast and efficiently.

Stay tuned for more if you like CLI Tools like this one ʕ•ᴥ•ʔ

0
0
8
Open comments for this post

2h 51m 13s logged

Subtle Foreshadowing 👀🤍

I just finished the basics of my CLI Tool.
Proud to say I did it mostly by myself ʕ•ᴥ•ʔ
This will probably be kind of epic after release, though I still need to work a lot.

Things I menaged to do easily:

  • Reading data from file, loading it into a “buffer”
  • Coloring TUI
  • Making tables and ASCII Art (just needed to search for docs)

Things I struggled with so far:

  • The core mechanic such as receiving data from keyboard
  • Converting that data into something easy to work with and making it file-attachable, and also human readable.

We all love CLI, riiiiight?

1
0
25
Loading more…

Followers

Loading…