Skip to content

KoiNoYume7/AnniLifeOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ALOS — AnniLifeOS

Personal life OS — quick capture, tasks, reminders, finance, journal, goals, AI assistant. Live at alos.yumehana.dev · Self-hosted on a Raspberry Pi 4.

Part of YUME (Your Unified Memory & Experience) — the personal AI ecosystem. Auth is handled by AnniCore (auth.yumehana.dev).


What this is

ALOS is the heart of YUME. One place for your life data — tasks, captures, reminders, finance, journal, goals — connected to an AI assistant that has full context before you say a word.

It was spun out of AnniWebsite when the organizer outgrew the site. ALOS is the dedicated product. AnniWebsite is just the personal site.

Current state: P0 complete. Auth, quick capture, tasks, inbox are live. P1 (AI chat + smart capture parsing) is next.


Stack

Layer Tech
Frontend Vite + Vanilla JS (no framework)
Backend Node.js + Express
Database SQLite via better-sqlite3 (WAL mode, FK on)
Auth Delegated to AnniCore (auth.yumehana.dev, port 4200)
AI Claude API — claude-sonnet-4-20250514 (P1)
STT Whisper self-hosted on ThinkPad (P1, scaffolded)
Voice ElevenLabs API (P2, scaffolded)
Pi paths /opt/anni/alos (backend) · /opt/anni/alos-www (frontend)

Repo structure

AnniLifeOS/
├── client/                    # Vite frontend source
│   ├── index.html
│   ├── package.json
│   ├── vite.config.js         # outDir: '../dist'
│   └── src/
│       ├── main.js            # Boot: theme → starfield → cursor → checkAuth → render
│       ├── lib/
│       │   ├── router.js      # Hash-based SPA router
│       │   ├── api.js         # All fetch calls to backend
│       │   ├── auth.js        # checkAuth, redirectToLogin
│       │   ├── toast.js
│       │   └── theme.js
│       ├── effects/
│       │   ├── starfield.js
│       │   └── cursor.js
│       ├── components/
│       │   ├── nav.js         # App shell: sidebar + topbar
│       │   └── modal.js
│       ├── pages/
│       │   ├── home.js        # Dashboard + quick capture bar + live stats
│       │   ├── capture.js     # Inbox CRUD
│       │   ├── tasks.js       # Tasks + backlog with priorities
│       │   ├── finance.js     # (P2 stub)
│       │   ├── journal.js     # (P2 stub)
│       │   ├── goals.js       # (P2 stub)
│       │   └── ai.js          # (P1 stub — Claude streaming chat)
│       └── styles/
│           ├── global.css     # Tokens, reset (ported from AnniWebsite)
│           ├── components.css
│           └── alos.css       # ALOS-specific layout
├── server/
│   ├── server.js
│   ├── db/
│   │   ├── db.js              # SQLite singleton
│   │   └── schema.sql
│   ├── middleware/
│   │   └── auth.js            # requireAuth — calls AnniCore /api/auth/me
│   ├── routes/
│   │   ├── capture.js         # POST/GET/PATCH/DELETE /api/captures
│   │   ├── tasks.js           # Full CRUD /api/tasks
│   │   ├── reminders.js       # (scaffolded)
│   │   ├── finance.js         # (scaffolded)
│   │   ├── journal.js         # (scaffolded)
│   │   ├── goals.js           # (scaffolded)
│   │   ├── ai.js              # (503 stub — P1)
│   │   ├── stt.js             # (503 stub — P1, proxies to Whisper)
│   │   └── voice.js           # (503 stub — P2, ElevenLabs)
│   ├── .env.example
│   └── alos.service           # systemd unit
├── nginx/
│   └── alos.yumehana.dev.nginx
├── docs/
│   └── YUME-Vision.md         # Full YUME vision doc (DE/EN, human + AI readable)
├── lib/                       # AnniLog PS module
├── dist/                      # Vite build output (gitignored)
├── logs/                      # Deploy logs (gitignored)
├── CLAUDE.md                  # Claude Code project briefing
├── deploy.bat                 # ← entry point
├── deploy.ps1
├── deploy.sh
└── README.md

Pages & routes

Route Description
#/ Dashboard — today view, quick capture, inbox count, stats
#/capture Inbox — all captures with archive/delete
#/tasks Tasks + backlog with priority filters
#/finance Finance tracker (P2)
#/journal Journal / daily notes (P2)
#/goals Goals overview (P2)
#/ai AI chat with context injection (P1)

All routes are auth-gated. Unauthenticated → redirected to auth.yumehana.dev.


Auth flow

  1. Client calls /api/auth/me on load
  2. If 401 → redirectToLogin() sends browser to https://auth.yumehana.dev/?returnTo=https://alos.yumehana.dev
  3. User authenticates with GitHub/Discord/Google via AnniCore
  4. Session cookie set on .yumehana.dev — valid for ALOS automatically
  5. Client retries /api/auth/me → renders app

Server-side: every API request goes through requireAuth middleware which calls http://127.0.0.1:4200/api/auth/me internally, upserts the user into ALOS's local DB, and sets req.user.


Environment variables

Variable Default Description
PORT 4100 API port
NODE_ENV production
ANNI_AUTH_URL http://127.0.0.1:4200 AnniCore internal URL
DB_PATH /srv/storage/ALOS/alos.db SQLite database
CLAUDE_API_KEY Anthropic API key (P1)
ELEVENLABS_API_KEY Voice output (P2)
WHISPER_URL http://thinkpad-local:8000 Local STT service (P1)

Dev setup

# Backend
cd server && npm install
cp .env.example .env
node server.js   # → http://127.0.0.1:4100

# Frontend (separate terminal)
cd client && npm install
npm run dev      # → http://localhost:3100 (proxies /api/* to :4100)

For local auth: run AnniCore on port 4200 locally, or point ANNI_AUTH_URL at the production instance and use the shared session cookie.


Deploy

.\deploy.bat               # full deploy (build + push client + server)
.\deploy.bat -ClientOnly   # frontend only
.\deploy.bat -ServerOnly   # backend + restart service

Preserves server/.env and alos.db on the Pi.


Roadmap

Phase Status What
P0 — Foundation ✅ Live Auth, capture, tasks, inbox, deploy
P1 — AI layer 🔧 Next Claude API, streaming SSE, context injection, Whisper STT
P2 — Full organizer 📋 Planned Finance, journal, goals, reminders scheduling
P3 — Desktop 📋 Planned Tauri wrapper for Win11 native app
P4 — Mobile 📋 Planned Android + Galaxy Watch (Wear OS)

For the full YUME ecosystem vision, see docs/YUME-Vision.md.


Infrastructure

Browser → Cloudflare Tunnel → nginx :80
  └── alos.yumehana.dev
        ├── /       → /opt/anni/alos-www/   (Vite build)
        └── /api/*  → 127.0.0.1:4100        (Express)

Full infra reference: AnniCore/INFRA.md Structure standard: AnniCore/docs/STRUCTURE.md


ALOS v0.1 — part of the YUME ecosystem · yumehana.dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors