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.
cskartikey
Check their project out: The Journey
ayaangrover
Check their projects out: Lumen, Obsidian One
guac md
Whoops! Looks like they don't have a project yet. Maybe ask them to start one?
ILikeMice
Check their project out: EP-01 finale
somebody else
Check their project out: Escape room in slack
Neon
Check their projects out: Hacker news checker, Market , Artophage, Slack - Zeon
Swayam Sahoo
Whoops! Looks like they don't have a project yet. Maybe ask them to start one?
Praveenkushinpi
Check their project out: ZenZ
Rino
Check their project out: ODe - Music Cards from YTMusic
Howard Wu
Whoops! Looks like they don't have a project yet. Maybe ask them to start one?
Ivan
Check their project out: SillyRobotGame
Devarsh
Check their project out: StickerBot
JaTar
Check their project out: TickBack
Dumi
Check their project out: Eclipse BBS
Aahil
Check their project out: LED Memory Game Arduino Nano
blu
Check their projects out: My first Astro project!, dhyans.xyz
felix
Check their project out: Chronoelegy
logabe
Check their project out: Contraptions
Leo
Check their projects out: GOV.UK, but it's personal, Wise Tools
kzlpndx
Whoops! Looks like they don't have a project yet. Maybe ask them to start one?
khang200923
Whoops! Looks like they don't have a project yet. Maybe ask them to start one?
By shipping your project, you're marking it as complete and it'll enter matchmaking. However, you will NOT be able to edit it anymore.
Project is ready to ship!
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.
Added this to the README.
Added a profile README with GitForest and updated actual GitForest README.
Fixed the file clearing method. Resolved my first git conflicts.
I messed up the file clearing (after the forest fills up). Ill try to fix it tomorrow.
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.
Made 3 variations to the purple one I made first to add some customization. I have not yet integrated it.
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)
Two workflow runs worked (and updated the svg). The 3 above failed because I messed up in the tests directory.
Results of the tests:
- one yaml script works and the other doesnt
Currently trying to fix it
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.
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.
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.
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.
Passed another section of tests this time for saving and loading json files. Refactored the code in JsonFileManager class (replaced exit(1) with throws).
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.
Passed 2 sections of tests with 0ms. I will replace some/all of the exit(1) with std::throw.
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.
Refactored function for unit testing. Added some testcases but didnt test it yet.
Implemented load and save functions for JsonFileManager class, fixed one more incorrect path to svg file.
Managed to get tree placing working (partly), fixed paths to the sprites, removed width and height arguments from the instantiate function (in Sprite class).
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.
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.
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).
Minor color tweaks (mountains and cherry blossom tree) and added another ripple.
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.
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.
Set up project in my IDE, installed neccessary libraries (for json (github api) and for xml (modyfying the background)).
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.
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.
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).
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).
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.
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.
it takes that long cause on every run it downloads prerequisities (for example cmake)