# Echoes of the Ashes - PWA A Progressive Web App (PWA) version of Echoes of the Ashes, bringing the post-apocalyptic survival RPG to web and mobile browsers. ## Features - 🎮 **Play on Any Device**: Works on desktop, tablet, and mobile browsers - 📱 **Install as App**: Add to home screen for app-like experience - 🔔 **Push Notifications**: Get notified of game events even when app is closed - 📶 **Offline Support**: Continue playing even without internet connection (coming soon) - 🔐 **Web Authentication**: Separate login system from Telegram - ⚡ **Fast & Responsive**: Optimized for quick loading and smooth gameplay ## Technology Stack - **Frontend**: React 18 + TypeScript + Vite - **Styling**: CSS3 with mobile-first responsive design - **PWA**: Workbox for service worker and offline functionality - **API**: FastAPI backend with JWT authentication - **State Management**: Zustand (lightweight alternative to Redux) - **HTTP Client**: Axios with interceptors ## Project Structure ``` pwa/ ├── public/ # Static assets (icons, manifest) ├── src/ │ ├── components/ # React components │ │ ├── Login.tsx # Login/Register page │ │ └── Game.tsx # Main game interface │ ├── contexts/ # React contexts │ │ └── AuthContext.tsx # Authentication state │ ├── hooks/ # Custom React hooks │ │ └── useAuth.ts # Auth hook │ ├── services/ # API services │ │ └── api.ts # Axios instance │ ├── App.tsx # Main app component │ ├── App.css # Global styles │ ├── main.tsx # Entry point │ └── index.css # Base styles ├── index.html # HTML template ├── vite.config.ts # Vite configuration + PWA setup ├── package.json # Dependencies └── tsconfig.json # TypeScript configuration ``` ## Development ### Prerequisites - Node.js 20+ - npm or yarn ### Install Dependencies ```bash cd pwa npm install ``` ### Run Development Server ```bash npm run dev ``` The app will be available at `http://localhost:3000` ### Build for Production ```bash npm run build ``` Output will be in `dist/` directory. ## Deployment The PWA is deployed as a Docker container behind Traefik reverse proxy: - **Production URL**: https://echoesoftheashgame.patacuack.net - **SSL**: Automatic HTTPS via Traefik + Let's Encrypt - **Container**: Nginx serving static React build ### Docker Build ```bash docker build -f Dockerfile.pwa -t echoes-pwa . ``` ### Environment Variables No environment variables needed for the PWA frontend. API URL is determined by `import.meta.env.PROD`: - **Development**: `http://localhost:3000` (proxied to API) - **Production**: `https://echoesoftheashgame.patacuack.net` ## API Integration The PWA communicates with the FastAPI backend at `/api/*`: ### Authentication Endpoints - `POST /api/auth/register` - Register new account - `POST /api/auth/login` - Login with credentials - `GET /api/auth/me` - Get current user info ### Game Endpoints - `GET /api/game/state` - Get player state - `POST /api/game/move` - Move player - More endpoints coming soon... ## PWA Features ### Service Worker Configured in `vite.config.ts` using `vite-plugin-pwa`: - **Auto Update**: Prompts user to reload when new version available - **Cache Strategy**: NetworkFirst for API, CacheFirst for images - **Offline Ready**: Caches essential assets for offline use ### Manifest PWA manifest in `vite.config.ts`: - **Name**: Echoes of the Ashes - **Icons**: 192x192 and 512x512 PNG icons - **Display**: Standalone (looks like native app) - **Theme**: Dark mode (#1a1a1a) ### Installation Users can install the PWA: - **Desktop**: Click install button in address bar - **iOS**: Share → Add to Home Screen - **Android**: Browser will prompt to install ## Roadmap - [ ] Complete game state API integration - [ ] Implement inventory management UI - [ ] Add combat interface - [ ] Create interactive map view - [ ] Implement NPC interactions - [ ] Add push notification service - [ ] Improve offline caching strategy - [ ] Add service worker update notifications - [ ] Implement WebSocket for real-time updates - [ ] Add sound effects and music - [ ] Create onboarding tutorial - [ ] Add accessibility features ## Contributing This is part of the Echoes of the Ashes project. See main README for contribution guidelines. ## License Same as main project.