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

Lxsh-S

@Lxsh-S

Joined June 1st, 2026

  • 22Devlogs
  • 3Projects
  • 4Ships
  • 68Votes
16 yr old procrastinator!
Ship

DAGIT SHIP1

I have built a terminal TUI git visualizer that beautifully displays your git repository on the terminal.

Challenging part

Dagit has four small sections [left panel/visualizer/status panel/logs]. I first thought there would be no resizing issues because I’m using bubble-tea and built all there sections’ skeletons, as bubble-tea doesn’t automatically handle the resize event(got to know later). I manually tried to fix it in my own broken ways and found somewhat of a solution that feels and looks good

A Breakdown of the project

  • dagit refuses to launch if we don’t open it inside a git repo.
  • We fetch all the data by running git commands.
  • Currently in the left panel we have the following information:
* Repo name
* The repo's owner name 
* Current branch 
* The url of the remote
  • In the vizualizer:
* hash of the commit 
* Reference 
* the committer name 
* The time of the commit
* We also beautify the graph and show it in this section
  • Log section:
* Hash of commit 
* Commit message
* Committer name 
  • Status panel:
* Modified, staged files are shown here
  • The user can toggle between the visualizer and the status panel using v

  • The user can also choose between my predefined tick rates[500ms/1s/3s/5s/10s]. By default the tick rate is set to 1sec

Proud

  • Of how quickly I have understood the git docs and used it to build this project that makes git look so much better for the newbies.

  • Also that I have finally made a project that is not very complicated for the user to use like gos was. lmao

  • Also handling resize events was a bit of headache and it feels so much better now. I feel proud because of that too :shy

Do we need to set something before?

  • No, but if you wanna install it using go, you need to have go installed :)

  • Note: The releases page only has a darwin(macos) and linux version. So I recommend using wsl on windows to enjoy the beauty of dagit

Installation

  • the simplest way to install dagit is using the AUR:
yay -S dagit-bin
  • Using go:
go install github.com/lxsh-S/dagit@latest
  • You can also install it from the github releases page (Make sure you get the latest version)
  • 5 devlogs
  • 13h
  • 10.32x multiplier
  • 130 Stardust
Try project → See source code →
Open comments for this post

2h 25m 14s logged

DAGIT DEVLOG 5

yoo once again!

I’ve worked on the features I’ve been delaying and let’s see the progress

Progress Overview

  • I first worked on the idea i got yesterday A status panel to see staged/modified files

  • Then I tried to work on scrollbars in the git log and the visualizer but I failed to do so I just scrapped it completely and reset the repo to the after status panel state

  • After scrapping that, I worked on the tick rate selection Intervals of time at which we update the data displayed in the TUI

DETAIL

  • The status panel idea had come when I was surfing git hub and was just looking at lazygit (A far better project than dagit btw). I saw the same panel there and thought of adding it here because it would make more sense, although dagit is different from lazygit (dagit is only trying to visualze git not become a workflow)

  • The scrollbars were out of my league I already knew that but still gave a try. I dont think I would be giving up on the idea. I’ll just watch some tutorials on bubbletea and scrollbars specifically before working on it again

  • At first, I thought I would make the tick rate selector a separate panel where we would just scroll through different intervals of time, but as I consider myself lazy I just thought of adding it in such a way that instead of scrolling we change the tick rate with the press of buttons. Although the max tickrate is already small(10sec) I recommend using 1sec on small projects

0
0
145
Open comments for this post

2h 49m 51s logged

DAGIT DEVLOG 4

Yoo!
I’ve made soo many updates and the resizing /clipping issues are still eating my brain like bugs :crying: :crying:

Progress overview

  • Decreased the sizes of reference being displayed also truncated lines in the gitlog so that the vertical clipping stops

  • I completely styled the UI using lipgloss and it looks soo much better now :yay: :yay: :yay: :yay: :yay:

  • Added highlighting to the head of the repo that pops a little more

  • Refactored the old way of refreshing the data

  • Refactored the code to increase readability

Explain

  • The git logs were looking odd because when the commit messages were long , the log that should only take the space of one line was now also taking space in the second line. So we fixed it using truncateMessages() function

  • As we are pushig to multiple tags . The reference also gets long and causes a clipping issue again. So we again simply dosent let the refs be that long[But the current implementation can cause the line to break suddenly that may not look good all the time]-

// Stop 'refs' being too long
if lipgloss.Width(refs) > 30 {
	refs = refs[:27] + "..."
}
  • And as dagit is a live visualizer, I removed the old way of refreshing the data[clicking [r] to refresh]. Now what we do is use tea.Tick and the time library to refresh the data every 1 second.

