A modern, joyful, phone-first public demo for outdoor cinema nights, friend circles, RSVPs and shared meals in Amity, Minjerribah.
The public demo centres on an organiser home profile and any number of separate friend circles. Friends can help with individual nights, and each event can invite one circle, several circles or selected people. Monday and Tuesday are quick choices, while any day of the week remains available.
- First substantive public-demo build: 29 August 2026, at commit
df96ecb. - GitHub repository: Amity Cinema Circle.
- Public demo: open Amity Cinema Circle.
- Directly connected public project: Amity Sauna Circle - public sample.
- Service boundary: this GitHub Pages project is public; the separate Cloudflare version is the private service path.
The GitHub Pages edition is the public browser-local demonstration. The separate Cloudflare version is the private service path, not a public replacement for this demo.
The public edition now begins with two complete guided journeys:
- a 10-step organiser setup that builds the organiser profile first, then names and styles the home, adds place media, gathers friend circles, creates the first event and previews its invitation;
- a separate guest journey through a sample event invitation, the event and place preview, RSVP, ways to take part and a short practical profile before normal navigation appears.
The wider interactive sample also includes:
- an invitation-style entry;
- the next cinema night and weather state;
- RSVP, partner, friend and child counts;
- per-night food responsibility: shared, rotating, catered by the home owner, bring your own, or no food plan;
- optional food offers and ways to help when the chosen arrangement needs them;
- movie polling;
- temporary event topics and sample chat;
- invited people and the practical place guide;
- notification preferences;
- a full practical profile for organisers and guests, including food needs, contact preference and ways they might like to help;
- Home, Nights, Chat, People and Me in the main navigation, with profile completion required before an organiser can plan a night;
- Monday and Tuesday shortcuts plus an unrestricted date picker;
- separate invite choices for friend circles and individual friends;
- editable circle and place names, an expandable place-feature list, and editable feature notes;
- fairy lights recorded as a fixed part of the place rather than a per-night option;
- privacy controls that change when invited friends can see media, directions, guest details and chat;
- four whole-app colour styles;
- full place photo sets prepared in the browser, including iPhone HEIC and HEIF where the browser supports them;
- a touch-friendly 360 viewer for stitched GoPro Max panoramas, with phone motion and a flat-image fallback;
- optional profile photos from a phone or computer, prepared as a small square copy in the browser;
- a link to Amity Sauna Circle;
- installable PWA foundations.
The organiser creates friend circles and adds the people who belong to them before planning the first night. The app does not fill the event with fake friends. Most sample choices may stay in the visitor's browser. Prepared profile photos, place photos, 360 views and food notes are kept only for the current tab and disappear on reload. The demo has no real authentication, database, address, secure invitation token, private dietary record or cross-device chat.
GitHub Pages project sites under the same account share one browser origin. For that reason, this demo does not persist photos, 360 views or food notes.
The repository contains the full human-readable source code, configuration, tests, documentation and original project artwork. GitHub Pages is built from this same repository by the workflow in .github/workflows/deploy-pages.yml.
The project uses the Strange But True Public Source Licence. It allows personal, educational, artistic, research, community and other non-commercial use with attribution. All commercial rights are reserved to Luke Nathan Hayes.
Third-party packages retain their own licences. Their required notices are recorded in THIRD_PARTY_NOTICES.md.
Open PowerShell and run:
cd C:\Users\lukec\Documents\GitHubLocal\amity-cinema-circle
npm.cmd install
npm.cmd run devThen open http://localhost:3000. If another local app already uses port 3000, Next.js will print the replacement address, usually port 3001.
npm.cmd test
npm.cmd run lint
npm.cmd run buildTo make the same static build used by GitHub Pages:
$env:GITHUB_PAGES = "true"
npm.cmd run build
Remove-Item Env:GITHUB_PAGESThe exported site will be in out.
The separate Cloudflare path is for the private invitation service, not another public demo. Its staging foundation is kept separately so real accounts, invitations, messages and private household information cannot be confused with the browser-local GitHub Pages demonstration.
The separate private staging foundation is source code for local testing, not a remotely deployed private service. Its API refuses invitation redemption, profile completion and home setup for an unverified account. Remote private deployment is blocked until transactional email verification and password recovery are implemented and tested. Matching an invitation token to its recorded email address does not prove that the person using the token controls that email account.
wrangler.private-staging.example.jsonc declares BETTER_AUTH_SECRET as a required encrypted Worker secret without storing its value in the repository. Its low-traffic staging observability retains deliberately emitted safe diagnostics, while automatic invocation logs and automatic tracing remain disabled. Private values such as invitation tokens, email addresses, cookies, authorisation headers, profile details, chats, dietary information, request bodies and full URLs must never be written to logs.
app/contains the Next.js entry, metadata and visual system.components/cinema-app.tsxcontains the main public demo experience.components/onboarding-journeys.tsxcontains the organiser and friend journeys plus safe in-tab photo preparation.components/place-media.tsxprepares ordinary place photos and stitched 360 panoramas, then runs the local Pannellum viewer.lib/demo-store.tsxkeeps sample changes in browser storage.lib/demo-data.tscontains the clearly fictional sample nights. Friends are added through the organiser flow.lib/date.tsderives any weekday from the organiser's selected date.worker/private-staging/contains the separate same-origin account and invitation API foundation.migrations/private-staging/contains Better Auth and application D1 migrations for the future private edition.wrangler.private-staging.example.jsoncis a redacted, separately named staging configuration and cannot target the public Amity Worker by accident.public/contains the PWA pieces and the compressed cinema hero used by the site.public/vendor/pannellum/contains the self-hosted Pannellum viewer and its MIT licence.artwork/preserves the original generated cinema artwork without copying it into the deployed site.docs/PRIVATE_CLOUDFLARE_PATH.mddefines the secure production boundary and next build.LICENCE.mdis the Strange But True Public Source Licence for this repository.
artwork/amity-cinema-hero-original.png was generated specifically for this project with OpenAI's built-in image generation tool on 29 August 2026. The original PNG is preserved in the repository, and public/amity-cinema-hero.webp is the smaller phone-friendly copy used by the interface.
It depicts a fictional coastal Queensland backyard. It is not a photograph or map of the real property, does not identify any person, and does not claim to depict Quandamooka cultural material.
This public repository shows the application's design and reusable behaviour. The separate private Cloudflare service must never contain:
- the street address or an access map;
- real invitation links or codes;
- production secrets;
- real guest names, chats or attendance;
- private dietary or health information;
- sauna diary information;
- private host notes.
The real invitation-only service requires a server-enforced Cloudflare deployment. Do not use the public GitHub Pages demo to organise real private events.