A Vue 3 Progressive Web App (PWA) for practicing sight words with customizable flashcard collections.
- Customizable flashcard collections
- Progress tracking and statistics
- Practice sessions with configurable settings
- Import/Export data functionality
- Progressive Web App with offline support
- Default kindergarten word lists included
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewThis app is deployed to GitHub Pages using GitHub Actions. The deployment workflow is configured in .github/workflows/deploy.yml.
The project includes a .npmrc file that explicitly sets the npm registry to the standard public registry:
registry=https://registry.npmjs.org/
Why this is critical: Without this configuration, npm may attempt to use alternative registries (like private corporate registries) if they're configured in your user-level .npmrc. This causes deployment failures in GitHub Actions when those private registries are not accessible.
The package-lock.json must reference packages from https://registry.npmjs.org/ only. If you see references to other registries:
- Ensure
.npmrccontainsregistry=https://registry.npmjs.org/ - Delete
node_modules/andpackage-lock.json - Run
npm installto regenerate with correct registry URLs
The deployment workflow:
- Uses Node.js 20 with npm caching
- Downgrades to npm 9 (npm 10.x had issues with
.bindirectory creation in CI) - Installs dependencies with
npm install - Builds with
npm run build:ci(skips TypeScript checking for faster builds) - Deploys to GitHub Pages
Key learnings from deployment troubleshooting:
- npm 10.x issue: npm 10.8.2 had problems creating the
node_modules/.bin/directory with proper symlinks in GitHub Actions CI environment - Registry configuration: Must explicitly set registry in project
.npmrcto avoid private registry resolution - Hash-based routing: Uses
createWebHashHistoryinstead ofcreateWebHistoryfor GitHub Pages compatibility
npm run build- Full build with TypeScript type checkingnpm run build:ci- CI build without type checking (faster, used in deployment)
/src/views/- Vue components for main pages/src/stores/- Pinia stores for state management/src/utils/- Utility functions including data management/public/- Static assets including default word collections/.github/workflows/- GitHub Actions deployment configuration