A high-performance, private APK distribution system featuring a sleek, Glassmorphism-designed Android Client and a secure Next.js Admin Dashboard. This platform allows Zeeshan to securely upload, manage, and install private Android applications without making files public.
- Glassmorphism UI: Stunning transparent aesthetics with floating background orbs and premium shadows.
- Smart Tracking: Background download progress that persists even if you dismiss the view.
- Instant Installation: Automatic APK integrity checks and seamless installation via native Android intents.
- Secure Access: Utilizes Supabase Signed URLs (100-year expiry) to keep storage buckets 100% private.
- Dynamic Refresh: Pull-to-refresh to fetch the latest builds instantly.
- Secure Uploads: Next.js Server Actions using the Supabase Service Role Key to bypass public RLS.
- Icon Management: Automatic icon and APK handling during the creation process.
- Global Deployment: Optimized for Vercel/Netlify hosting.
This is a monorepo containing two main projects:
| Directory | Type | Description |
|---|---|---|
/AndroidApp |
React Native | The mobile client for downloading and installing APKs. |
/webapp |
Next.js | The administrative dashboard for managing app data. |
- Frontend (Mobile): React Native (TypeScript), React Native Paper, Vector Icons.
- Frontend (Web): Next.js 14, Tailwind CSS, Lucide React.
- Backend / Storage: Supabase (PostgreSQL, Storage Buckets).
- Tooling: Jimp (Icon Generation), LocalTunnel (Instant Public Webaccess), Git.
- Node.js (v18+)
- Android Studio & SDK
- Supabase Account
Create a .env file in both directories:
AndroidApp/.env
NEXT_PUBLIC_SUPABASE_URL=your_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_keywebapp/.env
NEXT_PUBLIC_SUPABASE_URL=your_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_keycd webapp
npm install
npm run devcd AndroidApp
npm install
npm run android(Add your screenshots here to WOW your users!)
This project is built with a Security-First mindset:
- Private Buckets: Your APKs and Icons are never public.
- Signed URLs: The app uses temporary (but long-lived) signed tokens to download assets.
- Service Role: Backend operations are protected by the Supabase Service Role key, which is never exposed to the client app.