New `mobile` Django app mounted at /app/ -- the installed PWA for Member mode (M1-M7, see design_handoff_rosterchief_platform/README.md). Coach mode (C1-C6) is a later phase and has no routes yet. Foundation pieces: - assets/mobile.css: Tailwind v4 theme reusing management.css's design tokens (same per-club --tenant-* theming pattern), plus the ice/coach accent and mobile's 14px card radius. - PushSubscription model + pywebpush-based sender (mobile/services/push.py), wired to notifications.Notification via a post_save signal so the existing notification system gains a push channel without knowing about PWAs itself. - Per-club manifest.webmanifest + service worker (served at /app/sw.js) + a server-rendered fallback home-screen icon (club initials on secondary_color) for clubs without an uploaded logo -- confirmed with the user as the fallback, never a generic RosterChief mark. - App shell (base.html): navy header, person switcher (every child a signed-in parent manages, plus "Me"), bottom tab bar, safe-area insets. Vendored htmx + Alpine for the screens built on top of it. - Placeholder views/routes for all seven M1-M7 screens so the shell is fully wired end-to-end before each screen is built out individually. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ECGMEwrc2k4D8VQuwjstj9
37 lines
2.2 KiB
JSON
37 lines
2.2 KiB
JSON
{
|
|
"name": "rosterchief",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "npm run build:app && npm run build:controlpanel && npm run build:management && npm run build:mobile",
|
|
"build:app": "tailwindcss -i ./assets/app.css -o ./static/css/app.css --minify",
|
|
"build:controlpanel": "tailwindcss -i ./assets/controlpanel.css -o ./static/css/controlpanel.css --minify",
|
|
"build:management": "tailwindcss -i ./assets/management.css -o ./static/css/management.css --minify",
|
|
"build:mobile": "tailwindcss -i ./assets/mobile.css -o ./static/css/mobile.css --minify",
|
|
"watch": "tailwindcss -i ./assets/app.css -o ./static/css/app.css --watch",
|
|
"watch:controlpanel": "tailwindcss -i ./assets/controlpanel.css -o ./static/css/controlpanel.css --watch",
|
|
"watch:management": "tailwindcss -i ./assets/management.css -o ./static/css/management.css --watch",
|
|
"watch:mobile": "tailwindcss -i ./assets/mobile.css -o ./static/css/mobile.css --watch",
|
|
"vendor:chart": "node -e \"const fs=require('fs');const s=fs.readFileSync('node_modules/chart.js/dist/chart.umd.js','utf8').split('\\n').filter(l=>!l.startsWith('//# sourceMappingURL=')).join('\\n');fs.writeFileSync('static/js/chart.js',s)\"",
|
|
"vendor:htmx": "node -e \"const fs=require('fs');const s=fs.readFileSync('node_modules/htmx.org/dist/htmx.min.js','utf8').split('\\n').filter(l=>!l.startsWith('//# sourceMappingURL=')).join('\\n');fs.writeFileSync('static/js/htmx.js',s)\"",
|
|
"vendor:alpine": "node -e \"const fs=require('fs');const s=fs.readFileSync('node_modules/alpinejs/dist/cdn.min.js','utf8').split('\\n').filter(l=>!l.startsWith('//# sourceMappingURL=')).join('\\n');fs.writeFileSync('static/js/alpine.js',s)\""
|
|
},
|
|
"devDependencies": {
|
|
"@fontsource-variable/jetbrains-mono": "^5.2.8",
|
|
"@fontsource-variable/roboto": "^5.2.10",
|
|
"@fontsource-variable/tourney": "^5.2.8",
|
|
"@fontsource/barlow": "^5.3.0",
|
|
"@fontsource/barlow-condensed": "^5.3.0",
|
|
"@fontsource/ibm-plex-mono": "^5.3.0",
|
|
"@fontsource/ubuntu": "^5.2.8",
|
|
"@tailwindcss/cli": "^4.1.0",
|
|
"daisyui": "^5.0.0",
|
|
"tailwindcss": "^4.1.0"
|
|
},
|
|
"dependencies": {
|
|
"alpinejs": "^3.15.0",
|
|
"chart.js": "^4.5.1",
|
|
"htmx.org": "^2.0.4"
|
|
}
|
|
}
|