🧠 How I Created a Command Center in Obsidian

Overview

In this post, I walk through how I set up a personal command center inside Obsidian β€” a central hub where I can generate project folders and starter files using templates, buttons, and hotkeys. The goal: remove repetition and standardize my workflows.


1. Introduction

β€œIf you find yourself doing the same steps over and over, there is likely an opportunity to automate.”

While setting up projects for my home NAS server, I noticed I was repeating the same steps every time I started a new build:

  1. Create a project folder
  2. Add a standard set of files (README, setup notes, kanban board, etc.)
  3. Manually fill out the same sections

This needed to be automated β€” not later, now.


2. Folder Setup

Start by setting up your Obsidian vault to separate templates from projects:

vault
β”œβ”€β”€ daily-journal
β”œβ”€β”€ other-stuff
β”œβ”€β”€ projects      # ← I want my generated project folder/files to go here
└── templates     # ← This holds my Templater scripts

3. Required Plugins

Install and enable the following:

  • βœ… Templates (core plugin)
  • βœ… Templater (community plugin)
  • βœ… Buttons (community plugin)

Then go to Settings β†’ Templater under the Community Plugins section and set the Template folder location to templates.
I also did the same in the Templates (core) settings panel β€” not sure if it’s necessary, but it didn’t hurt.


4. Create Your Project Template

In your templates folder, create a new file β€” name it something like my_template.md.
Inside, add the following code block using <%* %> to enable asynchronous scripting:

<%*
const projectName = await tp.system.prompt("Project name (e.g., nas, flask_api_app)")
const folder = `02_PROJECTS/${projectName}`

// README.md
await tp.file.create_new(`# ${projectName}
	## πŸ”§ Purpose What is this project? 
	## πŸ“¦ Stack 
		- OS: 
		- Framework: 
		- Host: 
	## πŸ“ Status 
		- [ ] Planning
		- [ ] In Progress 
		- [ ] Complete 
	## πŸ” Related Learning 
		- [[04_LEARNING/...]] ← link to relevant topics or notes 
	## 🩺 Informatics Tie-In 
		- What healthcare or clinical workflow does this simulate or support? 
		- Where could this be used in real-world systems (e.g., edge devices, EHR 
		backup, automation)? 
		- What problem does this solve for clinicians or health IT staff?`,`README`, false,folder)`
//do the same for the rest of the templates.
%>

πŸ” What this code does

  • tp.system.prompt(...): prompts me to enter a project name
  • folder = 02_PROJECTS/${projectName}: defines the folder to store the project
  • tp.file.create_new(...): creates each Markdown file in that folder

πŸ“˜ Why use await here?

In JavaScript (and in Obsidian Templater), await is used to pause the execution of the script until an asynchronous action finishes.

Templater functions like:

  • tp.system.prompt() (waits for input)
  • tp.file.create_new() (waits for the file to be written)

...are asynchronous. Without await, the script would move on before these complete, leading to incomplete or broken workflows.

Important: await only works inside <%* %> blocks in Obsidian.


πŸ—‚ Expected File Tree After Running the Template

Assuming you enter my_project when prompted, this is what your vault will look like:

vault
β”œβ”€β”€ daily-journal
β”œβ”€β”€ other-stuff
β”œβ”€β”€ projects
β”‚   └── my_project
β”‚       β”œβ”€β”€ README.md
β”‚       β”œβ”€β”€ documentation.md
β”‚       β”œβ”€β”€ kanban.md
β”‚       └── setup_plan.md
└── templates
    └── my_template.md

5. Assign a Hotkey or Create a Button

πŸ”‘ Add a Hotkey

Go to:

  • Settings β†’ Templater β†’ Template Hotkeys
  • Add your my_template.md file
  • Assign a custom hotkey like Cmd + Shift + P

Now you can trigger your template instantly.


πŸ“Έ Demo


πŸ”˜ Or Add a Button

You can also use the Buttons plugin to add a clickable button:

```button
name πŸš€ Create Project
type command
action Templater: Create 08_Templates/Project_Folder_Template.md
color green
```

Or use the β€œButton Maker” from the Command Palette to do the same.



6. Next Steps

The next phase will include:

  • Templates for my learning folder
  • Automating common workflows
  • Standardizing my project notes and documentation
  • Scaling the control center to include idea capture, blog drafts, and daily workflows

Cheers!

References

Button plugin
Templater plugin
Dynamic folder creation- Obsidian
buttons to run a template
await in templater -Obsidian