Issues that can be caused

  • We are currently refreshing data every second that can put a lot more load on the system when used inside a big repository, So in infuture I’m gonna work to give the user a way to choose the tick Rate

What im gonna work on now

  • Scrollbar for gitlog and also visualizer
  • A tick rate selector
  • File status panel that can be toggled with the visualizer
  • A way to search for different repo’s in the user’s computer and jumping between them(something like the nvim feature of finding files) –im not really sure of this :confuse:
2
0
157
Open comments for this post

43m 36s logged

DAGIT DEVLOG 3

Yay!
we have got the release workflow up and running

What we are doing

  • what we do is make new binaries name dagit-linux-amd64.tar.gz and dagit-darwin-arm64.tar.gz
    and push them to our releases page with the tag given while pushing to the repo

  • We also push to the AUR!! :yay: . So all the I use arch btw people can download it easily :larp:

Installation

  • AUR

yay -S dagit-bin
  • Run in a github repo ,ie paste->dagit
  • Github releases

  • go to the releases page and download the binaries zip, extract it and run in a github repo
0
0
75
Open comments for this post

3h 34m 2s logged

DAGIT DEVLOG 2

We’ve improved the TUI soo much!! :yay:

What I’ve done

  • Got gitlog working with hash, commit message and the contibuter
  • Made a somewhat good looking git visualizer and fixed the horizontal and vertical border issue caused by big lines (reference mainly)
  • Styled the git visualizer with charm’s lipgloss
  • Fixed border issues in the footer and git log too
  • Also made dagit resize when the user makes the terminal window larger but idk why it doesnt work when the terminal window is shortened
  • I also added a resize keybindr to reload the data in the TUI so that the user does not need to stop it and run again for it to update to latest info

Issues faced

I haven’t faced any big issue in particular but figuring out resizing is the only thing that eats my brain

Where I spent the most time

I have spent the most time making the visualizer, lemme explain a little of it’s woking !!

  • First we fetch the git log graph from git and then we spread the graph by using SpreadGraph function in graph.go to make it look a little better
  • Then we get 15 of the graph lines into out TUI and then render it using lipgloss [Man charm’s tool are soo cool and make CLI/TUI look soo good]. Although we don’t see all the 15 lines as we dont have a scroll feature for now

What we are going to do

  • Style it
  • Fetch number of commits done to the repo and display it
  • Add scrollbar to git visualizer
    _ Also add scrollbar to git log -Not sure

What I currently feel

When I was planning to make dagit, I felt it’ll be different and will attract people towards it but it’s not upto my expectation.
I thinking to adding some feature that will make more people use it

0
0
84
Open comments for this post

3h 0m 31s logged

DAGIT DEVLOG 1

(BTW WHOEVER ADDED EMOJIS OPTION SHOULD BE PROMOTED :smirk-hole: )
Hii,
I’m making a TUI application that beautifully visualizes your GitHub repo inside your terminal!!

Note -> This devlog is a compilation of 2 days of work that I’ll explain

What I have done

DAY 1:

I started working on dagit with first:

  • Checking if the current directory is a git repo or not
  • If yes, we first fetch the repo name along with
  • owner of the repo
  • the remote url of current repo
  • current branch
    Lmao, this was all I did on day 1

DAY 2

Today the fun began :evil:

  • I started working on the TUI section
  • I started with a simple bubble tea list TUI to remember the simple things that I had forgot in these many days
  • Then I used bubbletea to render the left panel containing the the data we fetched from day one but I realised that this is messed up cuz I wont be able to make different sections for the visualizer and the git log history
  • When I searched for a fix I saw lipgloss and then integrated it with our current setup
  • I used lip gloss to make diffferent sections for our TUI. The sections that I currently want in the TUI left panel/middle(visualizer)/ bottom(git log) along with the footer like nvim
  • But :crying: I forgot about the resizing problem and idk anything about how I’m going to fix it like other TUI’s do so I’m donna leave it like tat for now

What I’m gonna do

  • Make it look prettier
  • Get the git log because it’s gonna be easier than the visualizer
  • Make my shit code look a little better
0
0
102
Ship

SHIP 2

This maybe long but read it please :)
I’ve improved gos by reading the reviews on the first ship and some little things that I’ve added my self

New features

  • I have made gos to make a .gos folder in the home directory of the user where he/she/they can store their custom templates using gosadd in the folder usr_Templates

  • I have added the gosadd command that uses -a flag with the folder name that you want to turn as a template. It simply stores the whole content of the folder and saves them under .gos/usr_Templates is the home directory

  • I have a added the gosget command that uses two flags: -p as the project name and the -e, where you give the template name that was stored in usr_Templates. It fetches the template from that folder and pastes it in the current directory with the name that you have entered i n -p

  • I have added a --list flag that shows all premade project structures

  • I have added gosdir that is a mkdir like command for making new directories. it user -m flag and the folder name of the new folder

