stardance has been extended another month! the new deadline is october 31 :)

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

ThetaNexus

  • 12 Devlogs
  • 90 Total hours

A terminal app for Windows that keeps every container, image, volume and network in one list, and lets you start and stop them, follow logs, watch live stats and see why a healthcheck is failing without opening Docker Desktop.

This needs changes before we can consider it shipped. Review the Shipwright feedback, make updates, then ship again.

Shipwright walkthrough

Ship #1 Pending review

What I made

A terminal app for Windows that keeps every container, image, volume and network in one list, and lets you start and stop them, follow logs, watch live stats and see why a healthcheck is failing without opening Docker Desktop.

I made ThetaNexus because I wanted to make something that would help me learn Docker, how it works, what it is and to create a tool that helps other developers control their Docker environment.

What was challenging

Learning a new library, making a UI that looks good, which was harder than I expected. There were also a lot of things in C# that I did not know existed.

What I am proud of

That this helped me to actually learn Docker. I have never really used Docker but I know it is a really popular and useful tool among developers. Some developers use it every day, some less, some don’t. And as I mentioned above… I wanted to make something that would help me learn it and a tool that helps you control it.

How to try it

Download the latest release from ThetaNexus on GitHub and run it. It installs into your user folder and adds ThetaNexus to your PATH, so you can start it by typing thetanexus in any terminal, but Windows Terminal is recommended.

  • 12 devlogs
  • 90h
Try project → See source code →
Open comments for this post

7h 49m 11s logged

I choose… SHIPPING!

Okay, so it is here!
Another project that I made and that I am proud of!

I made the README file and used the style that Helyx has, because I am very keen on it.
I also worked on the GitHub page so it has everything it needs.

What else did I do…

The installer is done, the logos and banners are done too, and while reviewing the codebase
we found some bugs, but they are fixed now. And yeah, I think that is all!

I will probably start working on another project from my profile now, but I am not sure which one yet.

0
0
54
Open comments for this post

9h 28m 11s logged

Final upgrades?

So, I think this is like a final features devlog that I am making for ThetaNexus. I think it is already kinda done and it already has everything it should have. I still have to set up the GitHub page and write all documents like README file, LICENSE, etc.

But let’s now talk about new stuff that I added!

I rewrote the logs screen and added more features to it. So now you can search in it, adjust tail, clear and save to file and more.

I also added a new screen that lets you create and start a container from an image. It validates everything before it sends anything to the engine. For instance, if the port you picked is already taken, it tells you instead of failing halfway.

Another new screen is a help screen. It lists all of the keys for each screen and explains what each one does. Nothing really insane but for some people this may be very useful.

I also added a lot of new features like pruning all over ThetaNexus and many more!

Finally, I’ve done some UI changes and code changes to improve the UX and make everything more readable and understandable.

Okay, so yeah, I am going to write up the README and make the GitHub Page and then I will move to another project that I plan to make.

Right now, I am still not sure which one I will make… but probably one that I won’t have troubles to make since Stardance ends in 18 days!!

0
0
6
Open comments for this post

9h 1m 44s logged

Repolished stats

Have you ever heard the phrase…

“It’s easier said than done.”

Well, that is exactly how I would call this what I just experienced while repolishing stats. The thing that made this even harder to do is that I am currently ill and I don’t feel very good and focused.

I made 4 screens where each one is for a specific component…

  • CPU
  • Memory
  • Network
  • Disk

Each one prints specific info, I tried to make sure that everything that you might need to know and see will be printed in the screen.

And if you are only interested in the usage or how should I call it, then you can see all of the 4 components and their usage by clicking the key ‘g’.

It will print a whole screen with only graphs of usage of each component.

I think this new repolished version looks very nice and cool! It turned out pretty well.

You may also notice that some of the elements look like from btop++. Well, it’s simple! I was mainly inspired by btop++ for this new stats screen.

I am thinking of what to add next, but nothing comes to my mind… I might clean the whole codebase next devlog and ship it and move onto a new project… but yeah, we will see…

0
0
85
Open comments for this post

9h 17m 18s logged

More actions?? Ordering everywhere??

So first, I added “more actions” screens to containers because wanting to put everything into a footer wouldn’t look so great.

Before this, the only actions you could do to containers were:

  • start/stop
  • raw JSON
  • logs
  • stats
  • shell

well, now you can do all of this:

  • start/stop
  • restart
  • pause/unpause
  • kill
  • remove
  • raw JSON
  • logs
  • stats
  • shell

So now you have bigger control in ThetaNexus over containers.

You can use these actions by pressing the ‘.’ button, it opens more actions screen. BTW, you don’t have to open it, but it just opens a selection menu where you can either pick it, or it shows keybinds to it.

Also, now in the main list you have ordering in ALL sections! Before you could only order containers how you wanted but now you can do that same thing with images, volumes and networks!

Ordering is also now remembered, so when you go from one section to another in the main list, you won’t have to select the order you had.

Oh yeah and guess what! Now I am moving on to redo the stats! Finally!!! haha

0
0
19
Open comments for this post

9h 56m 43s logged

All sections are done!!!! What next?

I finished all of the sections soo…

  • containers
  • images
  • volumes
  • networks
  • events

And yes…

their details/info screens are done too!

I introduced a simple and understandable dictionary where I use details when something has more than 1 screen and info when it has only 1 screen.

For instance, you have ContainerDetails, but on the other hand you have VolumeInfo.

Okay, so what I did in this devlog you may be wondering…

I made networks & events sections and their own info screens. I also leveled up ImageInfo to ImageDetails. Based on what I said above, you may understand what it now has.

I just realized I forgot to add ordering to the other sections in main list… only containers have it for now but I WILL ADD IT!!

