All Projects → joshwingreene → Obsidian-JG-Method

joshwingreene / Obsidian-JG-Method

Licence: other
A starter kit that follows how I use Obsidian to manage my goals, tasks, notes, and software development knowledge base.

Programming Languages

CSS
56736 projects

Projects that are alternatives of or similar to Obsidian-JG-Method

lunatask
All-in-one encrypted to-do list, notebook, habit and mood tracker, pomodoro timer, and journaling app
Stars: ✭ 35 (-68.18%)
Mutual labels:  productivity, note-taking, task-manager
hugo-documentation-theme
📖 Project Docs / Knowledge Base template for Hugo Website Builder. 创建项目文档
Stars: ✭ 101 (-8.18%)
Mutual labels:  note-taking, knowledge-base, obsidian
Archivy
Archivy is a self-hosted knowledge repository that allows you to safely preserve useful content that contributes to your own personal, searchable and extendable wiki.
Stars: ✭ 2,746 (+2396.36%)
Mutual labels:  productivity, note-taking, knowledge-base
Nb
CLI and local web plain text note‑taking, bookmarking, and archiving with linking, tagging, filtering, search, Git versioning & syncing, Pandoc conversion, + more, in a single portable script.
Stars: ✭ 3,846 (+3396.36%)
Mutual labels:  productivity, note-taking, knowledge-base
Dones
Simple team task management and tracking
Stars: ✭ 62 (-43.64%)
Mutual labels:  productivity, task-manager
Todo App
Simple ReactJs todo app ✍
Stars: ✭ 206 (+87.27%)
Mutual labels:  productivity, task-manager
gatsby-theme-primer-wiki
A Gatsby Theme for Wiki/Docs/Knowledge Base, which using Primer style as the UI theme, can work well with Foam or Obsibian or just markdown files.
Stars: ✭ 85 (-22.73%)
Mutual labels:  knowledge-base, obsidian
Web Handover Handover
📋 국방업무공유체계 – 업무 인수인계 및 공유 플랫폼 (해군참모총장 수상작)
Stars: ✭ 13 (-88.18%)
Mutual labels:  productivity, knowledge-base
Notemaster
NoteMaster is an smart minimalistic persistent note-taking app to help boost productivity.
Stars: ✭ 40 (-63.64%)
Mutual labels:  productivity, note-taking
osmosnote
The knowledge IDE
Stars: ✭ 69 (-37.27%)
Mutual labels:  note-taking, knowledge-base
graphite
✍️ A local-first Markdown note-taking app built with Vue.js, Tailwind CSS, and Electron.
Stars: ✭ 17 (-84.55%)
Mutual labels:  productivity, note-taking
Awesome Startup Tools List
List of all tools (apps, services) that startups should use.
Stars: ✭ 188 (+70.91%)
Mutual labels:  productivity, note-taking
Yi Note
YiNote browser extension - online video note taking tool
Stars: ✭ 96 (-12.73%)
Mutual labels:  productivity, note-taking
keep-it-markdown
Convert Google Keep notes dynamically to markdown for Obsidian and Notion using the unofficial Keep API
Stars: ✭ 125 (+13.64%)
Mutual labels:  note-taking, obsidian
taskpaper-mode
Emacs TaskPaper Mode
Stars: ✭ 94 (-14.55%)
Mutual labels:  productivity, note-taking
foam-template-gatsby-theme-primer-wiki
Another Foam template that use gatsby-theme-primer-wiki
Stars: ✭ 20 (-81.82%)
Mutual labels:  knowledge-base, obsidian
stack-public
A key-value based writer.
Stars: ✭ 19 (-82.73%)
Mutual labels:  productivity, task-manager
Jrnl
Collect your thoughts and notes without leaving the command line.
Stars: ✭ 5,126 (+4560%)
Mutual labels:  productivity, note-taking
Notes
📝 Simple delightful note taking, with more unix and less lock-in.
Stars: ✭ 939 (+753.64%)
Mutual labels:  productivity, note-taking
flawesome
Productivity Tool
Stars: ✭ 56 (-49.09%)
Mutual labels:  productivity, note-taking

Obsidian-JG-Method

A starter kit that follows how I use Obsidian to manage my goals, tasks, notes, and software development knowledge base.

Starter Vault

