A standalone Windows film diary built with Rust and Tauri. No Node installation, bundled Node runtime, HTTP server, or port is required. Plain HTML, CSS and JavaScript provide the editor interface; Rust handles storage and website generation through Tauri commands.
Open MyFilmDiary.exe. Share that single file with other Windows x64 users. Microsoft WebView2 is required (normally present on Windows 10/11). The EXE is unsigned. Personal film data and posters are never embedded.
First launch creates an empty website in the actual Windows Documents/My Film Diary folder, including redirected or OneDrive Documents. Later launches reopen the selected diary. Existing settings and diaries from the earlier Node version work without conversion.
The selected folder contains films.js (window.FILMS = [ ... ];), index.html, style.css, site.js, favicon.svg, .nojekyll and images/. Film posters load from this folder. HTTPS poster URLs are also supported.
Add, edit and delete entries in the desktop app. Entries needing notes appear first by default. Saving updates films.js and the public site. The website uses minimal cards, full details in a popup, filters, pagination and best-liked-first sorting. Your own feelings are independent of IMDb ratings.
Preview website opens that folder's index.html directly in your default browser, using a file URL. The website needs no server and remains usable after closing the editor. Publish the website folder's contents through your own GitHub workflow; the app never publishes automatically. Your notes become public when you publish this folder.
Settings selects another website folder, default editor sort, optional author name or custom Code.exe path. An existing diary opens its own films.js; an empty folder creates a new diary. Switching folders preserves the previous diary. Open in VS Code opens the selected website folder for manual commits and pushes.
Do not edit generated HTML/CSS/JS directly: exporting replaces them. To edit film data manually, close the editor and keep films.js valid JSON inside its window.FILMS assignment. Invalid files produce an error and are preserved.
Settings stay in %LOCALAPPDATA%/MyFilmDiary/settings.json. Recommendation history, the previous archive revision, interrupted-save recovery records and original snapshots remain under %LOCALAPPDATA%/MyFilmDiary/diaries/<folder-hash>/. The existing folder hashes are retained. These files are never added to the public website.
Back up diary saves a timestamped JSON file in that diary's private backups/ directory and reports its full path. For a complete backup, copy both the website folder and the MyFilmDiary AppData folder. Do not publish AppData. Move/copy the whole website folder before selecting its new location; private history is associated with the folder path.
Settings also supports importing an old project containing data/archive.json and public/images. Import into an empty diary: active posters go into the website; all original thumbnails and recommendation history are preserved privately. Source files and videos are kept.
The optional film agent is an external coding assistant workflow described in agent/FILM_AGENT.md. The app does not run an AI model. Its existing recommendation history remains available in the editor.
For automation while the editor is closed, the EXE accepts a JSON request file and writes a JSON response file:
& '.\MyFilmDiary.exe' --diary-command 'C:\path\request.json' --output 'C:\path\response.json'Example request:
{"route":"/api/archive","method":"GET"}The /api/... labels are command names retained for compatibility, not HTTP endpoints. Responses contain { "ok": true, "data": ... } or { "ok": false, "error": ... }. Supported operations include archive/settings reads, film CRUD, website rebuilds, backups, legacy imports and recommendation creation/feedback. Commands and the desktop editor use the same Rust validation and storage. Close the editor before issuing commands to avoid competing writers.
The docs/ folder contains the separate My Film Diary promotional website, ready for manual publishing. Open docs/index.html to preview it. It includes a public EXE download and a static website preview. Configure optional GitHub release and source links in docs/site-config.js; see docs/README.md for details.
Source lives in desktop/src/ and public/. Run build_windows.bat to create dist/MyFilmDiary.exe. Building requires Rust and Microsoft C++ Build Tools. Cargo downloads Tauri dependencies on the first build; offline builds require cached crates. Node is not required for building or running.
Run cargo test --manifest-path desktop/Cargo.toml --locked --offline for native storage, validation, recovery, migration, metadata preservation and website tests. npm test is an optional shorthand for that exact Cargo command for existing developer workflows; package.json is not part of the running application.
The source repository's .gitignore excludes private data, generated sites, logs, build caches and dist. Commit the source to GitHub; attach MyFilmDiary.exe to a GitHub Release. Publish your own website using a separate repository for the Documents website folder.
The previous Node implementation is retained in legacy-node/ for rollback and reference. It is not used by the native build or embedded in the EXE.