GitForest

GitForest

•  •  35 updates •  31h 14m

GitForest is a dynamic, visually-driven GitHub profile enhancement that turns your contribution history into a forest. The more you code, the bigger your forest grows. To prevent the forest from becoming too large, it will be periodically reset, but your data (how many forests you've filled) will be stored and displayed. GitForest focuses on showing your progress in a more visual and meaningful way. The forest updates automatically.

By Mikolaj

Timeline

Mikolaj
Mikolaj 5m spent working 68d ago

Project is ready to ship!

Mikolaj
Mikolaj 39m spent working 68d ago

Added how many forests have been grown so far and how to get a forest in my profile README as well as in GitForest README. Also made an image for demo video.

Update attachment
Mikolaj
Mikolaj 33m spent working 69d ago

Added this to the README.

Update attachment
Mikolaj
Mikolaj 22m spent working 69d ago

Added a profile README with GitForest and updated actual GitForest README.

Update attachment
Mikolaj
Mikolaj 26m spent working 69d ago

Fixed the file clearing method. Resolved my first git conflicts.

Mikolaj
Mikolaj 18m spent working 70d ago

I messed up the file clearing (after the forest fills up). Ill try to fix it tomorrow.

Mikolaj
Mikolaj 1h spent working 70d ago

I updated the README by adding config section that explains what to set the BACKGROUND_COLOR variable as to get one of these 4 variations (took this screenshot in CLion cause on github it is too big and it wouldnt fit). I added all the background and spruce variations to the project. Also fixed images placement in README.

Update attachment
Mikolaj
Mikolaj 21m spent working 72d ago

Made 3 variations to the purple one I made first to add some customization. I have not yet integrated it.

Update attachment
Mikolaj
Mikolaj 1h spent working 73d ago

GitForest is almost finished! Id really appreciate any feedback both on what could be added and what might need changing.
Heres what Ive done:
- fixed the code so all tests pass
- improved the reset functionality (previously the image would not reset after forking—now it does)
- added installation guide in README (however the images to not display like I would want them to)

Mikolaj
Mikolaj 42m spent working 74d ago

Two workflow runs worked (and updated the svg). The 3 above failed because I messed up in the tests directory.

Update attachment
Mikolaj Mikolaj 2 months ago

it takes that long cause on every run it downloads prerequisities (for example cmake)

Mikolaj
Mikolaj 22m spent working 74d ago

Results of the tests:
- one yaml script works and the other doesnt
Currently trying to fix it

Mikolaj
Mikolaj 1h spent working 74d ago

Added yaml scripts (for github actions) - first one for running project and second one resets previously saved data. Saved positions now get cast to int, .gitignore got updated and api data is now being loaded. Need to test if the yaml scripts work.

Mikolaj
Mikolaj 35m spent working 75d ago

Updated tests for JsonFileManager class in school today (on school computer so time didnt count) and slightly modified the tests file at home cause it had some errors and passed all the tests again confirming the refresh method and other added things work. Made a function that resets the forest.svg when it fills up, loads the background (without any trees) and refills the vector with free positions.

Mikolaj
Mikolaj 23m spent working 75d ago

Started reading some documentations about embedding many svgs into one, how svg layers work, some common svg tags, how to edit svgs in code and started making background as well as first forest element tree.

Mikolaj
Mikolaj 1h spent working 76d ago

Added refresh method in JsonFileManager which updates the vector with free positions (it is for tree placing so the trees are placed at least somewhat randomly so that each tree doesnt overlap any other trees), changes saved.json file so it now stores free positions, positions and number forests that have been filled so far, deleted a comment in main (forgot to do it earlier) and moved vector initialization from main to JsonFileManager (declaration still present). The file with tests for JsonFileManager class needs to be updated.

Mikolaj
Mikolaj 1h spent working 77d ago

Passed another section of tests this time for saving and loading json files. Refactored the code in JsonFileManager class (replaced exit(1) with throws).

Mikolaj
Mikolaj 13m spent working 77d ago

Decided to improve the GitForest logo which I made in figma so I added a gradient to the rounded rectangle, remade the whole tree using pen tool (instead of pencil tool) and ended up with 3 vectors (trunk, lower leaves and upper leaves) (earlier I had around 23 vectors). Improved the typography by reducing the Git letter spacing and created a space between these 2 words, left the Forest as it was.

Update attachment
Mikolaj
Mikolaj 55m spent working 77d ago

Passed 2 sections of tests with 0ms. I will replace some/all of the exit(1) with std::throw.

Update attachment
Mikolaj
Mikolaj 1h spent working 77d ago

Fixed the tree-placing script (the instantiate method in the Sprite class). Previously the script appended the element (a sprite to place) as the last child of the svg tag. Now it iterates through the children of the g tag (which is a child of the svg tag) and appends a copy of the element including all its children around the 10th or 11th child of the g tag.

Mikolaj
Mikolaj 32m spent working 79d ago

Refactored function for unit testing. Added some testcases but didnt test it yet.

Mikolaj
Mikolaj 57m spent working 80d ago

Implemented load and save functions for JsonFileManager class, fixed one more incorrect path to svg file.

Mikolaj
Mikolaj 1h spent working 80d ago

Managed to get tree placing working (partly), fixed paths to the sprites, removed width and height arguments from the instantiate function (in Sprite class).

Mikolaj
Mikolaj 1h spent working 81d ago

Debugged a little to check if everything is loading correctly. Fixed Manager class (all the method are now called like I want them to), started implementing the JsonFileManager class (loading works but api is still not called for now). Also added some checks for file not loading/parsing/saving correctly and values not being assigned or not existing in the json file. Learned how to write the json file.

Mikolaj
Mikolaj 1h spent working 82d ago

Added rapidjson library to the project to simplify future installation (so now there will be no need for installing any libraries cause they will be included in the repository), added structure for JsonFileManager class (this includes save and load methods, constructor and destructor but they are not yet implemented), marked the constructor for Sprite class as explicit, and moved the code from main to Manager class. I will not push todays changes yet to github cause I need to test if the Manager class calls all methods like I intended it to (which I couldnt do today). I also read some of the rapidjson documentation. I have the basic idea of how fetching the github api will work now cause I didnt really know where to safely put the personal access token which is required to get the commits, prs and other contribution data for specific user.

Mikolaj
Mikolaj 1h spent working 83d ago

I spent this time testing the logic for amount of trees to place (used hard coded data instead of api for testing purposes), added sprite class which will instantiate the trees (the path to the file is passed as an argument to the constructor). This method is not yet implemented. Still thinking how to handle the placement position (for now decided to use a vector with x position values (y will stay the same for spruces and cherry blossom trees)). Also grasped the basics of how to use random header (previously I used cstdlib and ctime).

Mikolaj
Mikolaj 6m spent working 83d ago

Minor color tweaks (mountains and cherry blossom tree) and added another ripple.

Mikolaj
Mikolaj 54m spent working 84d ago

Added README (containing roadmap, features, longer description, technologies used and installation will be added when im closer to finishing the demo), included library (3 files) in repository to make the installation easier (library called pugixml used to manage xml inside C++ and I will use it to embed the svgs I made), tested if it actually works and yes it works (just tried loading a file), added all the assets to the project directory.

Mikolaj
Mikolaj 53m spent working 84d ago

Had to tweak the colors again to increase contrast, made the sky bigger by reducing number of mountains, fixed one mountain causing water to look less appealing, also added more distant trees (the mountain on the right), and made the cherry blossom tree more minimalistic.

Update attachment
Mikolaj
Mikolaj 18m spent working 85d ago

Set up project in my IDE, installed neccessary libraries (for json (github api) and for xml (modyfying the background)).

Mikolaj
Mikolaj 1h spent working 85d ago

Tweaked colors a little (especially the sky to darker, everything more saturated, rocks now more bluish, made sure the colors are more corresponding to each other, changed gradients), added cherry blossom tree (it will probably be for pull requests), thought more about what each element will be for but its still up for debate, deleted previous water ripples (almost invisible) and made new using ellipses (they are slightly visible with a color similar to the gradient on the mountains). I think its time to finally start coding it.

Update attachment
Mikolaj
Mikolaj 1h spent working 85d ago

Changed the whole color palette of the background, made new rocks from scratch, moved the furthest middle mountain closer to the other mountains next to it, settled on more subtle gradients and removed some gradients completely, repositioned trees to add more space (still I will have to learn how to better position them in near future). The trees are here only for testing purposes to see how they will look like. Also yesterday I had some good ideas for other forest elements.

Update attachment
Mikolaj
Mikolaj 12m spent working 86d ago

Spent this time analyzing what makes my background look less appealing and got it. Also I have some ideas for other forest elements that can appear in the background (as well as github profile README).

Mikolaj
Mikolaj 1h spent working 86d ago

Worked on a background. It still needs some color tweaks (especially foreground). This is a sample background to visualize how the trees will look like on it so they will be removed (and added when certain number of commits is reached). Next I will work on the color tweaks so it looks better and adding new type of forest elements (currently have an idea for one).

Update attachment
Mikolaj
Mikolaj 1h spent working 87d ago

Got the general idea of how the background will look like. Completed the base structure of the tree but it feels too flat. Depending on how the background will turn out I will either change it or make subtle changes (like slight shading, color variation). Also learned how to use the pen tool better. The background needs some more polishing so its far from ready. Reviewed most of the key documentation relevant to this phase of the project.

Update attachment
Mikolaj
Mikolaj 1h spent working 87d ago

Started reading some documentations about embedding many svgs into one, how svg layers work, some common svg tags, how to edit svgs in code and started making background as well as first forest element tree.