DEV Community

Cover image for How do you organize your projects?

How do you organize your projects?

Desi on June 14, 2019

I've been working on a lot of side projects or small apps lately, and I feel like they're all just scattered about - between Codepen, Glitch, Netlify, my own webhost, etc.

It's made me wonder how other people organize or keep track of their apps, and what the best way to kind of "clean up" after myself is!

Collapse
 
cecilelebleu profile image
Cécile Lebleu

One big folder for everything. In there I have 3 main structures.

  • All active, important projects get each their own folder.
  • All tests, small projects, and other small stuff go in one big “Lab” folder.
  • All the completed or finished projects, and also the abandoned projects (or as I like to call them, “Life Lessons”) go into yearly collections/archived. Then, if I’m trying to find an old exercise or a project made back in X year, I can go in and search for it.

What I like about this system is that it allows me to close any projects that don’t spark interest any more or that I finished, and as my main priorities are always visible first, I can focus on more important or relevant projects. I like to forget about projects, and then dig them back up with new eyes, to continue working on them; so I really like archiving what didn’t work and what I’ve already shipped.

Oh and even though some projects have their own git repositories, the whole parent folder is backed up to the cloud constantly.

Collapse
 
ben profile image
Ben Halpern

I like this

Collapse
 
cecilelebleu profile image
Cécile Lebleu

Yay! I’m glad. It’s a system that works for me and ~5 years of design and dev projects, tests, exercises, courses, and crazy inventions. I would make a post about this, do you think it would be interesting or useful for other people?

Thread Thread
 
eoinmurphy profile image
Eoin Murphy

Yes! 🙌

Collapse
 
devanghingu profile image
Devang Hingu

i read that your post about project structure and it's amazing

Collapse
 
cecilelebleu profile image
Cécile Lebleu

Thanks Devang!

Collapse
 
dizid profile image
Marc de Ruyter

Hi, which cloud backup do you use for that? Automatically?

Collapse
 
cecilelebleu profile image
Cécile Lebleu

I have iCloud set up to back up automatically.

However, I've noticed that iCloud really doesn't get along with Git. iCloud prefers large individual files, so having lots of small files constantly changing often takes up a lot of resources to back it all up.

To fix this, I have set up another folder, outside of iCloud, to keep my npm and Git projects. Then I have two ways of backing that up: GitHub (or similar) would be the obvious choice, but I prefer to keep most of my projects private (I'm just not so used to GitHub yet); every once in a while I zip up the project folder and move the zip to the main projects folder in iCloud. Then it backs up automatically as one large file.

I'm still figuring out the backup system. My next plan is to try out Dropbox, see if it gets along with Git. Otherwise, I might as well just get the projects onto GitHub. I'm not sure yet; but for now, this system works for me! :)

Thread Thread
 
dizid profile image
Marc de Ruyter

Thanks for your reply.
I am also figuring out a good way to use github / cloud backup.
With github, you have to really pay attention to your .gitignore, but you already knew that :)

Thread Thread
 
mateiadrielrafael profile image
Matei Adriel

Also, github private repos are free now;)

Thread Thread
 
brettsschmidt profile image
Brett Schmidt

I liked AWS S3 for full back ups. S3 Sync maintains all the git goodness.

Collapse
 
cecilelebleu profile image
Cécile Lebleu
Thread Thread
 
sinewalker profile image
Mike Lockhart

Awesome. GitLab has private repos, or if you don't want something like GitHub / GitLab, try out Keybase, which has an encrypted filesystem (online only, doesn't synch like iCloud or Dropbox) and git integration. They use AWS for their backing store, currently 250G I think

keybase.io/docs/git/index

Collapse
 
ben profile image
Ben Halpern

I try to go fairly flat with my folder structure. One big folder called dev, which covers pretty much anything. Each folder therein usually maps to a git repo.

Collapse
 
cescquintero profile image
Francisco Quintero 🇨🇴

Same approach. My folder is named ~/projects/ instead.

Collapse
 
gregruminski profile image
Greg Ruminski

Ben, I am curious about "maps to a git repo". Does the folder contain symlinks or was it a figure of speech?

Collapse
 
niorad profile image
Antonio Radovcic

