• 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
Name
Last commit
Last update
.claude Loading commit data...
Another ERP that we may want to cheat from Loading commit data...
HR requests Loading commit data...
Proposal Loading commit data...
Server Connection Data Loading commit data...
app Loading commit data...
config Loading commit data...
cron Loading commit data...
database Loading commit data...
docker Loading commit data...
docs Loading commit data...
public Loading commit data...
support_tickets_downloads/support_screenshots Loading commit data...
tests Loading commit data...
tools Loading commit data...
.dockerignore Loading commit data...
.editorconfig Loading commit data...
.env Loading commit data...
.env.example Loading commit data...
.gitignore Loading commit data...
.php-cs-fixer.php Loading commit data...
BalanceSheet.html Loading commit data...
CLAUDE.md Loading commit data...
Dockerfile Loading commit data...
Makefile Loading commit data...
SYSTEM_MAP.md Loading commit data...
Sports Module System Design DETAILED.md Loading commit data...
UPGRADE_PLAN.md Loading commit data...
captain-definition Loading commit data...
cli.php Loading commit data...
composer.json Loading commit data...
composer.lock Loading commit data...
interesting_features.md Loading commit data...
phpstan.neon Loading commit data...
phpunit.xml Loading commit data...
sports activity stuff .txt Loading commit data...
sports-activity-alignment-plan.md Loading commit data...
sports-activity-smart-filtering-plan.md Loading commit data...
trial_balance_2026-01-01_to_2026-05-10.csv Loading commit data...