I have tried different methods to keep development projects on my computer organized but between work projects, open source, side projects, issue reproductions, demos, and little test projects, it gets tough. I did a quick peruse through my computer and counted over 100 repos (some on GitHub, some not). They are all over the place, and I have only had this computer for 3 months! 😱
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (46)
~
Code
Sites
Work
I tried many complicated systems to separate by content type, language, platform, etc. They always ended up becoming aggravating over time.
Ironically, this more-or-less reflects the 'feature based' directory convention I use for web dev.
I aggressively curate this; as well as my GH repos.
I never fork a project unless I'm going to contribute to it or I neeed a custom fork. Custom forks should -- ideally -- be killed as soon as I find a workable alternative.
I don't hold on to forks of all the projects I've contributed to. Best case scenario, it becomes a big pile of outdated trash. If I want to look up something I worked on in the past, it's all recorded and reaadily available online.
I don't keep a collection of snippets either
My motto is...
I'd rather master the ability to quickly and efficiently locate info on anything. Than be a master archivist of bit rotten code that only I care about.
Digital hoarding is still hoarding. I treat my local setup like a desktop. Keep it as free of clutter as possible so I have more (mental) space to work.
I might borrow from this method. Currently, I store everything by language, but that always gets unwieldy after a while as you have said.
I hear you on the digital hoarding— it's a hard habit to break since it's mainly invisible
Incredibly helpful, thanks for a detailed response. I caught myself with lots of forks and created a ruby gem (Dishwasher) to help me bulk delete them.
Thanks for sharing your insights Evan.
I totally agree, the feature-based convection is really cool and easy to use.
I am definitely borrowing this method. Thanks sharing
I have different folders on my C drive: ‘Projects’ for my work projects, ‘Side projects’ for my work related side project, ‘Personal projects’ for my personal projects and sonon. Each project has a root folder (named after the project) inside the allocated folder(e.g. Personal projects), which contains ALL the files related (git, src and other files) to that project (since I’m a web dev, it also contains the webroot of that site). Then every root project folder has a different icon (for clients it is the client logo, otherwise it is a related icon). Hope this helps you out!
The icon trick is a good idea - I’ll have to try that. I had a similar structure at one point that quickly fell apart. I probably need to figure out exactly why it fell apart and address that. And I probably need to delete some projects I have hanging around
Yeah, the icons are a great help and the folders are quite okay, the only issue is that aside from tons of files I have alot of services running per project (a db, an indexing servie, iis website etc) which fry my pc alot, the way I solved that was to by default not start the process (classic windows config) and I crated a star script which I run when I start a project. In the future I might create a ui for this.
Take a look at Docker. I had the same problem and Docker was the solution.
Great idea about the folder icon! Thank you! I take a similar approach, but I house all named sub-folders in one
Dev
parent directory on my hard drive.Icons? Where do you source them from?
I download them onto my pc, but since I am a Webdev I often pick the favicon of the project as it is more recognizable.
Ah! Makes sense, being primarily a data developer, I don't get so many...
You can also use some default windows icons if you don't have any yourself
I usually try to keep it simple. I have a
Development
directory with all the repos and projects. Sometimes I add another dir in-between for projects with more than one repo.I usually navigate with terminal and I've oh-my-zsh installed with fuzzy completion, so it's enough to remember even a tiny bit of the folder name.
Do you use ‘Z’? Honestly, the only reason I can find anything is because I use this tool. It’s definitely something that I can’t do without at this point.
Not sure if I heard about it. Could you please send a link?
github.com/rupa/z
It’s zsh plugin to help you navigate your files via the command line by learning the ways you want to access a certain folder and providing that shortcut.
For instance, when I want to go to CodeFund’s codebase on my computer, I type
z code
in my command line and cd’s me right to the project, which the real path is~/work/gitcoin/code_fund_ads
(I think, I’ve accessed it with z since day 1).I have a GitHub action for rubocop and a demo app for trying to recreate bugs people report for it which I can get to with
z rubocop action
andz rubocop playground
respectively.It’s an amazing tool and I can’t imagine not having it at this point. Let me know if I can say more! 😁
It’s also perfect for me because I can never remember where anything is. Whether it’s a folder on my computer or my car keys, I can lose anything. Z helps me not lose things on my computer. As for my car keys though... 😬
Thanks for sharing! I'll give it a go
I keep all of my projects in
~/Source/
organized in the same way that they're organized on GitHub:~/Source/${organization-name}/${repo-name}
. Everything I work on ends up in a private or public GitHub repo, so this makes it simple to find what I'm looking for and to remember where it exists on GitHub. For temporary projects / scratch space, I put those under~/Source/tmp/
and clear it out frequently to keep it from getting out of hand.I use this pattern for everything. Primary work projects, consulting projects, personal projects, github forks, etc... Namespacing via company/user + project seems to cover pretty much everything I've encountered.
Zen on minimalism. I have 2 directories:
projects
for anything I work on andgit
for any repo I cloned to use. I try to name my projects smartly so the autocomplete works, and just delete any repo I'm not working on for a month from now, I can clone it again any time I want. Test projects are in~/temp
dir which is completely fine to be deleted, if some are crucial, put it in a repo that makes use of it.I basically follow the GOPATH structure for everything because I like it.
I usually have an Engineering folder in my user directory, under that, folders for languages, under those, at least a "src" folder, under that, the root VCS name (e.g. - GitHub.com), under that, my user name at said VCS, under that, my repo names.
It feels awkward at first, but it's been the only thing that has stuck with me.
I keep a 'workspace' directory in my user directory so that work computer migrations will pick them up. It is then broken down by team name, with my github account name as a team. Everything fits into this for me. If you have too man (I only have around 20) then you could break down by various means such as language or framework.
I use
~/Projects
as root for all my devops/web projects, like I saw in some other comments.First folder (all who start without
_
) is always "organization" mainly its a client name. I do the same inside_forks
that contain GitHub project I contribute. The inside an "organization" folder its the project name (ex:pantographe/website
).I also have a
p
alias to quickly go into a project.I try to take time to move older projects in
_archives
, then after some time, I move them to my NAS or delete them to free some space on my laptop.Same here, actual coding is the easiest part.
Hardest part has always been setting up projects and keeping them organized.
Absolutely. I find myself fighting tools much more than I’d like.