This week I'd like to share my project filesystem, how I manage it, and why I do it this way. My intention is not to say "this is the best filesystem" or "you should manage your files this way", because different people will need different methods, and there is rarely a true one-size-fits-all approach —to anything. That said, this is the system that works for me, and that I've developed over the past 5+ years. Use it, modify it, and leave a like if you find it useful!
For a bit of background, I am a designer before being a developer, have been at it since around 2014, when I started drawing letters, learning graphic design and brand identity design. I have been developing (and therefore having to manage files for) very different types of projects throughout the years, including designing a wonderful card game about cyber witches, and helping design a diary app interface design.
Since I started becoming a dev, I've modified my folder system to better fit a developer's needs, like easier access through the command line and IDEs, Git, and so on.
Without further adieu, let's get to it. I promise—it's not complicated. We'll be tackling from the top down, from high level to detail. I'm on a Mac, but this system is relatively basic and can be implemented in any OS or environment.
My Project Management Filesystem
First of all, the most important folder: allProjects
. Here, you guessed it, are all my projects. This folder is constantly backed up in two clouds (in case hell's fire rains on one cloud, the other cloud, or my local computer). This is the main, the favorite, the first folder I see when I open a finder window, command line, and editor.
In there, there are three folders: +Archives
, +Lab
, and +Study
, followed by around 10 project folders. Let's look at each of the three main folders in detail. I put a +
sign before the names so they'll always appear first.
v allProjects
| > +Archives
| > +Lab
| > +Study
| > ActiveProject
...
| > AnotherActiveProject
-
+Archives
contains all the projects that are completed, paused, or abandoned. In it, you'll find yearly folders, from2014
to2019
. Each of these contains one folder for each project that has been successfully completed and delivered, or any personal projects that are abandoned, or the most common, paused until I know how to do it. -
+Lab
contains all the crazy creatures I'm imagining. Ideas, half-built things, apps in the earliest stages of development, and designs that only have a few letters drawn. I tend to keep each idea or creation in its own folder to keep it tidy. -
+Study
is just as important. As any dev, I'm always learning. Here, I have a folder with the name of each platform I'm taking courses on. Let's take... Per's Scrimba. In myScrimba
folder, I have a markdown file for each course or path, where I take notes, code snippets, summaries, etc. If it's a particularly big course, I may have a folder with multiple markdown files in it. Whenever I'm studying, I put my editor and browser side-by-side on full screen, and take notes while I go.
I mentioned I also have other folders next to the three +
folders. These are all my active projects. This is my main working area, my priority. Whether they are client projects, projects with my partner, or projects of my own — if I'm working on it, it's here. It's at plain sight, so I know right away what I'm working on. When a small creature from the +Lab
grows enough, I move it out into this wild area. If one of these projects goes for a while without updates, if I'm getting bored of it, or if I just can't continue without first learning something else, I move it into the +Archives
. Also, I often take projects out of the archives and back to this main area, if I decide I want to start working on it again.
Individual project folders
Most of the time, I'm working on projects located in my main working area. But I also play around in the +Lab
and I spend a few hours every day in the +Study
area.
Each of the project folders has a mind of its own. No two projects are alike, so project folders tend to vary. When it's a development project, I'll usually set up a git repository in the project folder. But git with design projects is a big no-no — file sizes tend to grow enormously. Some can be connected to GitHub, but it really depends on the nature of the project. Some project folders have only one or two files, others can have multiple folder levels down and gigabytes of files.
Visual Tree (TL;DR)
For us visual people, and for those who just want to see it, here's a visual outline.
v allProjects
| v +Archives
| | > 2014
| | > 2015
| | > 2016
| | > 2017
| | v 2018
| | | > FinishedProject
| | | > FinishedClientProject
| | | > PausedProject
| | > 2019
| v +Lab
| | > SomeTest
| | > SomeOtherInvention
| v +Study
| | > CodeCademy
| | > CS50
| | > FCC
| | > Scrimba
| | > Udemy
| > ActiveProject
| > ClientProject
| > AnotherActiveProject
| | > ProjectSubfolder
| > OneMoreActiveProject
| v Website
| | index.html
| | style.css
| > PersonalProject
...
Notes
Although Scrimba has its own note-taking and bookmarking tool, I like to take notes locally from every course where I learn something new. It's easier to find my notes and search through them, and I don't need an internet connection.
Top comments (15)
I also use that year folder structure you show. I like the + sign hack on the name of the folder. I like to name folders with the name and lastname of clients. Often, one client might have several projects. (So one folder per project inside the client's folder) That way if a costumer calls me 3 years later i can find everything about him/her (no matter how many projects we did) in one single folder.
That's a very nice way of managing client projects! I will definitely incorporate that into my structure.
How do you find a project when you have been working for a few years with one client? I have, for example, one client since 2015 so I have a folder with their name in each of the folders for 2015, 2016...2019. But then it gets a bit difficult to remember when I did this or that project and I have to go back through each year to find it. Do you have any tips for that?
This is the reason why I don't like to nest project in year folders, but rather prefer to append the year as a prefix to the name of the archived project folder – or even year and month with YYMM, like "1705-projectName" for May 2017. But you could use "2017_projectName" too, to make the year more visible. And if you consider bulking renaming like that, some utilities do allow that.
So, I can have an overview of all the projects at once. It makes them easier to find.
And thanks for your article!
I like the + sign, I did use underscore to achieve the same purpose, but it was a bit confusing with underscore also used as a separator. So I'm taking you this tip. ;-)
update: The prepended "+" plus sign caused me here and there some troubles with IDEs, so I got back to "_" underscore :-)
I'm curious, Why do you
camelCase
some directories andTitleCase
others?I always use
lowercase_underscore
though this is because of working in unix based systems where spaces and casing can create serious headaches.Interesting question! I think only
allProjects
is camel cased, it's the main folder I navigate to. It's just easier to type. I had it originally asAllProjects
but kept mistyping it. I generally useTitleCase
, it's easy to read and write, but sometimes will use capitalized snake case for client projects (asClient_Project_Name
), because I've noticed it's easier for clients to read when they receive their files, but doesn't use spaces.right.. i also ignore space too..
Spot on. Your description of this fundamental concept is quite elegant. I have been keeping each project on a different team drive. I am inspired now to bring them all together using your top level structure.
Hey Cécile, great article! I use a very similar folder structure, I like the lab and study idea!
How do you organize your projects folder? All my projects have this structure, but this is from a designer point of view, so you probably are already familiar:
Thanks for sharing this!
Thanks for commenting!
Each project folder has its own structure. Clients can be very different in requirements or preferences, and a small personal project isn't going to require the same structure as a large brand development, print, and web design project.
For example, if I'm designing a brand identity, I'll have a
Resources
folder with what the client provided, thenExploration
for inspiration, moodboard, and so on;Process
with all the design process files (often a base file with_01
,_02
... appended to the end to track the design changes over time). And then aDeliverables
folder, where I put the files I send over to the client. If they need it again, I can send the same files, or if I need the files again — say, if I'm designing something else for them and need the final logotype file.But if I'm making a website, I will usually have two folders,
Design
andDev
. InDesign
, a Sketch file, images, resources, etc. InDev
, the actual website files (html, css, js, sized images, etc) and a git repository to track versions.Versioning and tracking modifications is completely different for design and programming, and the amount of organization and sub-folders required can vary wildly between projects! I don't think I could make, at this point, a standard filesystem for individual projects. I could perhaps have a system for different types of projects, but it would be more of a distraction than a solution, because of how different even two "similar" projects can be.
Wonderful! I was curious and is interesting how people organize things. Let me explain why I use that structure always.
First, I use 00 01 and so on because usually, those folders depend on job phases.
00_Documentation has every document, contract, briefing, email copies, and very important: research related to that project.
01_Resources stores both client and stock resources.
02_Prototypes is where the first fast ideas are developed based on the first briefing and research. This is to avoid what you explained of having files with numbers for changes. That happens when the project is not well defined, yes, changes happen but only one revision or two, more than that means that the project is going wild.
03_Development is the product phase. Be it a new brand or a digital product like a website.
04_Print only in projects with printing material.
05_Final well, finished product to deliver.
Also is easy to explain to new people to the project and this maintains coherence, something important when you don't work alone.
Anyway, it's great how you organize everything! You have every detail in mind!!! Thanks for sharing it!
It’s a very interesting approach. I will be definitely trying this with my next project. Thanks!
Thank you for sharing this, it never occurred to me to have an archive by year structure, now it seems so sensible that I can only slap myself about the head and start using it.
You have inspired me to dive into my nightmare folder of ideas, learning and experiments. Time to organize them.
I'm glad! Good luck, and feel free to modify the system to your liking. The most important thing, in the end, is to find what works for you, and stick to it in the longer term!
wow...!! it inspired me and i think it will help me.
i just have another questions..!
How you manage all notes, social media and all thing like that which help into a work ??..(i mean all resources which helps in current work)