READ THE README.md under “After Installation” section to find a way to make this commands shorter and more easy and faster to type , you’ll have to change things in .bashrc

Support

Gos works just fine on mac and linux and also wsl on windows but on windows you may lack the alias feature to make the commands shorter

Things you need to know!!

A lil knowledge about Linux and configuration script for shells like .bashrc will help you if you dont know about it.
It’ll be fine for other users(– ppl who say ‘i use arch btw’)

If your not able to figure out things or it dosen’t workout for you because it feels a little complicated then you can skip the project or use AI to help you with initialization

Things I found challenging

I’ve always felt challenging to make this simple project also simple to use for other users thats the reason we are using alias for now as it helps shorten the command( Very helpful is you downloaded the package form the AUR)

What im proud of

I’m proud of the thing that i didn’t quit while making this project or burnout because the largest part of my day goes to my intermidiate clg ( 11hrs and 30 mins , also adding the traveling time) because my parents thing a school that works for more time will teach me more things lol
I wanna work on big projects that are complex and fun but im not able to most of the times

How I wanna improve

I wanna improve my understanding about code and problem solving skills so that I’ll be able to work on those big and complex projects

THANKS FOR READING, LOVE Y”ALL = )

  • 9 devlogs
  • 13h
  • 16.41x multiplier
  • 207 Stardust
Try project → See source code →
Open comments for this post

2h 7m 17s logged

GOS DEVLOG 13

On the last devlog I had gos making .gos folder in the homedirectory of the user where it stores custom templates made by the user

What I have got new

I have added two new features:

  • gosadd
  • gosget

-[gosadd]

  • We use the this command to add any folder as a template that we can later use with a different command

  • We have got a -a flag to add to folder. Although we wont be using this flags because I have got a way to make it easier and faster to type in the terminal and have given the solution in README.md in [After installation]

-[goget]

  • We use this command to fetch the copied folder from .gos/usr_Templates to the current directory we are on

  • “gosget” uses two flags:
    -p –> We use this to give in the new name of the template folder that will be saved in the current directory
    -e –> We use this to get the correct template that we have stored

  • Both -p and -e default values are an empty string so passing a value in necessary for it to work

0
0
5
Open comments for this post

45m 55s logged

GOS DEVLOG 12

I’ve made it so that when you run the newest version 0.9.1 which I havent released yet. It automatically creates a .gos folder in the user’s home directory and it’ll be the place where is store custom templates made by the user

I still dont know

I’ve to figure out how do we walk through the current directory and store in the usr_Templates and somehow copy paste it when the user requests that specific template

Other

I still haven’t worked on the project properly due to my school. I currently have 9 hrs to figure out how we are going to move forward = )

0
0
63
Open comments for this post

34m 11s logged

GOS DEVLOG 11

I’ve read the reviews by you guys and have found out that:

  • Gos needs to have a way so that the user is able add their own templates

  • Few ppl also said that initializing a git repo when making a project will be very helpful

  • One review was about some bugs that he face in the tool I dont know what he had faced because the version that I had shipped was 0.6.5 and I’m currently working on 0.9.0. If anyone did face them too can you please tell me?

  • One guy asked me why did I name Gos as gos so for you:
    The name Gos can be broken down like this : D

Gos
"Go" --> The language 'Golang'
"s" --> from 'Structure'

The first name that I had thought for was Gostruc. But it felt too big to type in the terminal when compared to mkdir and tree

  • I’m also thinking about adding a tree like command in this project. Can you guys tell if I should do that ?

I really appretiate your reviews guys and I’ll be working on improving this project. Hoping that it stays a little relevant :(

– Bye

0
0
13
Open comments for this post

1h 20m 34s logged

GOS DEVLOG 10

I’ve added mkdir thingy to the project but it feels so useless lol = )

Idk where Im gonna take this project now lets see

– byeee

0
0
4
Open comments for this post

1h 4m 24s logged

GOS DEVLOG 9

Updates

  • I’ve added files support for Typescript

Now all three languages have proper boiler plates for their different Project types In the latest version of Gos0.8.5

What I want to change

  • As I’m not a pro 10x developer or something most of my code is repeated and I don’t know why but it doesn’t feel that right to me. So I’ll be thinking of a different approach for sometime

Things I wanna add

  • I’m thinking about gos should also initialize a Git repository when a user creates a project

  • I’m also thinking about adding JavaScript and C support to Gos

  • I wanna make adding new languages to the project a little easier if i don’t get too lazy to do that

  • I also wanna integrate default unix command like mkdir, tree to Gos. So that it feels more functional and less useless
    – byee :)

0
0
5
Open comments for this post

