Ascendara Monitor is a mobile-first web application that acts as a remote monitoring and control companion for Ascendara downloads. Built with Next.js, TypeScript, and Tailwind CSS, it provides a seamless experience for managing your downloads from anywhere.
- 6-Digit Connection Code: Secure connection to Ascendara desktop app using a simple 6-digit code
- End-to-End Encryption: All communications are encrypted end-to-end on the production webview at webview.ascendara.app
- Real-time Download Monitoring: View active, paused, completed, and failed downloads
- Download Controls: Pause, resume, and cancel downloads remotely
- Auto-refresh: Downloads update automatically every 30 seconds
- Mobile-first Design: Optimized for mobile devices with responsive layout
- Theme Customization: Multiple theme options with dark mode support
- PWA Support: Install as a Progressive Web App on mobile devices
- Modern UI: Built with shadcn/ui components and Tailwind CSS
- Framework: Next.js 16 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: shadcn/ui (New York style)
- Icons: Lucide React
- Node.js 20 or higher
- npm, yarn, pnpm, or bun
-
Clone the repository
git clone https://github.com/ascendara/webview.git cd webview -
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open http://localhost:3000 in your browser
To build a production-ready application:
npm run build
npm startWebview/
βββ app/
β βββ [code]/
β β βββ page.tsx # Dynamic code route handler
β βββ dashboard/
β β βββ page.tsx # Dashboard with download monitoring
β βββ error.tsx # Error boundary
β βββ favicon.ico # App icon
β βββ globals.css # Global styles and theme variables
β βββ layout.tsx # Root layout with providers
β βββ loading.tsx # Loading state
β βββ manifest.ts # PWA manifest configuration
β βββ not-found.tsx # 404 page
β βββ page.tsx # Connection page (home)
βββ components/
β βββ ui/ # shadcn/ui components
β β βββ alert-dialog.tsx # Alert dialog component
β β βββ button.tsx # Button component
β β βββ card.tsx # Card component
β β βββ input.tsx # Input component
β β βββ progress.tsx # Progress bar component
β β βββ skeleton.tsx # Skeleton loader
β β βββ toast.tsx # Toast notification
β β βββ toaster.tsx # Toast container
β βββ bottom-navbar.tsx # Mobile bottom navigation
β βββ code-input.tsx # 6-digit code input component
β βββ connection-guard.tsx # Connection state guard
β βββ download-card.tsx # Download card with controls
β βββ download-skeleton.tsx # Download loading skeleton
β βββ install-prompt.tsx # PWA install prompt
β βββ theme-button.tsx # Theme toggle button
β βββ theme-selector-modal.tsx # Theme selection modal
β βββ theme-selector.tsx # Theme picker component
βββ contexts/
β βββ theme-context.tsx # Theme context provider
βββ hooks/
β βββ use-toast.ts # Toast notification hook
βββ lib/
β βββ api.ts # API client and types
β βββ config.ts # App configuration
β βββ crypto.ts # End-to-end encryption utilities
β βββ format.ts # Formatting utilities
β βββ themes.ts # Theme definitions
β βββ utils.ts # Utility functions
β βββ version.ts # App version
βββ types/
β βββ cache-life.d.ts # Cache lifetime type definitions
β βββ routes.d.ts # Route type definitions
βββ .env.example # Environment variables template
βββ components.json # shadcn/ui configuration
βββ next.config.ts # Next.js configuration
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
- Open Ascendara desktop app
- Navigate to Settings β Remote Access
- Generate a 6-digit connection code
- Enter the code in the web app
- Start monitoring your downloads
For UI development and testing without requiring a real backend connection, the app includes a dev mock mode:
-
Start the development server:
npm run dev
-
Navigate to http://localhost:3000
-
Enter the connection code:
123456 -
You'll be redirected to a mock dashboard with simulated data
- No Real API Calls: All backend calls are blocked in mock mode to prevent accidental production requests
- Fake Download Data: Randomly generated game downloads with realistic names and sizes
- Simulated Progress: Download progress bars update automatically every 2 seconds
- Full UI Testing: Test pause, resume, and cancel actions without affecting real downloads
- Visual Indicator: A purple "DEVELOPMENT" badge appears in the bottom navbar
- Safe Disconnect: Exiting mock mode clears the dev session without affecting real data
- Production Safety: Dev mode only works when
NODE_ENV === 'development' - No Backend Required: Perfect for frontend development and UI iteration
- Isolated Environment: Mock mode uses separate localStorage keys and never touches real sessions
- API Protection: The API client automatically blocks all real network requests when mock mode is active
- Rapid UI prototyping and iteration
- Testing theme changes and animations
- Developing new download card layouts
- Testing loading states and empty states
- Component development without backend dependencies
- Pause: Temporarily stop a download
- Resume: Continue a paused download
- Cancel: Stop and remove a download
- Auto-refresh: Downloads update every 30 seconds automatically (configurable)
The application requires a backend API server to function. You'll need to set up your own monitor endpoint that implements the following API:
POST /verify-code- Verify connection codeGET /downloads- Fetch active downloadsPOST /downloads/:id/pause- Pause a downloadPOST /downloads/:id/resume- Resume a downloadPOST /downloads/:id/cancel- Cancel a downloadGET /check-connection- Check connection status
Configure your API endpoint in the application settings or environment variables.
This project is part of the Ascendara ecosystem
Licensed under MIT - 2026 tagoWorks
- Email: santiago@tago.works
- Website: tago.works
- Discord: Join our community