By level of seriousness:

  1. Folder on desktop (let's try this idea)
  2. Folder in Dropbox (I think I'm keeping this)
  3. Local Git-Repo in Dropbox (This is going somewhere..)
  4. Private GitHub-Repo (LET'S DO IT)
  5. Public GitHub-Repo (Rarely)
Collapse
 
fultonbrowne profile image
Fulton Browne

I use GitHub to store and organize my code i have a main branch and three test branches i use to test multiple ideas simultaneously. to test builds i use circleci and azure pipelines. to keep stuff organized i pin the repos i am working on and create projects and reminders in azure boards to keep me organized and up to date. make note and reminder with onenote, evernote , or something similar to keep track of what needs to be done and how to do it. also clean out unnecessary commits and TODOS. hope this helps!

Collapse
 
cescquintero profile image
Francisco Quintero 🇨🇴

In all computers I work on there is a projects folder in the user's folder:

# Linux Mint

/home/cesc/projects/

# Mac

/Users/[macuser]/projects

Then, I'd usually add a folder per project and as time has passed, many of them have been grouped into bigger initiatives named after two fictional companies I own ~/projects/devaspros-projects/, etc.

Every project would normally have a github/bitbucket repo. Even smaller ones. I never miss a change to practice git commit often.

In the end, those projects are used to be showcase when applying to other companies or to show teammates how something was done.

Finally, I also find myself making a Trello board per project to organize tasks, paste links for concepts/answers/solutions while working on those tasks, and comments to myself. Kind of a self-documented process.

Collapse
 
flrnd profile image
Florian Rand

Hi Desi, if this makes you feel better, I have a collection of projects spreaded between GitHub, Gitlab, different machines at home, pen drives... And some place I don't remember

Collapse
 
programazing profile image
Christopher C. Johnson

Everything goes into a git repo on GitHub, public or private, and get its own page in Notion.

If it's client work I tend to use Azure DevOps which used to be called Visual Studio Team Services (VSTS) which was basically an online version of TFS (Team Foundation Server).

Yay history lessons.

Collapse
 
skryking profile image
Jason Ormes

I develop using virtual machines so everything from a project goes inside and doesn't mix with others.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt

I really suggest /projects/ folder with Docker, but using VirtualBox-managed VM is fine too.

Collapse
 
itachiuchiha profile image
Itachi Uchiha

Do you have any example like screenshots? I really need these kinds of environments.

Collapse
 
skryking profile image
Jason Ormes

I don't know if screenshots would help much. I use Linux as my primary workstation so I just did some googling to figure out how to install KVM(Virtualization software) then downloaded Ubuntu and installed it. I do my work inside the graphical environment with whatever tools I need at the given moment. doing it this way I start with a clean slate every time.

Thread Thread
 
itachiuchiha profile image
Itachi Uchiha

Okay, thanks. I need to do this.

Thread Thread
 
skryking profile image
Jason Ormes

one thing that does make it faster for me is that I created a virtual machine with all my most common tools...editors, browsers, compilers..etc and then I just clone it when I am setting up a new project.

Thread Thread
 
skryking profile image
Jason Ormes

Let me know if you get stuck on anything and I can try to help you through it.

Thread Thread
 
itachiuchiha profile image
Itachi Uchiha

Thanks :) I decided to use GNOME Boxes.

I installed it :)

I didn't want to deploy my projects to my machine.

Did you use it? If so, how can access a virtual machine IP from my machine.

Thanks :)

Thread Thread
 
skryking profile image
Jason Ormes

I have not but it looks to just be a front end for kvm. If you type ifconfig in your virtual machine you should be able to use the address to access it from your host machine.

Thread Thread
 
itachiuchiha profile image
Itachi Uchiha

Okay :) Thanks. I'll try :)

Collapse
 
mehdishahdoost profile image
Mehdi Shahdoost

I have a below structure for managing my projects and resources:

workspace/
workspace/ebooks
workspace/projects
workspace/projects/personal
workspace/projects/experimental
workspace/projects/[projectName]
workspace/documents
workspace/ui
workspace/ui/icons
workspace/ui/images
workspace/tools-software

Collapse
 
shijiezhou profile image
Shijie Zhou • Edited

I think you can use tree structure to organize your job which it helps you find the project easily

