EVENT DAYS
A reusable personal event calendar starter

WHAT IS INCLUDED
A working fictional demo with Timeline, Agenda, and Map views; colored event-count dots; status labels; event details; copy-address controls; source notes; and mobile layouts. There are no connected accounts, sign-in flow, database, write API, or background updates in this download.

QUICK START WITH CODEX OR CLAUDE
1. Download and unzip event-days-starter.zip.
2. Attach the ZIP or open its extracted folder in your coding assistant.
3. Paste SETUP-PROMPT.txt.
4. Tell the assistant your city/trip, dates, timezone, and the email/calendar sources you want to use. Connect your own accounts through supported setup, or supply calendar exports.
5. Have it build a separate private copy. The public preview remains fictional.

TRY THE DEMO WITHOUT SETUP
Open index.html in a browser. The calendar works without a server or account. The map needs internet access for OpenStreetMap tiles; event lists and address links remain available if tiles fail. Clipboard fallback is included for browsers that do not allow copying from a local file.

FOR DEVELOPERS
Node.js 20 or newer is sufficient; there are no npm dependencies.
  npm run build
  npm test
  npm start
Then open http://127.0.0.1:4173. The local server binds to loopback only.

The supplied tests validate the included fictional demo. When personalizing the app, adapt test fixtures and expectations to the new dates and data.

Edit config.json for the title, timezone, startDate, endDate, map center and zoom. The displayed date range can be 1 to 62 days. Edit data/demo.json to change the fictional events. Coordinates in data/venue-coordinates.json are keyed by an exact physical address. Run npm run build after edits. The build writes dist/index.html, the downloadable ZIP, and a ready-to-open index.html.

FILES
- web/: source HTML, CSS, calendar behavior, interactive map, and bundled Leaflet
- data/demo.json: clearly fictional sample records
- data/venue-coordinates.json: public landmark coordinates used for map demonstration
- config.json: configurable date range and timezone
- SETUP-PROMPT.txt: copy/paste instructions for your assistant
- scripts/: dependency-free build, local server, and tests
- index.html: prebuilt fictional demo

PRIVACY AND ACCESS
All sample events are fictional. The three map locations are public landmarks, not actual event venues. No personal calendar records, source email links, account identifiers, credentials, private deployment configuration, or Git history are included.

The demo is a static app. Changing a title or adding data does not create authentication. If you replace the samples with real events, keep the result local or use genuinely private hosting. The complete dataset is present in the page and downloadable source. Do not upload personal data to a public host. A shared URL does not give each visitor separate storage or access to their own accounts.

A reusable multi-user service would need authenticated identity, isolated data, visitor-specific consent, safe server-side source access, and tested refresh behavior. Those features are intentionally not represented as already working here.

Maps request tiles from OpenStreetMap only when the Map view is opened. The provider receives your IP address and visible map area; event titles are not sent. Google Maps receives an address only when its link is clicked. Check the tile provider's current usage policy before deploying at scale. There is no analytics code or automatic location permission request.

DATA SHAPE
Each event has a unique id, title, status, date, optional start/end (ISO timestamps with explicit offsets), venue, address, notes, and sources. Status is confirmed, pending, invited, declined, cancelled, or travel. Optional fields include statusLabel, flexible, flexibleLabel, timeUncertain, and selectedSessions. An unknown end time is not a made-up duration. Use verified coordinates; unknown and virtual locations remain unpinned.

THIRD-PARTY NOTICE
The map uses Leaflet, distributed under its retained BSD 2-Clause license in web/vendor/LEAFLET-LICENSE.txt. Map attribution is retained. All included appointments are fictional examples.