In order to start using it, I suggest copying and moving it to wherever you want your notes to live. I personally have my vault inside of a folder called "Obsidian" inside of my iCloud Drive folder.

Alfred Workflow

You will likey need to edit the path to your vault in order to get this to work. In order to do this, you will need to open the Alfred workflow (in the Alfred Expansions and Workflow folder) and then edit the included "Run Script" action.

You will need to edit this line:

vaultPath = os.path.expanduser("~") + "/Library/Mobile Documents/com~apple~CloudDocs/Obsidian/Starter Vault"

Alfred Text Expansions

In order to get access to this feature, you will need to buy the Alfred Powerpack.

If you aren't using Alfred, here's a picture of the majority of my text expansions:

Text Expansions

Here are the final two:

Name Keyword Snippet
Base Recurring Intention or Misc Task -base ♦︎
Changed Plans -change 🚨

Here's the Python script that the Alfred workflow uses:

# Author: Joshwin Greene
import sys, os
from datetime import datetime, timedelta
from collections import defaultdict

def getFullPathToFile(file):
	return vaultPath + '/' + file

def isWithinThreeDays(file):
	fullPath = getFullPathToFile(file)
	if os.path.isfile(fullPath):
		modifiedTime = os.path.getmtime(fullPath)
		modifiedDateTime = datetime.fromtimestamp(modifiedTime)
	
		currentDateTime = datetime.now()

		threeDaysAgo = currentDateTime - timedelta(days=3)

		return modifiedDateTime > threeDaysAgo
	else:
		return False 

def fileHasNewKnowledge(file):
	fullPath = getFullPathToFile(file)
	result = False
	with open(fullPath, 'r') as reader:
		result = "Ready to be Recorded" in reader.read()
	return result

def updateOriginalFile(path):
	text = None	

	with open(path, 'r') as reader:
		text = reader.read()
		text = text.replace("Ready to be Recorded", "**Alfred:** Header Notes were Recorded on " + datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
	
	with open(path, 'wt') as a_writer:
		a_writer.write(text)

# Enter the path to your vault
vaultPath = os.path.expanduser("~") + "/Library/Mobile Documents/com~apple~CloudDocs/Obsidian/Starter Vault"

# Get all of the files that were edited in the past 3 days

files = os.listdir(vaultPath)

result = filter(isWithinThreeDays, files)
	
# From all of these files, only use the ones that have the "Ready to be Recorded" text

newResult = filter(fileHasNewKnowledge, result)

# For each file...

# Get the file path and then use the split method with four hashtags as the separator

for file in newResult:
	filePath = getFullPathToFile(file)
	parts = []
	headerTitles = []
	destinations = []
	desiredDestinations = []

	with open(filePath, 'r') as reader:
		parts = reader.read().split('####')

	for i in range(1, len(parts) - 1):
		stripped = parts[i].strip()

		# Get the text before the new line
		newLineIndex = stripped.find('\n')
		
		parts[i] = stripped[:newLineIndex]

	
	# Ignore the first element and then get the title of each of the header notes (not using the last one)

	for j in range(1, len(parts) - 1):
		headerTitles.append(parts[j])

	# Get the list of destinations from the last header note and remove the closing brackets from each one
	destinations = parts[len(parts)-1].split('- [[')

	for k in range(1, len(destinations)):
		desiredDestinations.append(destinations[k].strip().replace("]]", ""))

	endOfListIndex = len(desiredDestinations)-1

	desiredDestinations[endOfListIndex] = desiredDestinations[endOfListIndex].replace("\n\nReady to be Recorded", "")

	# Create a dictionary where each key is each destination and their values are a list of header titles

	destinationDict = defaultdict(list)

	for h in range(len(headerTitles)):
		destinationDict[desiredDestinations[h]].append(headerTitles[h])

	# Append to all of the associated destinations in the correct format with a new line above each

	for destination, headerTitles in destinationDict.items():
		with open(getFullPathToFile(destination + '.md'), 'a') as a_writer:
			for title in headerTitles: 
    				a_writer.write('\n\n' + '![[' + file.replace('.md', '') + '#' + title + ']]')
		

	# Once all of the destination files are updated, edit the original file so that the "Ready to be Recorded" string is replaced by something more appropriate

	updateOriginalFile(filePath)

# Notify the user about how many files with header notes were processed
print("Number of Processed Files: " + str(len(newResult)))
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].