3h 16m 55s logged

GOS DEVLOG 8

Updates

  • I’ve added files to the project structure in Golang and Cpp
  • I’ve done it using Templates in templates/ dir
  • I’ve embeded the files into the binary using embed in Go
  • I’ve fixed the AUR problems and now it works perfectly

Now there is a proper boilerplate for each project type in both the
languages now

Next Plan

I’ll be adding files to Typescript project strucutres next

How to Update Gos

To update gos: -

  • yay -S gos-bin
  • Then when it asks Packages to Clean Build select All by typing A
    and Install it
  • It’ll be updated to the latest version

###Other things
Lol, when i used embed now it decreased the binary size from 2.24 mb
to 1.09 mb

I’ve also added v0.6.5.md for the voters of Ship#1 although I have
asked a reviewer if I can scrap that Ship and just make a new ship from
the new versions of Gos. Les see what happens

–Bye

0
0
5
Open comments for this post

1h 14m 4s logged

GOS DEVLOG 7

Features

  • I have finnay got the CD workflow working with the help of some research the old google way but as it was taking too much time I again tried using claude and it helped me do the work very quick!

  • I also added a --list flag to see the project structure types for all the languages supported buy gofie.

Issues I faced

  • One of the dumbest issues were that I was not updating .SRCINFO with the new PKGBUILD.
    Got that running easily

  • And other issue also happened with the url of my project as I had changed the name from [Gostruc] to [Gos] before linking it here the remote was set to the old url till now which was causing some error 128 with github actions

What I have learnt

  • I have learnt to work with github actions and goreleaser to automate the deployment of my little project Gos. Although I still get confused seeing the automation process becuase im not very well into it :

Note

  • Although Gos is available on the AUR(Arch User Repository) but I’ll never most likely recommend people using that way to install in on their systems cuz it will most of the times download the old version of gos ( Ofc it dosent happen all the time but ig there is a delay in my CD workflow)

  • I recommend using Go to download it (Atleast for now, i’m working for AUR :))

– byee

0
0
6
Open comments for this post

1h 18m 54s logged

GOS DEVLOG #6

(Lol im sorry im not good at devlogs :))

  • Yesterday I finnaly uploaded my package to the AUR (Arch User Repository)

  • You can download it by running:-

yay -S gos-bin
  • I’m now going to work on a CD for the project because man this deployment is very tiring (Im new and a noob) :)
0
0
7
Open comments for this post

1h 8m 42s logged

GOS DEVLOG-5

  • I’ve added CI with a lil help from google and Claude

  • CD will be pretty useful when I push to a package manager

  • I’ve also wrote a proper quickstart and file and also added file strucutre to README.md

0
0
3
Ship

Intro

This is “gos” a CLi tool that helps you strucutre your projects.
This is still in it’s bare bones phase but feels a lil complete for a small hobby project

Challenging part

The parts I have found challenging are to understand where and how to handle errors. I’ve still not fixed some of them.

Not sure

To use and try this project you must have installed go on your system
And as i work with linux i dont think this will be able to be used in windows pc’s. Dont know about wsl tho.

Installation

Note :- Need go to be installed

go install github.com/lxsh-S/gos@latest
  • 4 devlogs
  • 6h
  • 7.56x multiplier
  • 42 Stardust
Try project → See source code →
Open comments for this post

22m 14s logged

Gos

I have worked on fixing some bugs but had managed to make it even worse so had to scrap that idea and jsut post a demo

TL;DR of [gos] as of today

A simple CLI project that can be used for project structuring

It supports project strucutres for 3 languages as of now:

Typescript
Golang
C++

byee :)

0
0
8
Open comments for this post

45m 46s logged

Finnaly!!
Fixed that annoying issue of projects with wrong types but still having standard strucutre
Nothing much
–byee :)

Ohh wait

How I fixed it

  • The issue was because i used switch cases butt never returned any error from the project blueprint
  • After returningg an error and normally handling it in create folder
  • As this type of errors can also occur in language flag too I have fixed it by making the default switch as an error
0
0
10
Open comments for this post

2h 34m 1s logged

Gos

I have been working on this project for 4 days today
But because this is a simple project I have not experienced much new things (I don’t have enough time to build large projects because of my school and exams; If I do I think I’m gonna burnout :))

Updates

  • I have added support for different languages (cpp, go, typescript)

  • Also, added project structure types in each language:

Go  -> API, Web  and Standard project types

TypeScript -> API, NextJS, Library and Standard project types

Cpp -> App/Game, Library and Standard project types

This project till now has helped me:

  • Learn how ‘go install’ works as I faced problems with how it’s cache works

  • Learn the use of tags in github

Signing out….
– lxsh-S

0
0
3
Loading more…

Followers

Loading…