Survival LLM
A free AI assistant and survival library (1.5 million offline articles) that runs on your own computer, with no internet. Shows the source of every answer. Mac and Windows.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Pebbles — collect meaningful moments, one pebble at a time.
A Turborepo monorepo for Pebbles, an app where you record life moments as "pebbles" — small, tangible memory records enriched with emotions, people (souls), life domains, and reflective cards.
Open http://localhost:3000.
The web app is a PWA built with Next.js (App Router), React, Tailwind CSS, and shadcn/ui. Data lives in Supabase (Postgres + RLS); business logic that spans tables lives in Postgres RPCs shared by all client surfaces. The DataProvider interface abstracts the data layer — SupabaseProvider is its sole implementation.檢視完整 README ↗Pebbles — collect meaningful moments, one pebble at a time.
A Turborepo monorepo for Pebbles, an app where you record life moments as "pebbles" — small, tangible memory records enriched with emotions, people (souls), life domains, and reflective cards.
pbbls/
apps/
web/ ← Next.js PWA (the main application)
ios/ ← Native iOS app (SwiftUI, iOS 17+)
android/ ← Native Android app (Kotlin + Jetpack Compose, minSdk 33)
admin/ ← Next.js back-office (analytics, Lab logs, glyph moderation)
packages/
shared/ ← Shared types & utilities (placeholder)
supabase/ ← Supabase types, migrations & edge functions
rive/ ← Shared .riv animation assets (consumed by copy per surface)
turbo.json ← Turborepo task configuration
package.json ← Workspace root
npm install
npm run dev
Open http://localhost:3000.
| Command | Description |
|---|---|
npm run dev | Start all dev servers via Turborepo |
npm run build | Build all packages via Turborepo |
npm run lint | Lint all packages via Turborepo |
apps/web/)The web app is a PWA built with Next.js (App Router), React, Tailwind CSS, and shadcn/ui. Data lives in Supabase (Postgres + RLS); business logic that spans tables lives in Postgres RPCs shared by all client surfaces. The DataProvider interface abstracts the data layer — SupabaseProvider is its sole implementation.
See apps/web/ for the full web app documentation. The native apps (apps/ios, apps/android) are independent codebases that mirror each other's architecture and share only the database contract — see the 2026-07-10 entry in docs/decisions/log.md.
| Concept | Description |
|---|---|
| Pebble | A moment you record. Has a time, intensity (1–3), positiveness (-2 to +2), an emotion, related souls, life domains, and reflective cards. |
| Emotion | A feeling attached to a pebble (joy, sadness, anger, etc.). One per pebble in V1. |
| Soul | A person, pet, or entity related to a pebble. Not a user — a private contact in your world. |
| Domain | A life dimension based on Maslow: Zoe (health), Asphaleia (security), Philia (relationships), Time (recognition), Eudaimonia (self-actualization). |
| Card | A reflective note attached to a pebble, optionally framed by type: free, feelings, thoughts, behaviour. |
| Collection | A group of pebbles with an optional mode: Stack (goal), Pack (time-bound), Track (recurring frequency). |
apps/web/
app/ → Routes (thin page shells)
layout.tsx → Root layout: DataProvider + ThemeProvider + nav
path/ → Timeline view
record/ → Multi-step pebble creation
pebble/[id]/ → Pebble detail
collections/ → Collection list + detail
components/
layout/ → Sidebar, BottomNav, EmptyState, providers
record/ → RecordStepper, TimePicker, EmotionPicker, SoulPicker, etc.
pebble/ → PebbleDetail, PebbleIndicators
path/ → PebbleTimeline, PebbleCard, PathEmptyState
collections/ → CollectionList, CollectionCard, ModeBadge, etc.
ui/ → shadcn/ui primitives (Button, Badge, Input, Card)
lib/
types.ts → Domain entity types (Pebble, Soul, Collection)
config/ → Static configs (emotions, domains, card types, navigation)
data/ → DataProvider interface, SupabaseProvider, hooks
hooks/ → Reusable hooks (useRecordForm, useStepNavigation)
utils/ → Utilities (formatters, group-pebbles-by-date)
seed/ → Seed data with dev-mode validation
in-memory Store (React context)
↕
SupabaseProvider (PostgREST reads + RPCs for multi-table writes)
↕
React hooks (usePebbles, etc.)
↕
Page components → UI
| Layer | Choice |
|---|---|
| Framework | Next.js (App Router) |
| UI | React + Tailwind CSS + shadcn/ui |
| Storage | Supabase (Postgres + RLS + RPCs) |
| Theming | next-themes |
| Monorepo | Turborepo + npm workspaces |
apps/web/)The web app deploys to Vercel. After the monorepo migration, the Vercel project's Root Directory must be set to apps/web in the dashboard. This makes Vercel:
apps/web/apps/web/.nextPreview URLs remain unchanged.
apps/android/)The native Android app ships to Google Play internal testing from CI: merges to main touching apps/android/** build a signed release AAB and publish it via .github/workflows/android-release.yml, and a PR labelled deploy-beta deploys that branch on demand. The pipeline and its one-time console setup are documented in docs/android-play-deploy.md.
PolyForm Noncommercial License 1.0.0 — see LICENSE. The code is source-available for noncommercial use only.
Thesis: specification-driven, agentic execution. Match ceremony to blast radius. Architecture lives as code-adjacent artifacts, not folklore.
[Type] Description + species label (feat/fix/...) + scope label (core/ui/db/api/auth/facility/android) + milestone.docs/arkaik/bundle.json) — screens, flows, models, APIs as nodes/edges. Updated whenever architecture moves.docs/superpowers/specs/<date>-<slug>-design.mdPre-flight checklist. Flattens ambiguity before code.
docs/superpowers/plans/<date>-<slug>.mdOperationalizes the spec. Checkboxable, copy-pasteable.
| Size | Ceremony |
|---|---|
| Small (≤150 LOC) | Skip plan/agents; workspace-scoped lint |
| Medium (≤500 LOC) | 2–3 sentence sketch; workspace lint + build |
| Large (cross-app / schema / new surface) | Full Superpowers loop; root lint + build; update Arkaik |
Safety rails (non-negotiable):
any, no type assertionsawait Supabase inside onAuthStateChange (deadlock)database.tsdocs/agents/ui-and-styling.md, docs/agents/data-and-async.mdtype/issue-N-slug created before first commitfeat(ui): ...Resolves #N + key files + notes; inherit issue labels/milestone