Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Capture your dreams and discover patterns for lucid dreaming.
A private dream journal that runs in your browser and keeps your dreams on your device.
Dream Journal is a Progressive Web App (PWA) for recording dreams and spotting patterns in them, built with lucid dreaming in mind. There is no account, no server component and no analytics. The app is a set of static files, and your journal is stored in your browser, on your own device.
Optional extras (a PIN lock, password encryption and Dropbox backups) are covered in Privacy and security, including what each one does not protect.README 전문 보기 ↗Dream Journal is a Progressive Web App (PWA) for recording dreams and spotting patterns in them, built with lucid dreaming in mind. There is no account, no server component and no analytics. The app is a set of static files, and your journal is stored in your browser, on your own device.
Optional extras (a PIN lock, password encryption and Dropbox backups) are covered in Privacy and security, including what each one does not protect.
It is written in plain JavaScript (ES modules), HTML and CSS, with no framework and no build step.
title:, content:, emotion:, tag: and sign:, for example tag:lucid emotion:happy or title:"vacation dream". You can also filter to lucid or non-lucid dreams, limit by date range, sort (newest, oldest, lucid first, longest) and choose between pages of 5, 10, 20 or 50, endless scrolling, or everything at once.Your journal stays on your device unless you export it or connect Dropbox. This section describes what the code actually does, including the parts that are less protected than you might assume. Most of the code was written by AI tools and has had little human review (see About this project), so do not rely on it for anything you cannot afford to lose or leak.
Dreams, goals, voice notes and suggestion lists are kept in your browser's IndexedDB. Settings, the PIN hash and Dropbox tokens are kept in localStorage. If the browser will not open the database (for example, when site storage is blocked), the app shows a banner and holds entries in memory only, so they are lost when you close the page.
| Data | Encrypted when encryption is on? | In a complete JSON backup? |
|---|---|---|
| Dreams, goals, and tag, dream sign and emotion suggestions | Yes | Yes |
| Voice notes (audio) | No | No, by design (download them one at a time) |
| Settings (theme, page size, collapsed sections) | No | Theme, page size and the dream form's collapsed state |
| PIN | Not encrypted, but stored only as a salted hash | No |
| Dropbox sign-in tokens | Encrypted, with your journal password or a per-device key | No |
| Connected Dropbox account (name and email) | No | No |
.enc file) with a password you choose for it. It follows the same rules as the journal password (8 to 128 characters, very common passwords rejected), and the app does not store it, so keep it safe: a lost export password cannot be recovered. Exports without the checkbox, and the AI-analysis prompt file, are readable plain text.Imported files and cloud data are treated as untrusted: IDs are validated and text is escaped before it is displayed. A content security policy forbids inline scripts. Automated tests cover both.
Everything lives in your browser's storage, so clearing site data, resetting or uninstalling the browser, or running out of device storage can delete it. Private windows delete a site's data when they close. The app asks the browser to keep its storage, but browsers decide whether to agree. Safari also deletes a site's data after about a week of Safari use without visiting it, unless the site has been added to the Home Screen.
Connect an account under Settings → Cloud Sync.
dream-journal-cloud-sync.json, or .enc when encrypted) to your Dropbox, replacing the previous one. Download from Cloud replaces the dreams and goals on the current device with that file's contents.localhost).Everything is static, so you can run it from a plain file server:
git clone https://github.com/Webdreamjournal/DreamJournal.git
cd DreamJournal
python3 -m http.server 8000 # then open http://localhost:8000
The checks need Node 20 or newer:
npm install
npm run lint # ESLint, correctness rules only
npm test # node:test suites in tests/*.test.js, no browser needed
npm run test:e2e # Playwright tests in tests/e2e/ (needs Chromium)
npm run qa:screenshots # screenshots of every tab into qa-screenshots/
Set CHROMIUM_PATH to use an installed Chromium for the browser tests and the screenshots. CI (.github/workflows/test.yml) runs lint, the unit tests and the browser tests on pushes to main and on pull requests.
All modules sit flat in the repository root. src/app.js is only the entry point.
| Path | Role |
|---|---|
index.html | Static shell. The tab panels are rendered by JavaScript. |
main.js, action-router.js, state.js | Startup order and lock state, event delegation through data-action, and shared state. |
storage.js, storage-banner.js | IndexedDB and localStorage access, and the storage problem banner. |
security*.js, pin-*.js, encryption-*.js, lock-screen.js | Cryptography, the PIN, encryption settings, recovery and the lock screen. |
*tab.js, dream-crud.js, voice-notes.js, dom-helpers.js | The interface: tab rendering, dreams, voice notes, and the UI modules that dom-helpers.js re-exports. |
import-export.js, cloud-sync.js, device-key.js | Backups, Dropbox sync and token storage. |
sw.js, pwa.js, manifest.json | Offline support and installation. |
tests/ | Unit tests (*.test.js) and Playwright tests (e2e/). |
AGENTS.md has the full module table and the rules that have caused bugs here (for example read-only imports, escaping untrusted strings, no inline event handlers, and keeping the version and the service worker's precache list in step). Read it before changing code.
Diagnostics are silent by default. To see them, run localStorage.setItem('dreamJournalDebug', 'true') in the browser console and reload. console.warn and console.error always print.
Bump APP_VERSION in version.js, then update the README badge, the index.html footer and CACHE_NAME in sw.js to match. npm test fails if they drift.
Serve the repository root from any static host over HTTPS. There is nothing to build. Dropbox sync needs your own app key at a different address (see Dropbox backup).
Almost all of the code was written by AI tools, mainly Claude Code and Jules, and has had little human review. The lint, unit test and browser test suites, which run in CI, are the main safety net. Keep that in mind before trusting the PIN or encryption with anything important, and keep your own backups.
Distributed under the GNU Affero General Public License v3.0 or later (SPDX: AGPL-3.0-or-later). See LICENSE for the full text. Under the AGPL, if you offer a modified version to others over a network, you must also make its source available to those users.
Dream Journal is for entertainment and personal journalling only. It does not provide medical, psychological or therapeutic advice. If you have concerns about your sleep, dreams or mental health, please consult a qualified healthcare professional.