Automating Project Setups: The Newproj Command
I've always had a low tolerance for repetitive work. My natural "laziness" pushes me to find more efficient solutions, regardless of the task. Years ago, after reading Automate the Boring Stuff with Python , the idea of using code to streamline my workflow really stuck with me.
The first time I put this into practice was during my Master's thesis in Finance, when I programmed a Monte Carlo simulation (see the project here ). Manually checking and interpreting results became tedious, so I automated the text generation. It wasn't easy, but it was exciting. The concept lingered with me, shaping my approach ever since.
I took this mindset into my second Master's (Applied Economics) and my work as a research assistant. I automated some of my manual tasks, built Stata workflows to generate tables and figures, and eventually wrote my own Stata commands (see details). Some colleagues found my approach overly complex, but I saw the tradeoff: while simpler code is easier to write, utilising my custom made commands saved time and improved code maintability.
Why Standardized Project Setups Matter
As I took on more consulting and research projects, I realized that project management and file organization had become new bottlenecks. I'd lost track of earlier automation scripts and data visualizations, wasting time hunting for files and trying to remember what I'd done before. I needed a better system—especially as I move into my PhD, where clear organization and the ability to collaborate are crucial.
That's when the analogy of containerization in shipping struck me. Containerization is a simple yet effective solution: by standardizing cargo sizes, it unlocked huge productivity gains through small, cumulative improvements—much more powerful than any one-off, complex change. In the same way, streamlining and templatizing project setups can unlock compounding productivity gains and make teamwork dramatically easier.
Introducing newproj: Fast, Repeatable Project Setup
That's why I built newproj—a command-line tool to templatize project setup and organization. With newproj, you can spin up standardized project folders, reduce busywork, and set yourself (and your collaborators) up for success. The tool is open-source; you can check out the repository on
GitHub.
How to Use newproj ?
-
Install (editable version for live tweaking):
git clone https://github.com/zeinalamah/newproj_command cd newproj pip install --user -e .
Want a fixed install? Just drop the-eflag. -
Check your templates:
newproj list # names only newproj show Academic # visual tree -
Create a project:
That command creates:newproj create -n "ClimateImpact" -t Academic --git --datestamp
ClimateImpact_2025-06-15/ ├─ data/ raw • processed ├─ code/ scripts • notebooks ├─ results/ figures • tables ├─ writing/ manuscript • refs • notes.md ├─ slides/ assets ├─ .gitignore └─ README.mdDirectly opening the folder so you can get on with real work. -
Customize or extend:
Templates live innewproj add -t Workshop --items "data,code,docs/readme.md" newproj rename Workshop Trainingproject_templates.json, so manual edits are just as easy.
The Value of Small, Repeatable Wins
Like containerization, a simple, standardized approach can yield powerful,
compounding productivity gains.
newproj isn't a sophisticated tool.
It's a simple solution that paves the way for setting up more efficient workflows
through standardizing project organization. Whether you're collaborating or working solo,
it's a small change that pays off over time.
This is especially true if you integrate it with other customized tools, or utilize version control
to track changes.
If you're interested, you can try newproj or contribute via this
GitHub repo.