• Mahmoud Aglan's avatar
    feat(proposal): replace static mockup with a working app prototype · cf882849
    Mahmoud Aglan authored
    The prototype in the proposal was eight inline <div>s toggled with
    display:none — screenshots in a phone bezel. It now embeds a real
    single-page app from app/, so the screens shown in the proposal are the
    screens that ship, and the board can actually use it.
    
    app/ — hash routed, so any screen is linkable (#/dues):
      splash, login, otp, home, dues, pay, paying, success, receipts, qr,
      invites, activities, activity/:id, schedule, notifications, profile
    
    State is live, not scripted. Selecting dues recomputes the total before
    paying; paying clears those dues, creates a receipt and posts a
    notification; issuing an invite decrements the balance; subscribing to an
    activity adds the subscription, consumes a place and generates the first
    invoice into المستحقات. The QR regenerates every 60s against a countdown
    ring. Dark/light theme persists. Verified end to end by driving the app in
    headless Chrome, not just by rendering it.
    
    Chose an SPA over the multi-page pattern used by the older Proposal/
    prototype: no white flash between screens, real forward/back transitions,
    and shared state across screens, which is the whole point of showing a
    collection flow.
    
    Proposal integration:
    - Phone hosts <iframe src="app/">; the side list drives it over
      postMessage and the prototype reports its route back, so the list and
      the annotation stay in sync when someone navigates inside the phone
    - Theme toggle, reset, and open-fullscreen controls
    - Annotation panel rewritten per screen
    
    Removed 409 lines of static screen markup and the 93 lines of CSS that
    served it (.sbar/.app-hd/.mcard/.tabbar/.sport-item/.otp-row/.qr-*),
    verified dead by checking real class= usage, not substring matches.
    
    Adds .dockerignore: the image is built with `COPY . /usr/share/nginx/html`,
    so any stray working file in this folder would be served publicly.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    cf882849
app.js 10.5 KB