I also plan to probably upgrade almost every info screen to a details screen so you can do more things and have more actions available in general. I also want to add more features to ContainerDetails because I want you to have full control over the container in ThetaNexus.

I also plan to check every .cs file and check the logic, because I think it changed a lot from the first one that I used in containers, so yeah, that will be my first priority when I add all features I want to. So a review…

BTW, I did not forget about redoing the stats!

0
0
12
Open comments for this post

9h 14m 40s logged

Another section is done!! More features!

Okay guys, so today, I locked in! Mainly because it’s Saturday (weekend) and school days are very close. Okay so… what I added?

What a great question!

I added a new section for VOLUMES. Firstly you can see some basic info such as driver, mounted by and when it was created.

When you open it, you can see more info:

  • Driver
  • Scope
  • Mountpoint
  • Created
  • Project

and what containers it is mounted by.

This info screen has functions to view:

  • raw JSON
  • copy name
  • browse
  • delete

I also added a new design feature for displaying success, warning and error messages all over ThetaNexus!

I also fixed some small bugs that were making ThetaNexus look a little bit glitchy, they were noticeable but that’s now fixed!

I plan to finish the other sections so networks and events and I still have to change the stats screen. I did not forget that!

Probably containers will receive a new feature in the next devlogs, but maybe I’ll scrap that idea… we will see how much will I like it and see it useful.

0
0
13
Open comments for this post

9h 44m 1s logged

Details functions prepared to work!

Okay so I have finished all of the details functions and they all work so:

  • raw JSON
  • logs
  • stats
  • shell

are all done! Well, stats still has to be redone because I want to change the design as I mentioned in a past devlog.

I don’t want to do it now so I went to work on images rendering on the main list. Yes, images rendering. I am thinking of doing all of those sections now in main list since they are like the core of ThetaNexus and stats function could be also done at the end.

Okay so yeah, I made the images rendering which you can see in the image and I am also working on details functions for images. Of course it won’t be the same as the container’s details functions file because containers and images are just not the same.

I also made a tiny edit of the rendering of the screens so it looks nicer.

I am thinking that maybe ThetaNexus won’t have that many functions because Stardance ends very soon and I have school but yeah… we will see about that!

UPDATE (edit):
Looks like no image details are coming. When I was at the end of finishing I noticed how dumb it was and just made a basic info one instead.

0
0
29
Open comments for this post

8h 26m 33s logged

Details screen done! Logs are done too!

I finished making the other detail screens. So now all of them are completed! Overview, env, mounts, networks and health.

Let me explain what each screen does…

Overview:
Shows you the basic info about your container. Status, created date, started date, image, command, ports, number of restarts, hardware limits and project it is assigned to.

Env:
Shows you environment variables. At first, they are hidden. You have to press the key ‘V’ to reveal them.

Mounts:
Shows every path where the container has a mount. (not writing to itself)

Networks:
Shows you which networks the container is attached to, and what it can reach. It shows IPv4, Gateway and aliases.

Health:
Shows you the container’s current health state. It also shows you how many probes have failed in a row and the last 5 probe results.

Okay, screens done!

I also finished one of the core functions that details screen has!
THE LOGS!
Here is what Logs do if you for some reason don’t know…

Logs:
Shows you the last 500 lines the container wrote, from both of its output streams.

0
0
32
Open comments for this post

8h 46m 33s logged

Some screens are done!

So main details screen is finished. On the main overview screen you can read status of the container, date of creation, start date, image, command, ports, restarts, limits and the project it is assigned to.

Right now I am working on the Stats screen under details and on other screens such as:

  • env
  • mounts
  • networks
  • health

Stats are right now my priority because let me tell you, this is really difficult to make. I also don’t like the current design so I am going to redo it ahhhhh.

But for now it shows the CPU usage, Memory usage, Network info so download & upload and number of processes. But I will probably make it show a huge graph of each of these things.

I am also losing sanity, because I found out that I don’t know nothing. I genuinely sometimes just stare at the method thinking of how to do it and then redoing it 50 times.

Ahhh this is way more difficult than making Helyx to be honest… too much math and calculating each window… Well, wish me luck.

0
0
18
Open comments for this post

3h 57m 26s logged

Playing with the new libraries, drafting interfaces and functions

Since I’ve never used the Docker.DotNet library, I first have to understand it before I can build something with it. So I was making some basic functions with it to actually learn something from it. It isn’t going smoothly but we are getting somewhere.

Claude Code is a huge help here. For instance, I NEVER came across the CancellationTokenSource class before, so I had no idea what it does and how it works. But yeah, now I do haha.

I edited some design elements so it will look nicer. I also added start/stop functionality and I am still working on the container details screen. My plan is to make ThetaNexus have most of the features Docker Desktop has on Windows. It will depend on how much time I have until Stardance ends and also time after school, because I want to make a few more projects but yeah, I will try my best to put as many features as possible into ThetaNexus.

0
0
39
Open comments for this post

3h 36m 12s logged

The beginning

I was working on the main list (menu), where you can see all of your:

  • Containers
  • Images
  • Volumes
  • Networks
  • Events

I was drafting a lot of TUI styles, because I wasn’t sure what design I wanted ThetaNexus to have, but at the end, I landed on a similar one as Helyx uses.

I still have to learn the Docker.DotNet library that is being used here. I also know only the basics of Docker so I hope this will also teach me something.

For now, you can check photos and rate the design I selected in comments. Right now you can only see your containers and collapse them, but you can also order them by:

  • NAME
  • STATE
  • IMAGE
  • PORTS
  • CPU
  • MEM
  • UP

One way or another!

I plan to add details & start/stop very soon and also a whole control panel in details for that specific container so be ready!

2
0
193

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…