Skip to content

egeozcan/mahresources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,319 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mahresources

A personal information management system built in Go. Organize files, notes, and collections with rich metadata, full-text search, and a flexible tagging system — designed to scale to millions of resources.

Read the full documentation

Screenshots

Dashboard
Dashboard
Resource grid with filters
Resource Grid
Note system with structured blocks
Note Blocks
Hierarchical group organization
Group Tree
Global search
Global Search (Cmd/Ctrl+K)
Bulk operations toolbar
Bulk Operations

Features

  • Resources — Store and manage files with automatic thumbnail generation, perceptual hashing for duplicate/similarity detection, and version tracking
  • Notes — Rich text content with structured block types and sharing capabilities
  • Groups — Hierarchical collections with typed relationships between them
  • Tags & Categories — Flexible labeling system across all entity types
  • Full-Text Search — Fast search across all content with saved queries
  • JSON Metadata — Attach queryable JSON metadata to any entity, with schema validation
  • Bulk Operations — Tag, merge, delete, or update many items at once
  • Plugin System — Extend functionality with Lua plugins, custom actions, and hooks
  • Dual API — Every route serves both HTML and JSON (append .json or set Accept: application/json)
  • SQLite & Postgres — Choose the database that fits your needs

Quick Start

# Build everything (CSS + JS + Go binary)
npm run build

# Run in ephemeral mode (in-memory, no persistence — great for trying it out)
./mahresources -ephemeral

# Or with persistent storage
./mahresources -db-type=SQLITE -db-dsn=mydb.db -file-save-path=./files

See the installation guide for detailed setup instructions.

Configuration

Flag Description
-file-save-path Main file storage directory
-db-type Database type: SQLITE or POSTGRES
-db-dsn Database connection string
-bind-address Server address:port (default :8181)
-ephemeral Run fully in-memory (no persistence)

See the full configuration reference for all options including ephemeral modes, seed databases, alternative filesystems, and remote timeouts.

Testing

# Go unit tests
go test ./...

# E2E tests (starts ephemeral server automatically)
cd e2e && npm run test:with-server

See the docs for more test commands and options.

Documentation

The full documentation covers everything in detail:

Browse the docs

Security

There is no built-in authentication or authorization. This application is designed to run on private networks or behind a reverse proxy that handles access control. See the reverse proxy guide for setup instructions.

CLI

The mr binary is a command-line client for the mahresources API. It covers all entity types (resources, notes, groups, tags, etc.) with CRUD operations, bulk actions, file upload/download, and version management.

# Build the CLI
npm run build-cli

# List resources
mr resources list --content-type image/png

# Upload a file
mr resource upload photo.jpg --name "My Photo" --owner-id 1

See the CLI documentation for the full command reference.

Scripting & Import

The HTTP API supports all CRUD operations, making it easy to script bulk imports. For an example of direct library usage, see cmd/importExisting/main.go. The API documentation covers all available endpoints.

About

mahresources enables you to treat life as linked resources. it's like a life log with connections.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors