mirror of
https://github.com/AeThex-Corporation/AeThex-OS.git
synced 2026-04-17 14:17:21 +00:00
new file: EMBED_CODES.html
This commit is contained in:
parent
f7250d1ddc
commit
01145ad755
11 changed files with 1210 additions and 16 deletions
302
DISTRIBUTION_SETUP.md
Normal file
302
DISTRIBUTION_SETUP.md
Normal file
|
|
@ -0,0 +1,302 @@
|
|||
# AeThex OS Distribution - Complete Setup Guide
|
||||
|
||||
## 🎯 Overview
|
||||
|
||||
You now have a complete Roblox-style distribution system with:
|
||||
- ✅ Beautiful download page at `/download`
|
||||
- ✅ Server API endpoints for downloading installers
|
||||
- ✅ Auto-update system built into desktop app
|
||||
- ✅ Web launcher for one-click installs
|
||||
- ✅ Marketing materials and embed codes
|
||||
|
||||
## 📦 Build the Production Installer
|
||||
|
||||
Before users can download, you need to build the production installer:
|
||||
|
||||
```bash
|
||||
# Build desktop app (takes ~5-10 minutes first time)
|
||||
cd shell/aethex-shell
|
||||
npm run tauri build
|
||||
|
||||
# Creates two installers:
|
||||
# 1. shell/aethex-shell/src-tauri/target/release/bundle/nsis/AeThex-OS_0.1.0_x64-setup.exe (2.5 MB)
|
||||
# 2. shell/aethex-shell/src-tauri/target/release/bundle/msi/AeThex-OS_0.1.0_x64_en-US.msi (3.7 MB)
|
||||
```
|
||||
|
||||
## 🚀 Server Setup
|
||||
|
||||
### 1. Start Your Server
|
||||
|
||||
```bash
|
||||
# From project root
|
||||
npm run dev
|
||||
|
||||
# Server runs on: http://localhost:5000
|
||||
# React app: http://localhost:5000/download
|
||||
```
|
||||
|
||||
### 2. API Endpoints (Automatic)
|
||||
|
||||
These endpoints are already configured:
|
||||
|
||||
```
|
||||
http://localhost:5000/api/download/desktop → NSIS installer
|
||||
http://localhost:5000/api/download/desktop/msi → MSI installer
|
||||
http://localhost:5000/api/download/version → Version info (for auto-updates)
|
||||
```
|
||||
|
||||
## 🌐 How Users Install
|
||||
|
||||
### Method 1: Website Download Page
|
||||
```
|
||||
User visits: http://localhost:5000/download
|
||||
Clicks: "Download for Windows"
|
||||
Downloads: AeThex-OS-setup.exe
|
||||
Runs installer → App installed!
|
||||
```
|
||||
|
||||
### Method 2: Direct Download Link
|
||||
```
|
||||
User clicks: http://localhost:5000/api/download/desktop
|
||||
Browser downloads installer immediately
|
||||
```
|
||||
|
||||
### Method 3: Web Launcher (Auto-start)
|
||||
```
|
||||
User visits: http://localhost:5000/launcher.html?autoinstall=true
|
||||
Download starts automatically
|
||||
```
|
||||
|
||||
## 🔄 Auto-Update System
|
||||
|
||||
The desktop app automatically checks for updates:
|
||||
|
||||
### How It Works
|
||||
1. On launch, app checks: `https://aethex.dev/api/download/version`
|
||||
2. Compares current version (0.1.0) with latest version
|
||||
3. If new version available, shows update dialog
|
||||
4. User clicks "Update" → downloads and installs new version
|
||||
|
||||
### To Release an Update
|
||||
|
||||
1. **Increment version** in `shell/aethex-shell/package.json`:
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0"
|
||||
}
|
||||
```
|
||||
|
||||
2. **Rebuild** the installer:
|
||||
```bash
|
||||
cd shell/aethex-shell
|
||||
npm run tauri build
|
||||
```
|
||||
|
||||
3. **Deploy** new installers to your server
|
||||
|
||||
4. **Users get notified** automatically on next launch
|
||||
|
||||
## 🎨 Marketing Materials
|
||||
|
||||
All created in `MARKETING_MATERIALS.md`:
|
||||
|
||||
### Social Media Posts
|
||||
- ✅ Twitter/X post
|
||||
- ✅ LinkedIn announcement
|
||||
- ✅ Discord message
|
||||
- ✅ Reddit post
|
||||
|
||||
### Embed Codes
|
||||
- ✅ HTML buttons
|
||||
- ✅ JavaScript widgets
|
||||
- ✅ React components
|
||||
- ✅ Email signatures
|
||||
|
||||
All embed codes in `EMBED_CODES.html`
|
||||
|
||||
## 📊 Testing Locally
|
||||
|
||||
### 1. Test Download Page
|
||||
```bash
|
||||
# Start server
|
||||
npm run dev
|
||||
|
||||
# Visit in browser
|
||||
http://localhost:5000/download
|
||||
|
||||
# Click "Download for Windows"
|
||||
# Should see 404 if installer not built yet
|
||||
```
|
||||
|
||||
### 2. Build Installer (Recommended)
|
||||
```bash
|
||||
cd shell/aethex-shell
|
||||
npm run tauri build
|
||||
|
||||
# Wait 5-10 minutes
|
||||
# Installer will be created at:
|
||||
# src-tauri/target/release/bundle/nsis/AeThex-OS_0.1.0_x64-setup.exe
|
||||
```
|
||||
|
||||
### 3. Test Download Again
|
||||
```bash
|
||||
# Restart server if needed
|
||||
npm run dev
|
||||
|
||||
# Visit download page
|
||||
http://localhost:5000/download
|
||||
|
||||
# Click "Download for Windows"
|
||||
# Should download AeThex-OS-setup.exe
|
||||
```
|
||||
|
||||
## 🌍 Production Deployment
|
||||
|
||||
### Option 1: Deploy to aethex.dev (Recommended)
|
||||
|
||||
1. **Build installer locally**:
|
||||
```bash
|
||||
cd shell/aethex-shell
|
||||
npm run tauri build
|
||||
```
|
||||
|
||||
2. **Deploy to your server** (Railway, Vercel, etc.)
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "feat: add download system and installers"
|
||||
git push
|
||||
```
|
||||
|
||||
3. **Upload installers** to your server or CDN
|
||||
- Option A: Commit installers to repo (not recommended, large files)
|
||||
- Option B: Upload to S3/R2/DigitalOcean Spaces
|
||||
- Option C: Host on GitHub Releases
|
||||
|
||||
### Option 2: Use GitHub Releases
|
||||
|
||||
1. **Create release on GitHub**:
|
||||
```bash
|
||||
git tag v0.1.0
|
||||
git push origin v0.1.0
|
||||
```
|
||||
|
||||
2. **Upload installers** to GitHub release page
|
||||
|
||||
3. **Update download routes** in `server/download-routes.ts`:
|
||||
```typescript
|
||||
const installerPath = 'https://github.com/[username]/[repo]/releases/download/v0.1.0/AeThex-OS-setup.exe';
|
||||
```
|
||||
|
||||
### Option 3: CDN Hosting
|
||||
|
||||
1. **Upload to CDN** (Cloudflare R2, AWS S3, DigitalOcean Spaces)
|
||||
|
||||
2. **Update download routes** to point to CDN URLs:
|
||||
```typescript
|
||||
const installerPath = 'https://cdn.aethex.dev/downloads/AeThex-OS-setup.exe';
|
||||
```
|
||||
|
||||
## 🔐 Production Checklist
|
||||
|
||||
Before going live:
|
||||
|
||||
- [ ] Build production installer (`npm run tauri build`)
|
||||
- [ ] Test download locally
|
||||
- [ ] Choose hosting method (GitHub Releases / CDN / Server)
|
||||
- [ ] Update production URLs in code if needed
|
||||
- [ ] Test auto-update system
|
||||
- [ ] Verify installers work on clean Windows machine
|
||||
- [ ] Set up analytics tracking
|
||||
- [ ] Prepare social media posts
|
||||
- [ ] Create launch announcement
|
||||
|
||||
## 📈 Analytics & Monitoring
|
||||
|
||||
### Track Downloads
|
||||
|
||||
Add to your download page (`client/src/pages/download.tsx`):
|
||||
|
||||
```typescript
|
||||
const handleDownload = async () => {
|
||||
// Track with your analytics
|
||||
gtag('event', 'download_start', {
|
||||
event_category: 'installer',
|
||||
event_label: 'windows_desktop'
|
||||
});
|
||||
|
||||
// ... download logic
|
||||
};
|
||||
```
|
||||
|
||||
### Monitor Active Users
|
||||
|
||||
The `/api/download/version` endpoint logs all update checks:
|
||||
- Track how many users check for updates
|
||||
- Monitor active installations
|
||||
- Track update adoption rate
|
||||
|
||||
## 🎬 Launch Strategy
|
||||
|
||||
### Week Before Launch
|
||||
1. Build and test installer thoroughly
|
||||
2. Set up hosting infrastructure
|
||||
3. Prepare social media posts
|
||||
4. Notify mailing list subscribers
|
||||
|
||||
### Launch Day
|
||||
1. Deploy download system
|
||||
2. Post on all social media channels
|
||||
3. Share on Reddit, Hacker News, IndieHackers
|
||||
4. Email announcement to users
|
||||
5. Monitor download metrics
|
||||
|
||||
### Week After Launch
|
||||
1. Gather user feedback
|
||||
2. Fix critical bugs
|
||||
3. Share success metrics
|
||||
4. Plan first update (v0.2.0)
|
||||
|
||||
## 🆘 Troubleshooting
|
||||
|
||||
### "Port 1420 already in use"
|
||||
```bash
|
||||
# Kill the process
|
||||
taskkill //F //PID [process-id-from-netstat]
|
||||
```
|
||||
|
||||
### "Installer not found" error
|
||||
```bash
|
||||
# Build the installer first
|
||||
cd shell/aethex-shell
|
||||
npm run tauri build
|
||||
```
|
||||
|
||||
### Download fails in browser
|
||||
- Check if installer exists at expected path
|
||||
- Verify server has read permissions
|
||||
- Check browser console for errors
|
||||
- Test direct API endpoint: `http://localhost:5000/api/download/desktop`
|
||||
|
||||
### Auto-update not working
|
||||
- Verify `tauri.conf.json` updater endpoint is correct
|
||||
- Check version endpoint returns valid JSON
|
||||
- Ensure app has internet connection
|
||||
- Look at console logs in desktop app
|
||||
|
||||
## 📞 Support & Help
|
||||
|
||||
- **Documentation**: See `MARKETING_MATERIALS.md` for full guide
|
||||
- **Embed Codes**: See `EMBED_CODES.html` for ready-to-use code
|
||||
- **Issues**: File bugs on GitHub
|
||||
- **Community**: Discord server
|
||||
|
||||
---
|
||||
|
||||
**Next Steps:**
|
||||
1. Build the production installer: `cd shell/aethex-shell && npm run tauri build`
|
||||
2. Test download locally: `npm run dev` → visit `http://localhost:5000/download`
|
||||
3. Deploy to production when ready
|
||||
|
||||
**Built:** 2026-02-12
|
||||
**Version:** MVP Distribution System
|
||||
**Status:** Ready for Testing ✅
|
||||
100
EMBED_CODES.html
Normal file
100
EMBED_CODES.html
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
<!--
|
||||
AETHEX OS - QUICK EMBED CODES
|
||||
Copy and paste these anywhere to promote AeThex OS
|
||||
-->
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 1. SIMPLE TEXT LINK -->
|
||||
<!-- ============================================ -->
|
||||
<a href="https://aethex.dev/download">Download AeThex OS</a>
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 2. STYLED BUTTON (Copy-paste ready) -->
|
||||
<!-- ============================================ -->
|
||||
<a href="https://aethex.dev/download"
|
||||
style="display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:white;padding:12px 24px;border-radius:8px;text-decoration:none;font-weight:bold;font-size:16px;transition:transform 0.2s"
|
||||
onmouseover="this.style.transform='translateY(-2px)'"
|
||||
onmouseout="this.style.transform='translateY(0)'">
|
||||
Download AeThex OS
|
||||
</a>
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 3. DIRECT DOWNLOAD BUTTON (No landing page) -->
|
||||
<!-- ============================================ -->
|
||||
<button onclick="window.location.href='https://aethex.dev/api/download/desktop'"
|
||||
style="background:#667eea;color:white;padding:12px 24px;border:none;border-radius:8px;cursor:pointer;font-weight:bold">
|
||||
Install Now
|
||||
</button>
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 4. FULL WIDGET WITH INFO -->
|
||||
<!-- ============================================ -->
|
||||
<div style="max-width:400px;padding:20px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:12px;color:white;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif">
|
||||
<h3 style="margin:0 0 10px 0;font-size:24px">AeThex OS</h3>
|
||||
<p style="margin:0 0 15px 0;opacity:0.9;font-size:14px">Complete learning ecosystem for developers</p>
|
||||
<a href="https://aethex.dev/download"
|
||||
style="display:block;width:100%;background:white;color:#667eea;padding:12px;border-radius:8px;text-decoration:none;font-weight:bold;text-align:center">
|
||||
Download for Windows
|
||||
</a>
|
||||
<p style="margin:10px 0 0 0;font-size:12px;opacity:0.7;text-align:center">v0.1.0 • 2.5 MB • Free</p>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 5. BADGE/SHIELD (Markdown) -->
|
||||
<!-- ============================================ -->
|
||||
[](https://aethex.dev/download)
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 6. FORUM SIGNATURE (BBCode) -->
|
||||
<!-- ============================================ -->
|
||||
[url=https://aethex.dev/download][b]Download AeThex OS[/b] - Complete Learning Ecosystem[/url]
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 7. EMAIL SIGNATURE (HTML) -->
|
||||
<!-- ============================================ -->
|
||||
<p style="margin-top:20px;padding-top:20px;border-top:2px solid #667eea">
|
||||
<strong>Try AeThex OS</strong><br>
|
||||
<a href="https://aethex.dev/download" style="color:#667eea">Download the complete learning ecosystem</a>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 8. DISCORD EMBED (JSON) -->
|
||||
<!-- ============================================ -->
|
||||
{
|
||||
"embeds": [{
|
||||
"title": "🚀 Download AeThex OS",
|
||||
"description": "Complete learning ecosystem for building compliant software",
|
||||
"url": "https://aethex.dev/download",
|
||||
"color": 6855914,
|
||||
"fields": [
|
||||
{"name": "✨ Features", "value": "Full IDE • Terminal • Compiler • Compliance Tools"},
|
||||
{"name": "💾 Size", "value": "2.5 MB", "inline": true},
|
||||
{"name": "🆓 Price", "value": "Free", "inline": true},
|
||||
{"name": "💻 Platform", "value": "Windows 10+", "inline": true}
|
||||
],
|
||||
"footer": {"text": "AeThex OS v0.1.0"}
|
||||
}]
|
||||
}
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 9. AUTO-INSTALL IFRAME (For landing pages) -->
|
||||
<!-- ============================================ -->
|
||||
<iframe src="https://aethex.dev/launcher.html?autoinstall=true"
|
||||
width="500" height="400" frameborder="0"
|
||||
style="border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,0.2)">
|
||||
</iframe>
|
||||
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- 10. QR CODE LINK (For print materials) -->
|
||||
<!-- ============================================ -->
|
||||
Generate QR code for: https://aethex.dev/download
|
||||
Use: https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=https://aethex.dev/download
|
||||
404
MARKETING_MATERIALS.md
Normal file
404
MARKETING_MATERIALS.md
Normal file
|
|
@ -0,0 +1,404 @@
|
|||
# AeThex OS - Marketing Materials & Distribution Guide
|
||||
|
||||
## 🚀 Installation URLs
|
||||
|
||||
### Main Installation Page
|
||||
```
|
||||
https://aethex.dev/download
|
||||
```
|
||||
|
||||
### Quick Install Launcher (Auto-downloads)
|
||||
```
|
||||
https://aethex.dev/launcher.html?autoinstall=true
|
||||
```
|
||||
|
||||
### Direct Download Links
|
||||
```
|
||||
NSIS Installer: https://aethex.dev/api/download/desktop
|
||||
MSI Installer: https://aethex.dev/api/download/desktop/msi
|
||||
Version Check: https://aethex.dev/api/download/version
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📱 Social Media Posts
|
||||
|
||||
### Twitter/X Post
|
||||
```
|
||||
🚀 AeThex OS is now available for download!
|
||||
|
||||
✨ Full IDE with Monaco Editor
|
||||
🖥️ Native Terminal
|
||||
⚡ AeThex Language Compiler
|
||||
🛡️ Built-in Compliance Tools
|
||||
|
||||
Download now: https://aethex.dev/download
|
||||
|
||||
#AeThexOS #Developer #IDE #Programming
|
||||
```
|
||||
|
||||
### LinkedIn Post
|
||||
```
|
||||
Excited to announce AeThex OS Desktop is now available! 🎉
|
||||
|
||||
AeThex OS brings a complete learning ecosystem to your desktop:
|
||||
• Full-featured IDE with Monaco editor
|
||||
• Integrated terminal for command execution
|
||||
• AeThex Language - write once, compile to JS, Lua, Verse, C#
|
||||
• Built-in COPPA, GDPR, CCPA compliance tools
|
||||
• 40+ built-in apps for learning and development
|
||||
|
||||
Download for Windows: https://aethex.dev/download
|
||||
|
||||
Perfect for students, educators, and developers building compliant software.
|
||||
|
||||
#SoftwareDevelopment #EdTech #Programming #OpenSource
|
||||
```
|
||||
|
||||
### Discord Announcement
|
||||
```
|
||||
@everyone 🎉 **AeThex OS Desktop is HERE!**
|
||||
|
||||
Download the complete learning ecosystem on your desktop:
|
||||
|
||||
🔹 **Full IDE** - Monaco editor with IntelliSense
|
||||
🔹 **Terminal** - Full command execution
|
||||
🔹 **AeThex Compiler** - Write once, deploy everywhere
|
||||
🔹 **Compliance Tools** - COPPA, GDPR, CCPA built-in
|
||||
🔹 **Virtual Desktops** - Organize your workspace
|
||||
|
||||
**Download:** https://aethex.dev/download
|
||||
|
||||
**System Requirements:**
|
||||
✅ Windows 10 or later
|
||||
✅ 4 GB RAM minimum
|
||||
✅ 500 MB storage
|
||||
|
||||
Questions? Ask in #support!
|
||||
```
|
||||
|
||||
### Reddit Post (r/programming, r/gamedev)
|
||||
```
|
||||
Title: [Release] AeThex OS - Complete Learning Ecosystem Desktop App
|
||||
|
||||
I've just released AeThex OS Desktop, a complete learning ecosystem for building compliant software.
|
||||
|
||||
**Key Features:**
|
||||
- Full IDE with Monaco editor (same as VS Code)
|
||||
- Integrated terminal
|
||||
- AeThex Language compiler (transpiles to JS, Lua, Verse, C#)
|
||||
- Built-in compliance tools (COPPA, GDPR, CCPA)
|
||||
- Virtual desktop management
|
||||
- 40+ learning modules
|
||||
|
||||
**Tech Stack:**
|
||||
- Tauri (Rust + React) - only 2.5 MB installer!
|
||||
- React 19 with TypeScript
|
||||
- Monaco Editor
|
||||
- TailwindCSS v4
|
||||
|
||||
**Download:** https://aethex.dev/download
|
||||
|
||||
Free and open for feedback. Built this to help students learn compliant development practices while building real projects.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Website Embed Codes
|
||||
|
||||
### HTML Button (Copy-Paste Anywhere)
|
||||
```html
|
||||
<a href="https://aethex.dev/download"
|
||||
style="display: inline-flex; align-items: center; gap: 8px;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white; padding: 12px 24px; border-radius: 8px;
|
||||
text-decoration: none; font-weight: bold; font-size: 16px;
|
||||
transition: transform 0.2s;"
|
||||
onmouseover="this.style.transform='translateY(-2px)'"
|
||||
onmouseout="this.style.transform='translateY(0)'">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
|
||||
<polyline points="7 10 12 15 17 10"></polyline>
|
||||
<line x1="12" y1="15" x2="12" y2="3"></line>
|
||||
</svg>
|
||||
Download AeThex OS
|
||||
</a>
|
||||
```
|
||||
|
||||
### Auto-Download Button (Starts download on click)
|
||||
```html
|
||||
<button onclick="window.location.href='https://aethex.dev/api/download/desktop'"
|
||||
style="display: inline-flex; align-items: center; gap: 8px;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white; padding: 12px 24px; border-radius: 8px;
|
||||
border: none; cursor: pointer; font-weight: bold; font-size: 16px;">
|
||||
Install AeThex OS
|
||||
</button>
|
||||
```
|
||||
|
||||
### JavaScript Widget (Embeddable download widget)
|
||||
```html
|
||||
<div id="aethex-download-widget"></div>
|
||||
<script>
|
||||
(function() {
|
||||
const widget = document.getElementById('aethex-download-widget');
|
||||
widget.innerHTML = `
|
||||
<div style="max-width: 400px; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
border-radius: 12px; color: white; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;">
|
||||
<h3 style="margin: 0 0 10px 0; font-size: 24px;">AeThex OS</h3>
|
||||
<p style="margin: 0 0 15px 0; opacity: 0.9; font-size: 14px;">
|
||||
The complete learning ecosystem
|
||||
</p>
|
||||
<button onclick="window.location.href='https://aethex.dev/download'"
|
||||
style="width: 100%; background: white; color: #667eea; border: none;
|
||||
padding: 12px; border-radius: 8px; cursor: pointer; font-weight: bold; font-size: 16px;">
|
||||
Download for Windows
|
||||
</button>
|
||||
<p style="margin: 10px 0 0 0; font-size: 12px; opacity: 0.7; text-align: center;">
|
||||
Version 0.1.0 • 2.5 MB • Free
|
||||
</p>
|
||||
</div>
|
||||
`;
|
||||
})();
|
||||
</script>
|
||||
```
|
||||
|
||||
### React Component
|
||||
```tsx
|
||||
export function AeThexDownloadButton() {
|
||||
return (
|
||||
<a
|
||||
href="https://aethex.dev/download"
|
||||
className="inline-flex items-center gap-2 bg-gradient-to-r from-purple-600 to-pink-600
|
||||
hover:from-purple-700 hover:to-pink-700 text-white font-bold py-3 px-6
|
||||
rounded-lg transition-all transform hover:scale-105"
|
||||
>
|
||||
<svg className="w-5 h-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
|
||||
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
|
||||
<polyline points="7 10 12 15 17 10"></polyline>
|
||||
<line x1="12" y1="15" x2="12" y2="3"></line>
|
||||
</svg>
|
||||
Download AeThex OS
|
||||
</a>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📧 Email Templates
|
||||
|
||||
### Launch Announcement Email
|
||||
```
|
||||
Subject: AeThex OS Desktop is Now Available 🚀
|
||||
|
||||
Hi [Name],
|
||||
|
||||
We're excited to announce that AeThex OS Desktop is now available for download!
|
||||
|
||||
What's Inside:
|
||||
✓ Full IDE with Monaco editor
|
||||
✓ Integrated terminal
|
||||
✓ AeThex Language compiler
|
||||
✓ Built-in compliance tools
|
||||
✓ 40+ learning modules
|
||||
|
||||
Download Now: https://aethex.dev/download
|
||||
|
||||
System Requirements:
|
||||
• Windows 10 or later
|
||||
• 4 GB RAM (8 GB recommended)
|
||||
• 500 MB available space
|
||||
|
||||
Questions? Reply to this email or join our Discord community.
|
||||
|
||||
Happy building!
|
||||
The AeThex Team
|
||||
|
||||
---
|
||||
AeThex OS - Build. Learn. Comply.
|
||||
https://aethex.dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Banner Images & Graphics
|
||||
|
||||
### Banner Sizes (Create these with your design tool)
|
||||
|
||||
**Desktop Banner (1200x630px) - for social media**
|
||||
- Background: Purple gradient
|
||||
- Logo/Icon: Large center
|
||||
- Text: "AeThex OS - Now Available"
|
||||
- Button: "Download for Windows"
|
||||
|
||||
**Twitter Header (1500x500px)**
|
||||
- Text: "The Complete Learning Ecosystem"
|
||||
- Features listed with icons
|
||||
- Download URL: aethex.dev/download
|
||||
|
||||
**Discord Server Icon (512x512px)**
|
||||
- AeThex logo
|
||||
- Badge: "v0.1.0"
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Landing Page Quick Links
|
||||
|
||||
Add these buttons to your homepage:
|
||||
|
||||
```html
|
||||
<!-- Hero Section CTA -->
|
||||
<div class="text-center">
|
||||
<a href="/download" class="big-cta-button">
|
||||
Download Desktop App
|
||||
</a>
|
||||
<p class="text-sm mt-2">Windows 10+ • Free • 2.5 MB</p>
|
||||
</div>
|
||||
|
||||
<!-- Navigation Bar -->
|
||||
<nav>
|
||||
<a href="/download">Download</a>
|
||||
</nav>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="download-section">
|
||||
<h3>Get Started</h3>
|
||||
<a href="/download">Download AeThex OS</a>
|
||||
<a href="/docs">Documentation</a>
|
||||
</div>
|
||||
</footer>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Analytics & Tracking
|
||||
|
||||
Track downloads with these events:
|
||||
|
||||
```javascript
|
||||
// Download button click
|
||||
gtag('event', 'download_click', {
|
||||
'event_category': 'installer',
|
||||
'event_label': 'desktop_windows'
|
||||
});
|
||||
|
||||
// Download complete
|
||||
gtag('event', 'download_complete', {
|
||||
'event_category': 'installer',
|
||||
'event_label': 'desktop_windows',
|
||||
'value': 1
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎬 YouTube Video Script
|
||||
|
||||
**Title:** "Introducing AeThex OS Desktop - Your Complete Learning Ecosystem"
|
||||
|
||||
**Script:**
|
||||
```
|
||||
[0:00-0:05] Hook
|
||||
"Want a complete development environment that teaches compliance by default?"
|
||||
|
||||
[0:05-0:15] Problem
|
||||
"Learning to build compliant software is hard. Tools are scattered. Documentation is confusing."
|
||||
|
||||
[0:15-0:30] Solution
|
||||
"That's why we built AeThex OS Desktop - everything you need in one lightweight app."
|
||||
|
||||
[0:30-0:45] Demo (show installer)
|
||||
"Just download the 2.5 MB installer and you're ready to go."
|
||||
|
||||
[0:45-1:00] Features
|
||||
"Full IDE with Monaco editor, integrated terminal, and the AeThex compiler."
|
||||
|
||||
[1:00-1:15] Unique Value
|
||||
"Write once in AeThex Language, compile to JavaScript, Lua, Verse, or C#."
|
||||
|
||||
[1:15-1:30] Compliance
|
||||
"Built-in COPPA, GDPR, and CCPA compliance checking. No more guesswork."
|
||||
|
||||
[1:30-1:45] Call to Action
|
||||
"Download free at aethex.dev/download. Link in description."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔔 Press Release
|
||||
|
||||
```
|
||||
FOR IMMEDIATE RELEASE
|
||||
|
||||
AeThex Launches Desktop Learning Ecosystem for Compliant Software Development
|
||||
|
||||
[CITY, DATE] - AeThex today announced the release of AeThex OS Desktop,
|
||||
a comprehensive learning ecosystem designed to teach developers compliant
|
||||
software practices.
|
||||
|
||||
Key Features:
|
||||
• Full-featured IDE with Monaco editor
|
||||
• Integrated development terminal
|
||||
• AeThex Language - compile to multiple targets
|
||||
• Built-in compliance tools for COPPA, GDPR, CCPA
|
||||
• 40+ interactive learning modules
|
||||
|
||||
"We built AeThex OS to solve a real problem," said [Your Name], Founder.
|
||||
"Learning to build compliant software shouldn't require juggling a dozen
|
||||
tools. We've packaged everything into one lightweight desktop app."
|
||||
|
||||
AeThex OS Desktop is available now as a free download for Windows 10 and
|
||||
later at aethex.dev/download.
|
||||
|
||||
About AeThex:
|
||||
AeThex builds tools that make compliant software development accessible
|
||||
to everyone. Learn more at aethex.dev.
|
||||
|
||||
Contact:
|
||||
[Your Email]
|
||||
[Website]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎁 Launch Week Strategy
|
||||
|
||||
**Day 1: Soft Launch**
|
||||
- Post on your social media
|
||||
- Email existing users
|
||||
- Share in relevant Discord servers
|
||||
|
||||
**Day 2-3: Community Outreach**
|
||||
- Post on Reddit (r/programming, r/gamedev, r/webdev)
|
||||
- Share on Hacker News
|
||||
- Post in IndieHackers
|
||||
|
||||
**Day 4-5: Content Marketing**
|
||||
- Publish blog post: "Why We Built AeThex OS"
|
||||
- Create video demo
|
||||
- Share case studies
|
||||
|
||||
**Day 6-7: Partnerships**
|
||||
- Reach out to education platforms
|
||||
- Contact developer communities
|
||||
- Partner with coding bootcamps
|
||||
|
||||
---
|
||||
|
||||
## 📈 Success Metrics
|
||||
|
||||
Track these KPIs:
|
||||
- Download page visits
|
||||
- Download button clicks
|
||||
- Completed downloads
|
||||
- Active installations (via update checks)
|
||||
- User retention (7-day, 30-day)
|
||||
|
||||
---
|
||||
|
||||
**Generated:** 2026-02-12
|
||||
**Version:** MVP Launch Package
|
||||
**Contact:** support@aethex.dev
|
||||
```
|
||||
|
|
@ -20,6 +20,7 @@ import Admin from "@/pages/admin";
|
|||
import Pitch from "@/pages/pitch";
|
||||
import Builds from "@/pages/builds";
|
||||
import Downloads from "@/pages/downloads";
|
||||
import Download from "@/pages/download";
|
||||
import AdminArchitects from "@/pages/admin-architects";
|
||||
import AdminProjects from "@/pages/admin-projects";
|
||||
import AdminCredentials from "@/pages/admin-credentials";
|
||||
|
|
@ -108,6 +109,7 @@ function AppRoutes() {
|
|||
<Route path="/pitch" component={Pitch} />
|
||||
<Route path="/builds" component={Builds} />
|
||||
<Route path="/downloads" component={Downloads} />
|
||||
<Route path="/download" component={Download} />
|
||||
<Route path="/os" component={AeThexOS} />
|
||||
<Route path="/os/link">{() => <ProtectedRoute><OsLink /></ProtectedRoute>}</Route>
|
||||
<Route path="/network" component={Network} />
|
||||
|
|
|
|||
248
client/src/pages/download.tsx
Normal file
248
client/src/pages/download.tsx
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
import React, { useState } from 'react';
|
||||
import { Download, CheckCircle, Loader2, Monitor, Zap, Shield, Code } from 'lucide-react';
|
||||
|
||||
export default function DownloadPage() {
|
||||
const [downloading, setDownloading] = useState(false);
|
||||
const [progress, setProgress] = useState(0);
|
||||
|
||||
const handleDownload = async () => {
|
||||
setDownloading(true);
|
||||
setProgress(0);
|
||||
|
||||
try {
|
||||
// Fetch the installer
|
||||
const response = await fetch('/api/download/desktop');
|
||||
const contentLength = response.headers.get('content-length');
|
||||
const total = parseInt(contentLength || '0', 10);
|
||||
|
||||
const reader = response.body?.getReader();
|
||||
const chunks: Uint8Array[] = [];
|
||||
let receivedLength = 0;
|
||||
|
||||
if (reader) {
|
||||
while (true) {
|
||||
const { done, value } = await reader.read();
|
||||
if (done) break;
|
||||
|
||||
chunks.push(value);
|
||||
receivedLength += value.length;
|
||||
setProgress(Math.round((receivedLength / total) * 100));
|
||||
}
|
||||
}
|
||||
|
||||
// Combine chunks and create blob
|
||||
const blob = new Blob(chunks);
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
|
||||
// Trigger download
|
||||
const a = document.createElement('a');
|
||||
a.href = url;
|
||||
a.download = 'AeThex-OS-setup.exe';
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
window.URL.revokeObjectURL(url);
|
||||
|
||||
setProgress(100);
|
||||
|
||||
// Show success message
|
||||
setTimeout(() => {
|
||||
setDownloading(false);
|
||||
setProgress(0);
|
||||
}, 2000);
|
||||
} catch (error) {
|
||||
console.error('Download failed:', error);
|
||||
setDownloading(false);
|
||||
setProgress(0);
|
||||
alert('Download failed. Please try again.');
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900 to-black text-white">
|
||||
{/* Hero Section */}
|
||||
<div className="container mx-auto px-4 py-20">
|
||||
<div className="text-center max-w-4xl mx-auto">
|
||||
<h1 className="text-6xl font-bold mb-6 bg-gradient-to-r from-purple-400 via-pink-400 to-blue-400 bg-clip-text text-transparent">
|
||||
Download AeThex OS
|
||||
</h1>
|
||||
<p className="text-xl text-gray-300 mb-12">
|
||||
The complete learning ecosystem. Build, learn, and deploy compliant software.
|
||||
</p>
|
||||
|
||||
{/* Download Button */}
|
||||
<div className="bg-gray-800/50 backdrop-blur-lg rounded-2xl p-8 border border-gray-700 max-w-2xl mx-auto">
|
||||
<div className="flex items-center justify-between mb-6">
|
||||
<div className="text-left">
|
||||
<h3 className="text-2xl font-bold mb-2">AeThex OS Desktop</h3>
|
||||
<p className="text-gray-400">Version 0.1.0 • Windows x64 • 2.5 MB</p>
|
||||
</div>
|
||||
<Monitor className="w-12 h-12 text-purple-400" />
|
||||
</div>
|
||||
|
||||
{!downloading ? (
|
||||
<button
|
||||
onClick={handleDownload}
|
||||
className="w-full bg-gradient-to-r from-purple-600 to-pink-600 hover:from-purple-700 hover:to-pink-700 text-white font-bold py-4 px-8 rounded-xl transition-all transform hover:scale-105 flex items-center justify-center gap-3 text-lg"
|
||||
>
|
||||
<Download className="w-6 h-6" />
|
||||
Download for Windows
|
||||
</button>
|
||||
) : (
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-center gap-3 text-lg font-semibold">
|
||||
{progress < 100 ? (
|
||||
<>
|
||||
<Loader2 className="w-6 h-6 animate-spin" />
|
||||
Downloading... {progress}%
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<CheckCircle className="w-6 h-6 text-green-400" />
|
||||
Download Complete!
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<div className="w-full bg-gray-700 rounded-full h-3 overflow-hidden">
|
||||
<div
|
||||
className="bg-gradient-to-r from-purple-600 to-pink-600 h-full transition-all duration-300"
|
||||
style={{ width: `${progress}%` }}
|
||||
/>
|
||||
</div>
|
||||
{progress === 100 && (
|
||||
<p className="text-sm text-gray-400">
|
||||
Open the downloaded file to install AeThex OS
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="mt-6 text-sm text-gray-400 text-center">
|
||||
Supports Windows 10 and later
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Installation Steps */}
|
||||
<div className="mt-16 grid md:grid-cols-3 gap-6 text-left">
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<div className="w-12 h-12 bg-purple-600/20 rounded-lg flex items-center justify-center mb-4">
|
||||
<span className="text-2xl font-bold text-purple-400">1</span>
|
||||
</div>
|
||||
<h3 className="text-lg font-bold mb-2">Download</h3>
|
||||
<p className="text-gray-400">Click the download button to get the installer</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<div className="w-12 h-12 bg-purple-600/20 rounded-lg flex items-center justify-center mb-4">
|
||||
<span className="text-2xl font-bold text-purple-400">2</span>
|
||||
</div>
|
||||
<h3 className="text-lg font-bold mb-2">Install</h3>
|
||||
<p className="text-gray-400">Run the installer and follow the setup wizard</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<div className="w-12 h-12 bg-purple-600/20 rounded-lg flex items-center justify-center mb-4">
|
||||
<span className="text-2xl font-bold text-purple-400">3</span>
|
||||
</div>
|
||||
<h3 className="text-lg font-bold mb-2">Start Learning</h3>
|
||||
<p className="text-gray-400">Launch AeThex OS and begin your journey</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Features */}
|
||||
<div className="mt-24 max-w-6xl mx-auto">
|
||||
<h2 className="text-4xl font-bold text-center mb-12">What's Inside</h2>
|
||||
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<Code className="w-10 h-10 text-purple-400 mb-4" />
|
||||
<h3 className="text-xl font-bold mb-2">Full IDE</h3>
|
||||
<p className="text-gray-400">Monaco editor with syntax highlighting and IntelliSense</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<Monitor className="w-10 h-10 text-pink-400 mb-4" />
|
||||
<h3 className="text-xl font-bold mb-2">Terminal</h3>
|
||||
<p className="text-gray-400">Full-featured terminal with command execution</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<Zap className="w-10 h-10 text-blue-400 mb-4" />
|
||||
<h3 className="text-xl font-bold mb-2">AeThex Language</h3>
|
||||
<p className="text-gray-400">Write once, compile to JS, Lua, Verse, C#</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<Shield className="w-10 h-10 text-green-400 mb-4" />
|
||||
<h3 className="text-xl font-bold mb-2">Compliance</h3>
|
||||
<p className="text-gray-400">Built-in COPPA, GDPR, CCPA compliance tools</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* System Requirements */}
|
||||
<div className="mt-24 max-w-4xl mx-auto bg-gray-800/30 backdrop-blur-sm rounded-xl p-8 border border-gray-700">
|
||||
<h2 className="text-3xl font-bold mb-6">System Requirements</h2>
|
||||
<div className="grid md:grid-cols-2 gap-8">
|
||||
<div>
|
||||
<h3 className="text-xl font-semibold mb-4 text-purple-400">Minimum</h3>
|
||||
<ul className="space-y-2 text-gray-300">
|
||||
<li>• Windows 10 or later</li>
|
||||
<li>• 4 GB RAM</li>
|
||||
<li>• 500 MB available space</li>
|
||||
<li>• 1280x720 display</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-xl font-semibold mb-4 text-pink-400">Recommended</h3>
|
||||
<ul className="space-y-2 text-gray-300">
|
||||
<li>• Windows 11</li>
|
||||
<li>• 8 GB RAM or more</li>
|
||||
<li>• 2 GB available space</li>
|
||||
<li>• 1920x1080 display</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* FAQ */}
|
||||
<div className="mt-24 max-w-4xl mx-auto">
|
||||
<h2 className="text-4xl font-bold text-center mb-12">Frequently Asked Questions</h2>
|
||||
<div className="space-y-6">
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<h3 className="text-xl font-bold mb-2">Is AeThex OS free?</h3>
|
||||
<p className="text-gray-400">Yes! AeThex OS is completely free to download and use.</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<h3 className="text-xl font-bold mb-2">Does it require an internet connection?</h3>
|
||||
<p className="text-gray-400">You can use many features offline, but some features like cloud sync and updates require internet.</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<h3 className="text-xl font-bold mb-2">How do I get updates?</h3>
|
||||
<p className="text-gray-400">AeThex OS automatically checks for updates and will notify you when a new version is available.</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-gray-800/30 backdrop-blur-sm rounded-xl p-6 border border-gray-700">
|
||||
<h3 className="text-xl font-bold mb-2">Is my data safe?</h3>
|
||||
<p className="text-gray-400">Yes. All your data is stored locally on your device. Optional cloud sync is encrypted end-to-end.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<div className="mt-24 text-center">
|
||||
<h2 className="text-4xl font-bold mb-6">Ready to start building?</h2>
|
||||
<button
|
||||
onClick={handleDownload}
|
||||
className="bg-gradient-to-r from-purple-600 to-pink-600 hover:from-purple-700 hover:to-pink-700 text-white font-bold py-4 px-12 rounded-xl transition-all transform hover:scale-105 inline-flex items-center gap-3 text-lg"
|
||||
>
|
||||
<Download className="w-6 h-6" />
|
||||
Download Now
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
127
server/download-routes.ts
Normal file
127
server/download-routes.ts
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
import express from 'express';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// Desktop app download endpoint
|
||||
router.get('/desktop', async (req, res) => {
|
||||
try {
|
||||
// Path to the installer
|
||||
const installerPath = path.join(
|
||||
process.cwd(),
|
||||
'shell',
|
||||
'aethex-shell',
|
||||
'src-tauri',
|
||||
'target',
|
||||
'release',
|
||||
'bundle',
|
||||
'nsis',
|
||||
'AeThex-OS_0.1.0_x64-setup.exe'
|
||||
);
|
||||
|
||||
// Check if file exists
|
||||
if (!fs.existsSync(installerPath)) {
|
||||
return res.status(404).json({
|
||||
error: 'Installer not found',
|
||||
message: 'The desktop installer has not been built yet. Please run: npm run build:tauri'
|
||||
});
|
||||
}
|
||||
|
||||
// Get file stats
|
||||
const stats = fs.statSync(installerPath);
|
||||
|
||||
// Set headers
|
||||
res.setHeader('Content-Type', 'application/octet-stream');
|
||||
res.setHeader('Content-Disposition', 'attachment; filename="AeThex-OS-setup.exe"');
|
||||
res.setHeader('Content-Length', stats.size);
|
||||
|
||||
// Stream the file
|
||||
const fileStream = fs.createReadStream(installerPath);
|
||||
fileStream.pipe(res);
|
||||
|
||||
fileStream.on('error', (error) => {
|
||||
console.error('Error streaming installer:', error);
|
||||
if (!res.headersSent) {
|
||||
res.status(500).json({ error: 'Failed to download installer' });
|
||||
}
|
||||
});
|
||||
|
||||
// Log download
|
||||
console.log(`[Download] Desktop installer downloaded by ${req.ip}`);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error serving installer:', error);
|
||||
res.status(500).json({ error: 'Internal server error' });
|
||||
}
|
||||
});
|
||||
|
||||
// Get latest version info (for auto-update checks)
|
||||
router.get('/version', async (req, res) => {
|
||||
try {
|
||||
// Read version from package.json
|
||||
const packagePath = path.join(
|
||||
process.cwd(),
|
||||
'shell',
|
||||
'aethex-shell',
|
||||
'package.json'
|
||||
);
|
||||
|
||||
const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
|
||||
|
||||
res.json({
|
||||
version: packageJson.version,
|
||||
releaseDate: new Date().toISOString(),
|
||||
downloadUrl: `${req.protocol}://${req.get('host')}/api/download/desktop`,
|
||||
releaseNotes: [
|
||||
'Initial MVP release',
|
||||
'Full IDE with Monaco editor',
|
||||
'Terminal integration',
|
||||
'AeThex Language compiler',
|
||||
'Compliance tools built-in'
|
||||
],
|
||||
minimumVersion: '0.1.0'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error fetching version info:', error);
|
||||
res.status(500).json({ error: 'Failed to fetch version info' });
|
||||
}
|
||||
});
|
||||
|
||||
// MSI installer download
|
||||
router.get('/desktop/msi', async (req, res) => {
|
||||
try {
|
||||
const installerPath = path.join(
|
||||
process.cwd(),
|
||||
'shell',
|
||||
'aethex-shell',
|
||||
'src-tauri',
|
||||
'target',
|
||||
'release',
|
||||
'bundle',
|
||||
'msi',
|
||||
'AeThex-OS_0.1.0_x64_en-US.msi'
|
||||
);
|
||||
|
||||
if (!fs.existsSync(installerPath)) {
|
||||
return res.status(404).json({ error: 'MSI installer not found' });
|
||||
}
|
||||
|
||||
const stats = fs.statSync(installerPath);
|
||||
|
||||
res.setHeader('Content-Type', 'application/octet-stream');
|
||||
res.setHeader('Content-Disposition', 'attachment; filename="AeThex-OS-setup.msi"');
|
||||
res.setHeader('Content-Length', stats.size);
|
||||
|
||||
const fileStream = fs.createReadStream(installerPath);
|
||||
fileStream.pipe(res);
|
||||
|
||||
console.log(`[Download] MSI installer downloaded by ${req.ip}`);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error serving MSI installer:', error);
|
||||
res.status(500).json({ error: 'Internal server error' });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
|
@ -12,6 +12,7 @@ import { createServer } from "http";
|
|||
import { setupWebSocket, websocket } from "./websocket.js";
|
||||
import { attachOrgContext, requireOrgMember } from "./org-middleware.js";
|
||||
import { getCorsOptions } from "./cors-config.js";
|
||||
import downloadRoutes from "./download-routes.js";
|
||||
|
||||
const app = express();
|
||||
const httpServer = createServer(app);
|
||||
|
|
@ -131,6 +132,9 @@ app.use((req, res, next) => {
|
|||
|
||||
|
||||
(async () => {
|
||||
// Register download routes
|
||||
app.use('/api/download', downloadRoutes);
|
||||
|
||||
// Register routes (org middleware applied selectively within routes.ts)
|
||||
await registerRoutes(httpServer, app);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@
|
|||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --open false",
|
||||
"build": "tsc && vite build",
|
||||
"build": "vite build",
|
||||
"build:check": "tsc && vite build",
|
||||
"preview": "vite preview",
|
||||
"tauri": "tauri"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -45,7 +45,18 @@
|
|||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
]
|
||||
],
|
||||
"publisher": "AeThex",
|
||||
"shortDescription": "The complete learning ecosystem",
|
||||
"longDescription": "Build, learn, and deploy compliant software with AeThex OS",
|
||||
"updater": {
|
||||
"active": true,
|
||||
"endpoints": [
|
||||
"https://aethex.dev/api/download/version"
|
||||
],
|
||||
"dialog": true,
|
||||
"pubkey": ""
|
||||
}
|
||||
},
|
||||
"plugins": {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
import React from 'react'
|
||||
import ReactDOM from 'react-dom/client'
|
||||
import { App } from './App'
|
||||
import './App.css'
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>
|
||||
)
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
import { createRoot } from "react-dom/client";
|
||||
import { App } from "./App";
|
||||
import "@/index.css";
|
||||
import React from 'react'
|
||||
import ReactDOM from 'react-dom/client'
|
||||
import { App } from './App'
|
||||
import './App.css'
|
||||
|
||||
createRoot(document.getElementById("root")!).render(<App />);
|
||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue