The Sight Words app now supports two separate PWA installations:
- Main PWA - For end users practicing sight words
- Admin PWA - For managing collections, generating share links, and editing word lists
Both PWAs share the same codebase but have different entry points and can be installed independently.
- URL:
https://jfledd.github.io/sightwords/ - Start URL:
/sightwords/ - Purpose: Practice flashcards, track progress
- Theme Color: Blue (#2563eb)
- URL:
https://jfledd.github.io/sightwords/admin.html - Start URL:
/sightwords/admin - Purpose: Manage collections, generate share links
- Theme Color: Purple (#6d28d9)
On Mobile:
- Navigate to
https://jfledd.github.io/sightwords/admin.html - Tap the browser's share button
- Select "Add to Home Screen"
- The Admin PWA will be installed and open directly to the admin interface
On Desktop:
- Navigate to
https://jfledd.github.io/sightwords/admin.html - Look for the install icon in the address bar (usually a ⊕ or 💻 icon)
- Click "Install"
- The Admin PWA will open as a standalone app
- Navigate to
/install-adminin the main app - Follow the on-screen instructions
- Copy the admin URL to share with other admins
- ✅ Practice flashcards from collections
- ✅ Track progress with sparkline graphs
- ✅ Session-based accuracy tracking
- ✅ Multi-collection practice mode
- ✅ Offline support
- ✅ Add custom collections
- ✅ Create and edit collections
- ✅ Persistent localStorage for admin collections
- ✅ Generate shareable collection links
- ✅ Export collections to JSON
- ✅ Import from JSON file
- ✅ CSV and per-line word formats
- ✅ Offline editing support
- ✅ Mobile-friendly responsive design
flashcards/
├── index.html # Main PWA entry point
├── admin.html # Admin PWA entry point
├── public/
│ ├── manifest.webmanifest # Main PWA manifest
│ └── admin-manifest.webmanifest # Admin PWA manifest
└── src/
├── main.ts # Shared entry point
└── views/
├── CollectionsView.vue # Main app
├── AdminView.vue # Admin interface
└── AdminInstallView.vue # Install instructions
Main Manifest (manifest.webmanifest):
- Start URL:
/sightwords/ - Scope:
/sightwords/ - Opens to collections view
Admin Manifest (admin-manifest.webmanifest):
- Start URL:
/sightwords/admin - Scope:
/sightwords/ - Opens to admin view
The Admin PWA uses separate localStorage to avoid conflicts:
- Main PWA:
flashcards-collectionskey - Admin PWA:
flashcards-admin-collectionskey
This allows:
- Users to have their own collections
- Admins to maintain a separate set of default/shareable collections
- No conflicts between user and admin data
Admins can create collections and share them with users:
- Open Admin PWA
- Create/edit collections
- Click "📤 Generate Share Link"
- Share the generated URL via text/email
- Recipients click the link to import collections
Share URLs look like:
https://jfledd.github.io/sightwords/addCollections?collections=<base64_data>
Both entry points are built together:
npm run buildThis generates:
dist/index.html- Main PWAdist/admin.html- Admin PWAdist/manifest.webmanifest- Main manifestdist/admin-manifest.webmanifest- Admin manifest
The vite.config.ts includes:
build: {
rollupOptions: {
input: {
main: resolve(__dirname, 'index.html'),
admin: resolve(__dirname, 'admin.html')
}
}
}Both HTML files are served from the same domain, so users can install either PWA version independently.
For Admins:
- Install Admin PWA from
admin.html - Create collections (e.g., "Grade 1 Words", "Dolch List")
- Generate share link
- Send link to parents/teachers
For End Users:
- Install Main PWA from main URL
- Receive share link from admin
- Click link to preview collections
- Select and import desired collections
- Practice with flashcards
✅ Separate installations - Users and admins don't interfere with each other ✅ Different starting points - Each PWA opens where it should ✅ Shared codebase - Maintain one project for both versions ✅ Easy sharing - Admins can easily distribute collections ✅ Offline capable - Both PWAs work without internet ✅ Professional - Admins get dedicated tools for management