Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Never let a houseplant die from neglect again.
Lily gives every plant you own a personalized, species-aware care schedule — backed by AI diagnosis, a 10,000-species camera scanner, and smart reminders that know your plant, your room, and your local weather.README 전문 보기 ↗Never let a houseplant die from neglect again.
Lily gives every plant you own a personalized, species-aware care schedule — backed by AI diagnosis, a 10,000-species camera scanner, and smart reminders that know your plant, your room, and your local weather.
Lily is a cross-platform (iOS/Android) plant-care app for houseplant owners who keep killing their plants by forgetting to care for them. Each plant gets its own profile — photo, species, room, health — plus a personalized watering, fertilizing, and misting schedule that fires push notifications based on species, location, and local conditions. You identify plants with the camera (10,000+ species), log care actions, and chat with an AI that has full context on your specific plant for diagnosis like yellowing leaves or root rot.
This repository is the full TypeScript/Bun monorepo behind Lily: backend, mobile app, marketing site, admin dashboard, and supporting AI services.
If you're here to read code, these are the parts worth a look:
Schema.TaggedError), dependency injection via layers, and Match.exhaustive over union types, with native JS escape hatches (Array.map, switch, ??, new Date()) deliberately avoided.shared defines the domain with Effect Schema; both the API and its clients import the same schemas, so the wire contract is checked at compile time.knowledge-db is a pgvector knowledge base (3,072-dim halfvec embeddings, HNSW + full-text hybrid search) that grounds per-plant AI answers in retrieved care knowledge.plant-scanner is an iOS Expo native module using ARKit + TensorFlow Lite for on-device plant/pot detection, AR distance measurement, and ambient-light (lux) estimation.mcp exposes Lily to AI assistants (ChatGPT) over the Model Context Protocol with OAuth 2.1 and rich HTML widgets.tsc + lint + test) enforced on every push.| Package | Description |
|---|---|
api | Effect-based backend API server on Bun with Postgres, Redis, and schedulers |
app | React Native (Expo) mobile app for plant care management |
web | Next.js 16 static-export marketing site with i18n (en/fr) and an MDX blog |
admin | Vite + React 19 internal admin dashboard for operating Lily |
shared | Effect Schema domain types, typed errors, and service interfaces shared across packages |
db | Primary PostgreSQL schema, migrations, and Drizzle client wired into Effect |
knowledge-db | Pgvector RAG knowledge base: Drizzle schema plus Effect Postgres client layer |
mcp | MCP server exposing Lily plant data and tools to AI clients |
plant-scanner | iOS-only Expo native module for AR plant/pot scanning and measurement |
Bun 1.4.3 · Node 24 LTS · TypeScript 7.0 (with @effect/tsgo) · Effect 4.0 · Turborepo ^2.11 · Biome 2.6 · Vitest 5 · Drizzle ORM ^0.45 · PostgreSQL 15 + pgvector (pg17) · Redis 7 · Expo ~58 / React Native 0.88 · React 19.3 · Next.js ^16 · Vite ^8
All commands run from the repository root — never cd into a package (Turbo + Bun workspaces handle per-package execution).
# 1. Start local infra: postgres, postgres-test, knowledge-db, knowledge-db-test, redis
docker compose up -d
# 2. Install all workspaces (also runs `prepare`: Husky hooks + `effect-tsgo patch`)
bun install
# 3. Provide env: copy the example and fill in the blanks
cp .env.example .env
# 4. Apply the Drizzle schema to local Postgres
# (dev push — do NOT run `drizzle-kit generate`; migrations are hand-authored)
bun run --filter=@lily/db db:push
# 5. (RAG/knowledge features only) Apply the pgvector knowledge-base schema
bun run --filter=@lily/knowledge-db db:push
# 6. Start everything in watch mode via Turbo
# (api serves at http://localhost:3000 with Swagger/OpenAPI)
bun run dev
Prerequisites: Bun 1.4.3 and Docker. The local Postgres/Redis defaults in .env.example match docker-compose.yml, so the core stack works out of the box.
| Command | What it does |
|---|---|
bun run dev | Watch mode across all packages that define dev (Turbo, persistent) |
bun run build | Build all packages |
bun run test | Run unit tests across all packages (Vitest in api/shared/mcp) |
bun run test:integration | Run api integration tests against a real Postgres (loads .env.test.local) |
bun run db:setup-test | Provision the test database (push to DATABASE_URL_TEST + setup script) |
bun run lint | Biome lint/check across all packages |
bun run lint:fix | Biome lint + autofix across all packages |
bun run tsc | TypeScript typecheck (tsc --noEmit) — CI + pre-push gate |
bun run tsc:build | Exercise the full TypeScript project-reference (composite) build graph |
bun run clean | Remove build artifacts across all packages |
Git hooks: pre-commit runs lint:fix on staged files; pre-push runs lint, tsc, then test.
Lily is a TypeScript/Bun monorepo on Effect 3.x, orchestrated by Turborepo over Bun workspaces. The backend api is built on Effect Platform (HttpApi/HttpApiBuilder) serving REST endpoints with OpenAPI/Swagger on a Bun HTTP runtime (port 3000), layered as endpoints → handlers → services → repositories. The app (React Native/Expo) and admin dashboard are the two HTTP clients; both depend on shared for domain schemas, types, and typed errors so the client/server contract stays type-safe. db owns the primary PostgreSQL schema via Drizzle, which api reads and writes through the PgDrizzle repository layer.
For AI: knowledge-db is a separate pgvector PostgreSQL database (raw documents → processed chunks → ingest jobs) exposed via its own KnowledgeDrizzle tag; api's ai-chat service queries it with vector similarity search to ground per-plant diagnosis in retrieved care knowledge. plant-scanner is a native Expo module consumed by the app's add-plant flow (plant/pot detection, lux, AR distance, captured photos). mcp is a standalone Effect MCP server that calls api over HTTP to expose agentic tools (list-plants, get-care-tasks, ask-plant-question, …). web is the public Next.js marketing funnel, decoupled from the runtime backend.
app / plant-scanner ─┐
├─▶ api ─┬─▶ db (primary state)
admin ───────────────┘ ├─▶ knowledge-db (pgvector RAG)
└─▶ push (notifications)
mcp ─────────────────▶ api
web (static marketing, no runtime backend)
arr.map, Object.keys, switch, ??, new Date(), …) are forbidden. See CODING_STANDARDS.md for the full mapping.cd into a package — all scripts go through Turbo from the monorepo root.@effect/sql-drizzle. Migrations are hand-authored SQL (packages/db/drizzle/); never run drizzle-kit generate (the journal is intentionally out of sync). Prod migrations run via db:migrate:prod.Schema.TaggedError propagated through the Effect system and handled by tag — never catchAll. Union types use Match.exhaustive.extends the root tsconfig.json, declares sideEffects, and pins the exact root typescript version. Use @ts-expect-error (with a rationale), never @ts-ignore.Full coding rules live in CODING_STANDARDS.md; package rules in docs/agents/monorepo.md.
Contributions are welcome! Start with CONTRIBUTING.md for the dev workflow, coding conventions, and PR process. Please also read our Code of Conduct.
SECURITY.md.Lily is licensed under the GNU Affero General Public License v3.0. In short: you're free to use, study, modify, and share the code, but if you run a modified version as a network service you must make your source available under the same license.
CODING_STANDARDS.md — authoritative Effect-first coding rules, plus pointers to each package's own rules.CLAUDE.md (also AGENTS.md) — entry point for coding agents: routes to the coding standards and the docs in docs/agents/.packages/api/README.md — backend request flow and the endpoints → handlers → services → repositories layering.packages/db/README.md — primary PostgreSQL schema map (users, plants, auth, chat, notifications, achievements).packages/shared/README.md — the domain model and cross-package contract: schemas, validation, and typed errors.docs/knowledge-pipeline-architecture.md — design of the pgvector knowledge-db RAG pipeline (ingest → chunk → embed → retrieve).docs/rag-implementation-plan.md — RAG implementation plan backing the api ai-chat grounding.docs/agents/domain.md — convention for the CONTEXT-MAP.md / per-package CONTEXT.md + docs/adr layout.