Skip to main content

Automating Project Setups: The Newproj Command

June 15, 2025
4 min read
Project

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 -e flag.
  • Check your templates:
    newproj list           # names only
    newproj show Academic  # visual tree
  • Create a project:
    newproj create -n "ClimateImpact" -t Academic --git --datestamp
    
    That command creates:

    ClimateImpact_2025-06-15/
    ├─ data/       raw • processed
    ├─ code/       scripts • notebooks
    ├─ results/    figures • tables
    ├─ writing/    manuscript • refs • notes.md
    ├─ slides/     assets
    ├─ .gitignore
    └─ README.md
              
    Directly opening the folder so you can get on with real work.
  • Customize or extend:
    newproj add -t Workshop --items "data,code,docs/readme.md"
    newproj rename Workshop Training
    
    Templates live in project_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.

ProductivityPythonAutomationResearch Tools