Directory:

src/codepen
src/glitch
src/netlift
src/webhost
src/content
src/project
Collapse
 
taufik_nurrohman profile image
Taufik Nurrohman

Nothing special. Just a bunch of project folders in a workspace. Will move the older projects that I don’t want to touch anymore to a separate folder outside the workspace folder. I may give a name to it with time format like projects-2019-09-08.

Collapse
 
davidcanhelp profile image
David Christian Liedle • Edited

I use a system I developed around 2008 that has been working ever since: organize all versioned projects under ~/vcs/, and reproduce the trees in real life hierarchically by version control system and service, thus:

  • ~/vcs/git/github/DavidLiedle/polyglot-test
  • ~/vcs/git/gitlab/DavidCanHelp/whatever-private-repo-is-here
  • ~/vcs/hg/bitbucket/DavidLiedle/projects-from-2011-2012 :D
  • ~/vcs/svn/omg/lol/projects-from-waaaay-before
  • etc...

This doesn't track what I'm planning, working on, or putting off for awkwardly large portions of a given decade, so for that I create PivotalTracker boards. I treat every project like a company, and the ones that get 86'd go into an _archive folder within their respective trees. I use DynaList ( dynalist.io/ ) to keep a birds-eye view of everything, and AirTable to get really granular with larger sets of information I need to correlate to a project. That helps me remember to follow up on CodePens, Glitch's, etc. Not saying I actually do follow up on them... It's not for lack of having them close at hand, though. :)

Collapse
 
andyhaskell profile image
Andy Haskell

What I'm trying with my blogging is carry a little notebook and have a couple pages reserved for each side project or blog post, like so I can write ideas related to each one as they come and later turn them into Trello cards or outline items. I'm just starting this though so not sure how it'll go but I think for me the hard part with getting ideas is figuring out where to put them, so I'm hoping this would help with that

Collapse
 
sinewalker profile image
Mike Lockhart

There are some great ideas in these comments for organising projects on your workstation and in source control.

For organising an online portfolio I think one of the simplest ways is to have a small static web site where you can group your creations, with links to where they live.

So that way, if you have stuff on Netlify, and Codepen, and GitHub Pages, or a Scratch project, or some music you coded in Sonic Pi with the code as a Gist and the demo on SoundCloud, you can tie it all together under a project in your portfolio.

If your are a sysadmin who develops on the side, it's also nice to show off your sysadmin toolbox - some dotfiles projects with links to blog posts about them.

At least, that is where I'm aiming to go. I'm pretty motivated after reading everyone's comments here.

Collapse
 
bahreex profile image
Arjun Bahree

I have a "Workspace" folder containing everything for me. This folder syncs with Dropbox, GDrive, and OneDrive (as well as my Synology 24TB NAS) every Hour using SyncBackup and in Zip format to ensure space optimization. Recently I also added a backup option to Azure Storage - Call me paranoid, if you will :-)

This folder has several second-level technology-specific folders I work across like "Python", "Java", "Go", "C#", "Rust", "PowerShell", "Bash", "JavaScript", "Node.js" etc.

Each folder has a set of fixed folders like this:

  • Books, Videos, Podcasts, Resources, Projects, Tools, Snippets

There is respective hierarchy under each of the above set of folders, but we will see here what's under the Projects folder as that is specific to the question, and where I have another classification of folders like:

  • Official, Labs, Personal, Archives, Forks, Samples

I selectively sync my public personal projects with GitHub (under an unassuming pseudo), sync my official projects on my company Azure Repos, and sync my private personal projects with GitHub private repos and also a GitLab instance on my NAS -

Collapse
 
dizid profile image
Marc de Ruyter

Wow

Collapse
 
nuwannnz profile image
Nuwan Karunarathna

One big 'Projects' folder and inside 3 folders.

  • 'work', freelance client projects
  • 'personal', my personal hobby/pet projects
  • 'sandbox', my playground projects to test out new things
Collapse
 
creekorful profile image
Aloïs Micard

I'm personally using a tool I'm working on: github.com/creekorful/codebase

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt

Lately, I use Lerna / Yarn Workspaces and linting config at root a lot.

Historically, I use ~/GitHubProjects/ folders; but I cannot do this for Golang.