DEV Community

Cover image for How do you organize development projects on your computer?
Andrew Mason
Andrew Mason

Posted on • Edited on

How do you organize development projects on your computer?

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! 😱

Latest comments (45)

Collapse
 
nicolasbrousse profile image
Nicolas Brousse

I use ~/Projects as root for all my devops/web projects, like I saw in some other comments.

.
├── _archives
├── _forks
├── _sandox
├── _scripts
├── _tmp
├── ...
├── nicolas-brousse
└── pantographe
Enter fullscreen mode Exit fullscreen mode

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.

p () {
    cd ~/Projects/$1
}
Enter fullscreen mode Exit fullscreen mode

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.

Collapse
 
voanhcuoc profile image
Khoa Che

Zen on minimalism. I have 2 directories: projects for anything I work on and git 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.

Collapse
 
dpashutskii profile image
Dmitrii Pashutskii • Edited

I don't have much of a structure, but if be honest I only have 20-25 repos locally because I periodically clean them up and store everything at GitHub (Just make sure you have a good README to set it up in the future :). I only have local projects which I work with currently.

My structure of folder "Projects":
Freelance - legacy name, but right now it's all projects from work.
Learning - projects from online tutorials/courses
OpenSource - OS projects, in most cases it's clones from the forks
Pet - My pet projects.

Collapse
 
u8nc profile image
MiAn

Code: by project > by year of last edit > version >
Graphics: on separate volume > by project
Translations: in parallel with graphics, but not embedded with them
Other: ( research docs, spreadsheets etc ) by project, again on graphics volume

but what really gets complicated and messy for me is all the web links I collect. I've set browsing history to auto discard after 3 months, because I notice my browser does slow down in loading otherwise.

If there was a way to harmonise my web links with my storage I would even alter my storage schema. Maybe its as simple as taking an extra moment to paste them over to a text file in my Other pile, then I can only keep 2 dozen or so bookmarks.

Collapse
 
earthenexplorer profile image
Aaron • Edited

I tend to try and keep it relatively flat and simple. I have a Projects folder in my user directory and within that I have all my solution folders named using namespaces in the form of {Organisation}.{Project}.{Platform}. I then have a folder called Spikes for any on the side work or experiments that don't have a place yet.

I find this removes any issues of trying to categorise projects or separate them into languages when they may span multiple languages and platforms or having to navigate separate folders for different sources like GitHub etc. It's also easy to sort and get to what you want.

An example would be:

Projects/
----MyCompany.AwesomeApp.Web
----MyCompany.AwesomeApp.Api
----MyCompany.AwesomeApp.Android
----MyCompany.ServiceBus
----RandomClient.CrappyWebsite.Web
----MyPersonalBrand.MyNextBigIdea.Api
----MyPersonalBrand.Auth
----Spikes/
--------RandomIdea.Web
--------ThisWillNeverWork.Api

Collapse
 
tamouse profile image
Tamara Temple

mine is similar to others:

Examples/
— learning and teaching examples, toy apps
Projects/
— side projects
Sites/
— my personal websites
Work/
— stuff i am paid for

A lot of stuff is on GitHub and GitLab, archived. I'm trying not to keep everything I ever wrote on my main computer, but rely on those sites as deep repositories.

Collapse
 
ioveracker profile image
Isaac Overacker

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.

Collapse
 
hopsoft profile image
Hopsoft
~/work/COMPANY_NAME/PROJECT_NAME

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.

Collapse
 
jvr0x profile image
Javier ⚛️

I have few workspaces.

  • ~/github: where I usually clone things from GitHub.
  • ~/AndroidStudioProjects: contains my android apps.
  • ~/FlutterProjects: contains my flutter apps.
  • ~/go: for programs written in golang.
  • ~/dev: contains whatever else that is not flutter nor android, i.e. scripts and such.

Perhaps a bit messy but I haven't had problems navigating this structure.

Curious to know about how others do since I feel this is not optimal.

Collapse
 
jeastham1993 profile image
James Eastham

I tend to have a folder for different bits (full time work, freelance, experimental), client name within that and then the relevant repos.

However, I'm pretty anal about deleting local copies I'm not working on currently.

'tidy desk(top) tidy mind' :-)