joakim 140d9f7f25 feat: add interactive setup wizard for first-run configuration
Implement a comprehensive setup wizard to improve onboarding and
configuration experience for both personal and server deployments.

Key features:
- Interactive wizard with profile selection (personal/server/custom)
- Quick setup mode with sensible defaults
- First-run detection with helpful welcome message
- Directory configuration with validation
- Server OAuth/JWT configuration with auto-generation
- Environment file creation for server deployments
- Template generators for systemd service and env files

New commands:
- opal setup              # Interactive wizard
- opal setup --quick      # Quick setup with defaults
- opal setup --profile    # Use specific profile
- opal setup --show-systemd  # Show systemd template
- opal setup --show-env   # Show environment file template

Implementation:
- internal/wizard/prompts.go: Reusable prompt utilities
- internal/wizard/profiles.go: Profile definitions and templates
- cmd/setup.go: Main setup command implementation
- cmd/root.go: First-run detection and welcome message
- internal/engine/config.go: ConfigExists() and IsFirstRun() helpers

User experience:
- On first run, shows welcome message suggesting 'opal setup'
- Non-intrusive - creates defaults automatically if skipped
- Wizard guides through all configuration options
- Server setup includes OAuth/JWT configuration
- Environment file created with proper permissions (0600)
- Clear next steps displayed after completion
2026-01-06 21:49:13 +01:00
2026-01-01 21:54:36 +01:00

Notr

Simple Go application for organizing and referencing notes. Loosely based on Obsidian.

Implementation: See jade-depo/ directory for the CLI tool.

Workflow

I take notes in two primary ways:

Phone

  • Quick notes, on the go.
  • View and search notes.

Workstation

  • Using NeoVim for notetaking

Other infrastructure

  • I host a VPS with a Nextcloud and Gitea instances.

What I want

  • A Obsidian Vault like structure. A folder where notes live.
  • A file is a note
  • Can also store attachments, such as images. These files can then be referenced in the relevant notes.
  • Directories is the main organization method, although tags and links can seam-lesly cross directories boundries.
  • Markdown syntax (this can be handled by NeoVim and a markdown editor on other devices.)
  • Tags: Syntax +tag
  • Note links for referencing other notes or any other vault files. Syntax uncertain. Obsidian uses ?
  • See reports about the vault. Tag report
  • At some point I would like to have a web-app and host it on my server. This would integrate with my authentik service for auth, and would be a live view of a users vault
  • OCR would be great.

Implementation

I have a tendency to scope creep and never actually getting a usable product, so an important goal here is practicing getting a usable app up and running. This should not have to be the biggest project, so I'll try to predict the process:

Version 0.1

Here I use other tools for the note-taking and accept that any searching is on a directory basis only.

  • I create a directory in Nextcloud. This I will start using immediately.
  • Find a good Markdown editor for android.
  • Adopt any crutial Obsidian notes

Version 1.0 ✓

This is where I can use Notr to find and search notes on my workstation. CLI implementation complete!

  • Process notes. Metadata and diffs
  • Search and Filter by tags
  • Search and Filter by content
  • Add, edit, delete notes
  • List all notes and tags

Version 2.0

Here I can do the same on my phone.

Also:

  • OCR

Metadata approach

Multiple approaches possible.

S
Description
Personal productivity tools
Readme 999 KiB
Languages
Go 75.3%
Svelte 17.5%
JavaScript 5.3%
CSS 1.2%
HTML 0.4%
Other 0.3%