Initial commit: README, MIT license, gitignore
This commit is contained in:
commit
86606f504a
3 changed files with 124 additions and 0 deletions
47
.gitignore
vendored
Normal file
47
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
.venv/
|
||||
venv/
|
||||
.env
|
||||
.env.local
|
||||
.pytest_cache/
|
||||
.mypy_cache/
|
||||
.ruff_cache/
|
||||
*.egg-info/
|
||||
build/
|
||||
dist/
|
||||
|
||||
# Node / Vue / Vite
|
||||
node_modules/
|
||||
.vite/
|
||||
frontend/dist/
|
||||
|
||||
# Editors / OS
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
.DS_Store
|
||||
|
||||
# Local data / runtime
|
||||
*.db
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
data/
|
||||
local/
|
||||
logs/
|
||||
# Append to existing .gitignore
|
||||
|
||||
# uv
|
||||
uv.lock.bak
|
||||
|
||||
# Local config (contains DB password)
|
||||
mama.toml
|
||||
|
||||
# Alembic local state
|
||||
# (alembic/versions/ stays tracked)
|
||||
|
||||
# Setup temporary files
|
||||
*.tar.gz
|
||||
*.old
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2026 warnason
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
56
README.md
Normal file
56
README.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# mama
|
||||
|
||||
**M**edia **A**rchive **M**eets **A**utomation — a self-hosted system for
|
||||
ingesting, deduplicating, and organizing personal media (photos, videos, music,
|
||||
documents) on top of ZFS.
|
||||
|
||||
## ⚠️ Project Status
|
||||
|
||||
**Pre-alpha. Not ready for use by anyone but the author.**
|
||||
|
||||
- Database schema, CLI surface, on-disk layout, and HTTP API are unstable and
|
||||
will change without migration paths.
|
||||
- Most features described below are planned, not implemented.
|
||||
- Documentation lags behind code.
|
||||
|
||||
Do not point mama at irreplaceable data. Keep independent backups of anything
|
||||
mama touches.
|
||||
|
||||
## Concept
|
||||
|
||||
mama indexes files placed in configured scan folders, stores file contents in a
|
||||
content-addressed blob store, and exposes them through hardlinked filesystem
|
||||
views consumable by specialized viewers (Immich for photos and video, Navidrome
|
||||
for music, Paperless-ngx for documents).
|
||||
|
||||
Identical content is stored only once. Per-file context — original path, source
|
||||
device, scan timestamp, embedded metadata (EXIF, ID3, sidecar files) — is
|
||||
preserved as *observations* linked to the underlying blob, so duplicates
|
||||
contribute information instead of clutter.
|
||||
|
||||
### Workflow
|
||||
|
||||
1. `mama-scan PATH` — index files into the database (no copies, no moves)
|
||||
2. `mama-apply` — materialize approved observations into the archive
|
||||
(blob into CAS, hardlink into view)
|
||||
3. `mama-web` — browse, merge duplicates, filter, export, delete
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- Python 3.13, FastAPI, SQLAlchemy 2.x (async), Alembic
|
||||
- PostgreSQL 16 (JSONB for embedded metadata)
|
||||
- Vue 3, Vite
|
||||
- ZFS (single archive dataset, snapshots, NFS export), Caddy
|
||||
- ExifTool, BLAKE3, ffmpeg, Pillow
|
||||
- Docker Compose for companion viewers (Immich, Navidrome, Paperless-ngx)
|
||||
|
||||
## Disclaimer
|
||||
|
||||
mama is provided as-is for personal use. The author assumes no responsibility
|
||||
for data loss, corruption, mis-deduplication, accidental deletion, or any other
|
||||
adverse outcome arising from its use. Use at your own risk and only on data you
|
||||
can afford to lose.
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
Loading…
Add table
Reference in a new issue