DEV Community

Cover image for How do you organize pet-projects?
Madza
Madza

Posted on • Updated on

How do you organize pet-projects?

Pet-projects are useful to explore new technologies, to experiment with new features and approaches, and to get down the basics before diving into more advanced projects.

It might be a simple app or anything else with no serious use. Based on your learning path, you might do lots of them and your workspace can get a mess pretty quickly. So how do you organize them?

Do you develop them locally and then delete them or maybe leave them hoping you will add features later on when re-visiting?

Do you prefer to use some online sandboxes like Codepen or CodeSandBox instead, cause of easy set-up, access and no local mess?

Maybe you create a GitHub repo for each for version control/branches for experimenting and clone options later if you delete the local repo?

Or maybe you try to develop them into something useful, host them on Netlify (or services like Heroku for backend) and add them to your portfolio?

Top comments (17)

Collapse
 
patriscus profile image
Patrick Ahmetovic • Edited

For really small stuff (say like trying out a JS method or property) I usually use CodePen. For experimental stuff I have a projects directory. Should a project in there become bigger and is going beyond just trying out stuff, I move it to a repo directory and initialize a git repo. This way I kind of have a mental separation on what's just for testing and I also know which projects are actually a repo (on which I can rely to be backed up).

Collapse
 
yaythomas profile image
yaythomas • Edited

I keep a local scratch dir, which is pretty a much a pile of work-in-progress, experiments and things that break everything. A scratch-pad, even. πŸ˜‚

For work with any permanence, that goes into a very well organised source/git dir, with sub-dirs for owner/org and then repo.

Work-in-progress goes on feature branches in git. If it's really just some wild experimentation, I might not push these up, so these might just be local branches - but even so, the git diff/compare functionality is very useful, also commits & rollbacks while still experimenting.

If the work-in-progress reaches a point of sensible stability, or where I would get annoyed if I lost it even if it's not "complete", push it up.

Collapse
 
jeremyjaydan profile image
Jeremy J Parmenter

discovery is also a great term!

Collapse
 
gsarig profile image
Giorgos Sarigiannidis • Edited

The bigger ones are developed locally and then get pushed on my GitHub.
Smaller ones are either gists or in CodePen, or, on some cases, on a tools section in my website. I also try to accompany new pet projects and experiments with dedicated blog posts.

Collapse
 
raguay profile image
Richard Guay • Edited

My main pet project is called ScriptPad because it contains all my small scripts that I write to manipulate text and process information. It allows me to run these smaller pet projects on any clipboard or file. It even interacts with Alfred, Launchbar, Keyboard Maestro, Dropzone, and PopClip. It also uses the scripts from Node-Red in the built in Node-Red server and is displayable in the menubar similar to BitBar. I’ve used it in my daily workflows as well.

It’s on a private GitHub repository with many branches of other tests that I keep trying to clean up. I manage the compiling of the code with Mask. I usually organize all my projects by language in the local directory that is backup continuously by Dropbox.

Collapse
 
stpaulis profile image
St Paulis • Edited

Every time I want to set up something new, I create a new cloud repository and clone it to my PC and working and sync everything in.

Events tasks, todos etc.

Once every while, I review my repositories and delete everything that is not worth keeping.

Collapse
 
scroung720 profile image
scroung720 • Edited

My style to organize projects cover 2 necessities:
1)Been organized.
2)Avoid working with extra long paths on your console and editor.

I have a folder structure something like:
~/programming/projects/personal/[coursera|udemy|tutorial|freecamp|frontendmaster...etc]
and inside each folder I create a specific folder for the course or tutorial.
This create a large path when working in console so what i do is to create a simlink to the home directory and I like to name the folder in home very short for example if I am doing a course on Vue 3 about the Composition API from Vue Mastery I would do the following:
Vue3 Project:
~/programming/projects/personal/vueMastery/course/vue3CompositionApi
my simlink in my home will be:
~/v3c

Then I work with the simlink in vscode and the console, hiding implementation details as a good developer πŸ€“ When I finish with the course I deleted the folder from my home directory and let the original as reference.

Btw I also create repositories in my github account for everything.

Collapse
 
zhabinsky profile image
Vlad Zhabinsky • Edited

First of all, any project is its own repo, even if it's local stuff on my machine which I'm never going to publish.
Because it's important NOT TO LOOSE CODE over accidental file delete or change

~/coding directory for anything development-related

~/coding/to-be-developed/* stand-alone projects that are put aside for some time
~/coding/* stand-alone projects that are now in active development or maintenance
~/coding/open-source/* other people's open source projects
~/coding/packages/* public utilities, tools, packages I published
~/coding/abandoned/* stuff to never be maintained
~/coding/job-applications/* stuff I did to get a job

Collapse
 
sebbdk profile image
Sebastian Vargr • Edited

Git, and a local projects folder.
When i get too many, i move the older ones into a archived sub-folder.

Now that Github has free private repo's it became easier.
Before that, I used to use bitbucket for none public stuff.

Having it all in one place is nice though.


Going off on a tangent...
I am still working on what to do with binaries like docker images, game builds etc.

I've got a docker based home server I am considering, but no proper backup for it, only synced copies.

Maybe I should just give in and buy a NAS.
That would only leave the problem of offsite & a different medium.

Collapse
 
psiho profile image
Mirko Vukuőić

Been there. UnRaid on small local servers works really really nice and no fuss with raid setup or disk/memory costs for FreeNAS

Collapse
 
yoursunny profile image
Junxiao Shi • Edited

My tiny one-off projects are turned into blog posts.
yoursunny.com/t/2018/EmojiTetra-OLED/

When I explore hardware devices, each device type gets a GitHub repository, with projects in disjoint branches, so that I don't end up with too many repositories.
github.com/yoursunny/w600/tree/wea...

Collapse
 
psiho profile image
Mirko VukuΕ‘iΔ‡ • Edited

Local /home/work folder for projects. Everything to GitHub. Development and testing locally on home server using Docker (Xeon, UnRaid server). Remotely usually Netlify or AWS (have one small server again with Docker on RancherOS).

Collapse
 
corentinbettiol profile image
Corentin Bettiol • Edited

I create a folder, and start to code.

If I return into this folder, then I create a new repo on git(hub|lab) and I push it. I delete older folders from time to time.

Collapse
 
pengeszikra profile image
Peter Vivo

github pet-projects, some one stay for years, couple of private, but the most is public, my secret upcoming one is: react-troll

Collapse
 
hyaovi profile image
Yaovi • Edited

I too have a "box" folder where I throw everything in it. Online ide are cool but I still more comfortable messing around on my own machine

Collapse
 
rochapablo profile image
Pablo

I would like to ask... how do you usually manage the time you spend in these pet-projects?

Collapse
 
raguay profile image
Richard Guay

Randomly! 😁