Loglist is an offline-first iPhone-focused app (developed browser-first) for recording observations from arbitrary lists.
This repository contains:
docs/— project documentation (requirements, architecture, data model, repository)web/— web application code (app shell, components, assets)ios/— placeholder for iOS wrapper code (added later)
- Install dependencies:
- Run:
npm install npm installalso runspostinstallto sync vendor bundles intovendor.
- Run:
- Start the web dev server:
npm start. - Open the app at
http://localhost:8080(port may vary).
- Open the design system reference page at
http://localhost:8080/design-system.html.
- Open a specific tab with
page:- Lists:
http://localhost:8080/?page=lists - Track:
http://localhost:8080/?page=track - History:
http://localhost:8080/?page=history
- Lists:
- Open a specific list in the detail view using
page=listsandlistId:- Example:
http://localhost:8080/?page=lists&listId=builtin-car-makes
- Example:
- Open an active tracking session for a specific list using
page=trackandlistId:- Example:
http://localhost:8080/?page=track&listId=builtin-car-makes
- Example:
- Force dark mode via the URL:
http://localhost:8080/?theme=dark - Force light mode via the URL:
http://localhost:8080/?theme=light - The selection is persisted to
localStorageby the demo code. If no explicit theme is set the browser'sprefers-color-schemecontrols the UI.
- Requirements.md — functional and non-functional requirements.
- Architecture.md — high-level architecture, web-first workflow, native wrapper responsibilities.
- DataModel.md — data structures and example JSON for lists, items, and sessions.
- Repository.md — repository interface and persistence implementation notes.
- Current web persistence implementation uses
localStoragefor custom lists and session context. - Built-in lists are loaded from
web/data/builtins.json. - Repository interfaces and longer-term storage goals are documented in
docs/Repository.md. - When ready to wrap for iOS, embed the web build in a minimal SwiftUI app using
WKWebViewand implement a small native repository bridge.